httphttps_2">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文件的密码。
httphttps_17">2、Springboot同时支持http及https
将生成的 jks 文件放到项目的 resource 目录下,开始配置 application.yml 文件。
server:port: 8888custom:# http 端口httpPort: 9999ssl:key-store: classpath:keystore.jkskey-password: 123456key-store-type: JKStomcat:uri-encoding: utf-8basedir: 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;@Beanpublic 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 文件复制到此目录下一份。