SpringBoot配置SSL协议
1.生成证书
使用keytool工具
输入指令 keytool -genkey -alias tomcat
根据提示回答问题操作 其中双字母国家/地区代码是?回答:86
最后确认信息 输入:y 表示yes
在当前目录下生成一个.keystore文件,这个就是证书文件,将这个文件放入到项目的根目录,
2.在application.properties中配置SSL的配置
server.port=8443
server.ssl.key-store=.keystore
server.ssl.key-store-password=123456
server.ssl.key-store-type=JKS
server.ssl.key-alias=tomcat
其中password为自己设置的密码
添加一个index.html到src/main/resources/static中作为测试
启动springboot 输入:https://localhost:8443
显示index页面
3.http重定向https
需要配置TomcatEmbeddedServletContainerFactory,并添加Tomcat的connector来实现
如下所示
@SpringBootApplication
public classCh01Application {
public static voidmain(String[] args) {
SpringApplication.run(Ch01Application.class,args);
}
/**
* 设置http重定向https
*@return
*/
@Bean
publicEmbeddedServletContainerFactoryservletContainerFactory() {
TomcatEmbeddedServletContainerFactory tomcat =newTomcatEmbeddedServletContainerFactory() {
@Override
protected voidpostProcessContext(Context context) {
SecurityConstraint securityConstraint =newSecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection =newSecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(httpConnector());
returntomcat;
}
@Bean
publicConnectorhttpConnector() {
Connector connector =newConnector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(8443);
returnconnector;
}
开启SpringBoot,输入localhost:8080 自动跳转到https://localhost:8443