Tomcat同时支持http及https

发布于:2024-05-08 ⋅ 阅读:(22) ⋅ 点赞:(0)

1、Tomcat同时支持http及https

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="michael.com">
	<SSLHostConfig hostName="tomcat9.com">
		<Certificate certificateKeystoreFile="/root/michael.keystore" certificateKeystorePassword="123456" type="RSA" />
	</SSLHostConfig>
</Connector>

注意:
tomcat8.5之后,在Connector元素中配置相关SSL属性已被废弃,应该使用<SSLHostConfig> and <Certificate>;端口8443可以直接改为https默认的443端口;
certificateKeystoreFile:需要设置自己的keystore文件路径。
certificateKeystorePassword:需要设置自己的keystore文件的密码。

2、Springboot同时支持http及https

将生成的 jks 文件放到项目的 resource 目录下,开始配置 application.yml 文件。

server:
  port: 8888
  custom:
    # http 端口
    httpPort: 9999
  ssl:
    key-store: classpath:keystore.jks
    key-password: 123456
    key-store-type: JKS
  tomcat:
    uri-encoding: utf-8
    basedir: tmp
  #
  servlet:
    context-path: /
import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 配置同时支持 HTTP 与 HTTPS 访问
 */
@Configuration
public class HttpsConfig {
    @Value("${server.custom.httpPort}")
    private Integer httpPort;

    @Bean
    public ServletWebServerFactory serverFactory() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createStandardConnector());
        return tomcat;
    }
    /**
     * 配置http访问
     */
    private Connector createStandardConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(httpPort);
        return connector;
    }
}

application.yml 中配置的 jks 文件的目录为 classpath ,classpath 指的是 target/classes 目录。所以运行时如果报错“找不到 jks 文件”,就手动将 jks 文件复制到此目录下一份。


网站公告

今日签到

点亮在社区的每一天
去签到