SSL(Secure Sockets Layer 安全套接層)是為網絡通信提供安全及數據完整性的一種安全協議,SSL在網絡傳輸層對網絡連接進行加密,SSL協議位於TCP/IP協議與各種應用層協議之間,為數據通信提供安全支持。SSL協議分為兩層,SSL記錄協議建立在TCP之上,為高層協議提供數據封裝、壓縮、加密等基本功能支持。SSL握手協議建立在SSL記錄協議之上,用戶實際數據傳輸開始前進行身份驗證、協商加密算法、交換加密秘鑰。
生成證書,可以使自簽名或者從SSL證書授權中心獲得的
JDK中keytool是一個證書管理工具,可以生成自簽名證書。本人這里用的系統是deepin,然后生成命令如下(找不到keytoo命令的先去配置java環境)我指定的名字叫tomcat.keystore 別名叫tomcat,密碼自己設置,我這里用的tomcat,最后那個直接按得回車。
keytool -genkey -alias tomcat -keyalg RSA -keystore d:/test/tomcat.keystore

2.SpringBoot配置SSL
把tomcat.keystore拷貝到SpringBoot工程的 src/resources目錄下。配置application.properties
### https configuration server.port=7443 server.ssl.key-store=d:/test/tomcat.keystore server.ssl.key-alias=tomcat server.ssl.enabled=true server.ssl.key-store-password=123456 server.ssl.key-store-type=JKS
此刻啟動項目,跳轉到 https://localhost:8443 。在運行主類里面,加入如下代碼
package com.wx.weixin; import org.apache.catalina.connector.Connector; import org.apache.tomcat.util.descriptor.web.SecurityCollection; import org.apache.tomcat.util.descriptor.web.SecurityConstraint; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.context.annotation.Bean; import org.apache.catalina.Context; @SpringBootApplication public class WeixinApplication { public static void main(String[] args) { SpringApplication.run(WeixinApplication.class, args); } @Bean public Connector connector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(8082); connector.setSecure(false); connector.setRedirectPort(7443); return connector; } @Bean public TomcatServletWebServerFactory tomcatServletWebServerFactory(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; } }
