Spring Boot项目配置ssl证书实现https
项目中使用HTTP不安全,所以需要使用HTTPS,HTTPS的安全基础是SSL。项目中使用HTTPS的具体步骤如下。
-
申请SSL证书
- 腾讯云或者其他云申请SSL证书
- 域名
-
SSL文件放在resources,application.properties配置SSL相关配置项
- jks\p12放在resources
- application.properties配置
1 server.port: 8092 2 server.ssl.key-store= classpath:server.jks 3 server.ssl.key-store-password=你的密码 4 server.ssl.keyStoreType = JKS
-
HTTP转HTTPS
- 项目入口填写转向。通过这段配置,访问
http://localhost:8080
的时候系统会自动重定向到https://localhost:8092
这个地址上。
- 项目入口填写转向。通过这段配置,访问
1 @Bean 2 public EmbeddedServletContainerFactory servletContainer() { 3 TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() { 4 @Override 5 protected void postProcessContext(Context context) { 6 SecurityConstraint constraint = new SecurityConstraint(); 7 constraint.setUserConstraint("CONFIDENTIAL"); 8 SecurityCollection collection = new SecurityCollection(); 9 collection.addPattern("/*"); 10 constraint.addCollection(collection); 11 context.addConstraint(constraint); 12 } 13 }; 14 tomcat.addAdditionalTomcatConnectors(httpConnector()); 15 return tomcat; 16 } 17 18 @Bean 19 public Connector httpConnector() { 20 Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); 21 connector.setScheme("http"); 22 //Connector监听的http的端口号 23 connector.setPort(8080); 24 connector.setSecure(false); 25 //监听到http的端口号后转向到的https的端口号 26 connector.setRedirectPort(8092); 27 return connector; 28 }