在实际项目开发过程中,大部分时候我们都是基于http访问去做的,但是一些特殊场景必须使访问协议同时支持http和https协议,这时候我们的项目就需要配置ssl协议证书,同时自定义添加web容器支持。具体写法请看如下信息:
配置的前提:
- springboot版本2.1.5
- 生成https对应的ssl证书文件
1.在项目配置文件application.properties添加信息:
###配置SSL同时支持http和https访问实现
###https:10093
server.port=10093
server.ssl.key-store=classpath:ssl/server.jks
server.ssl.key-store-password=665666
server.ssl.key-store-type=JKS
###https:10094
http.port=10094
项目结构如下图:
2.添加自定义web容器支持
/**
* SpringBoot配置SSL同时支持http和https访问实现
*/
@Configuration
public class TomcatConfig {
@Value("${http.port}")
private int httpPort;
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
// 添加http
tomcat.addAdditionalTomcatConnectors(createStandardConnector());
return tomcat;
}
private Connector createStandardConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setPort(httpPort);
return connector;
}
}
3.最终测试验证
需要注意的是:
https可以直接访问http链接,反过来则http无法访问https。