本文中使用Spring boot 2.0.4 版本
一、配置Http 與 Https 同時(shí)啟用
第一步修改application.yml 文件
port:443
ssl:
key-store:
classpath:viviendg.com.jks
key-password: ******
key-store-password: ******
http:
port: 80
第二步增加配置Bean 同時(shí)啟用http與https
//80 與443端口同時(shí)啟用
@Value("${http.port}")
private Integer port;
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
// 添加http
tomcat.addAdditionalTomcatConnectors(createStandardConnector());
return tomcat;
}
// 配置http
private Connector createStandardConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setPort(port);
return connector;
}
二 HTTP 跳轉(zhuǎn) HTTPS
除了正常在application.yml中配置ssl相關(guān)信息還需要增加Bean配置。另外需要注意以下Bean配置只適用于spring boot 2.0 及以上版本。1.5版本請(qǐng)參考鏈接
/**
* 訪問80端口跳轉(zhuǎn)433
* */
@Bean
public Connectorconnector(){
Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(80);
connector.setSecure(false);
connector.setRedirectPort(443);
return connector;
}
@Bean
public TomcatServletWebServerFactorytomcatServletWebServerFactory(Connector connector){
TomcatServletWebServerFactory tomcat=new TomcatServletWebServerFactory(){
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint=new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection=new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(connector);
return tomcat;
}
以上兩種方式個(gè)人更傾向使用第二種即http跳轉(zhuǎn)https邑跪。