前段时间我看过一篇《HTTP遭谷歌抛弃 7月起Chrome将全部标示为不安全》内容大概是:据国外媒体Venturebeat报道,谷歌近日宣布,今年7月起,Chrome浏览器的地址栏将把所有HTTP标示为不安全网站。这是谷歌浏览器针对HTTP网站开战的第三步棋。
其实不只是Google抛弃,国外大部分网站和一些主流浏览器都正在开始将“http”标为不安全网站,那我们开发者该怎么应对呢?今天就为大家分享一下Spring Boot配置HTTPS协议。
Spring Boot中启动HTTPS
首先你必须知道什么是Spring Boot,你对Spring Boot有多少了解。如果都具备这些知识那我们来学习怎么在SpringBoot中开启HTTPS。
需要如下步骤:
1.要有一个证书,买的或者自己生成的
2. 在Spring Boot中启动HTTPS
3. 将HTTP重定向到HTTPS(可选,可以不用代码配置)
获取SSL证书
在这里我们提供两种配置方式:
1. 自己生成SSL证书
2. 购买SSL证书
这里作为演示,采用keytool生成
第一步 :windows+r 打开cmd命令窗
第二步:找到JDK安装目录切换到bin目录下
第三步 :在次目录下输入:
keytool -genkey -aliastomcat -storetype PKCS12 -keyalg RSA -keysize2048
-keystore keystore.p12 -validity3650
输入上面相应信息会生成一个PKCS12格式的叫做keystore.p12的证书。
第四步 :将bin目录下生成的keystore.p12放在Spring Boot项目中的classpath目录下,即src/main/resources目录下
第五步 :在src/main/resources目录下的generator.properties文件中配置HTTPS,配置信息如下:
server.port:8443
server.ssl.key-store:classpath:keystore.p12
server.ssl.key-store-password:mypassword
server.ssl.keyStoreType:PKCS12
注:mypassword是你在cmd中输入的密匙库口令
就这样我们的Spring Boot项目的HTTPS就已经配置好了
将HTTP请求重定向到HTTPS(可选,可以不用代码配置)
让我们的应用支持HTTP是个好想法,但是需要重定向到HTTPS,上面说了不能同时在application.properties中同时配置两个connector,所以要以编程的方式配置HTTP connector,然后重定向到HTTPS connector
这需要在配置类中配置一个TomcatEmbeddedServletContainerFactory bean,代码如下:
@BeanpublicEmbeddedServletContainerFactoryservletContainer() { TomcatEmbeddedServletContainerFactory tomcat =newTomcatEmbeddedServletContainerFactory() {@OverrideprotectedvoidpostProcessContext(Context context) { SecurityConstraint securityConstraint =newSecurityConstraint(); securityConstraint.setUserConstraint("CONFIDENTIAL"); SecurityCollection collection =newSecurityCollection(); collection.addPattern("/*"); securityConstraint.addCollection(collection); context.addConstraint(securityConstraint); } }; tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());returntomcat; }privateConnectorinitiateHttpConnector() { Connector connector =newConnector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(8080); connector.setSecure(false); connector.setRedirectPort(8443);
returnconnector; }
特别提示 :注意导包问题!!!
完成上面的步骤一切就OK啦,启动你的项目访问吧!
如果你还想了解更多技术关注我吧后期我们将会上线芸曦学院APP以及小程序供大家学习交流
领取专属 10元无门槛券
私享最新 技术干货