Spring Boot2中配置HTTPS
Posted sufferingStriver
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot2中配置HTTPS相关的知识,希望对你有一定的参考价值。
1.生成证书
使用jdk,jre中的keytool.exe生成自签名的证书,需要配置JAVA_HOME和path环境变量,即jdk的环境变量。命令如下:
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
然后可以找到C:/用户/用户名/keystore.p12,复制到springboot项目根目录
2.加入页面和映射
添加一个index.html页面在resources/stastic下面
并添加一个配置类MVCConfig
@Configuration public class MVCConfig implements WebMvcConfigurer { public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("/index"); registry.addViewController("/index").setViewName("/index"); } }
3.springboot 配置SSL
在application.properties中配置
server.port=8080 #SSL https证书配置 server.ssl.key-store=keystore.p12 server.ssl.key-store-password=123456 #行业标准PKCS12 server.ssl.key-store-type=PKCS12 server.ssl.key-alias=tomcat
现在就可以访问https://localhost:8080/index了
4.http转向https
在MVCConfig加入如下代码
/*配置http自动转为https*/ @Bean public ServletWebServerFactory servletWebServerFactory(){ TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(){ @Override protected void postProcessContext(Context context) { SecurityConstraint securityConstraint = new SecurityConstraint(); securityConstraint.setUserConstraint("CONFIDENTIAL");//机密的 SecurityCollection securityCollection = new SecurityCollection(); securityCollection.addPattern("/*"); securityConstraint.addCollection(securityCollection); context.addConstraint(securityConstraint); } }; factory.addAdditionalTomcatConnectors(httpConnector()); return factory; } @Bean public Connector httpConnector(){ Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(8888); connector.setSecure(false); connector.setRedirectPort(8080); return connector; }
记住在springboot2以上,没有了TomcatEmbeddedServletContainerFactory,变成了TomcatServletWebServerFactory
然后访问http://localhost:8888/index会转向https://localhost:8080/index
以上是关于Spring Boot2中配置HTTPS的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot2.0 与 2.0以前版本 跨域配置的区别
spring boot2X集成spring cloud config
Spring Boot2 系列教程理解Spring Boot 配置文件 application.properties