SSL(Secure Sockets Layer 安全套接層)是爲網絡通訊提供安全及數據完整性的一種安全協議,SSL在網絡傳輸層對網絡鏈接進行加密,SSL協議位於TCP/IP協議與各類應用層協議之間,爲數據通訊提供安全支持。SSL協議分爲兩層,SSL記錄協議創建在TCP之上,爲高層協議提供數據封裝、壓縮、加密等基本功能支持。SSL握手協議創建在SSL記錄協議之上,用戶實際數據傳輸開始前進行身份驗證、協商加密算法、交換加密祕鑰。html
JDK中keytool是一個證書管理工具,能夠生成自簽名證書。
本人這裏用的系統是deepin,而後生成命令以下(找不到keytoo命令的先去配置java環境)
我指定的名字叫tomcat.keystore 別名叫tomcat,密碼本身設置,我這裏用的tomcat,最後那個直接按得回車java
keytool -genkey -alias tomcat -keyalg RSA -keystore /home/gzr/tomcat.keystore
個人命令執行記錄以下,(前提:在本地要建立目錄,不然會失敗)web
結果是生成了對應的文件,以下:算法
1.先創建一個index.html到src/main/resources/static下,待會做爲測試
2.將這個tomcat.keystore拷貝到項目根目錄下(項目根目錄,好比個人idea項目叫spring-cloud-demo01,而後這裏我這個module叫springbootmy,因此咱們的證書應該放在spring-cloud-demo01下)
3.讓後配置application.propertiesspring
#端口號 server.port: 8443 #你生成的證書名字 server.ssl.key-store: E:\work\rave\tomcat.keystore #密鑰庫密碼 server.ssl.key-store-password: duan123 server.ssl.keyStoreType: JKS server.ssl.keyAlias: tomcat
此刻啓動項目,輸入 https://localhost:8443/便可。apache
三、配置自動跳轉tomcat
後面像你平時輸入http://www.baidu.com會自動跳轉到https看下實現吧,在運行主類裏面,加入以下代碼安全
import org.apache.catalina.Context; 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.context.embedded.EmbeddedServletContainerFactory; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; import org.springframework.context.annotation.Bean; @SpringBootApplication public class SpringbootmyApplication { public static void main(String[] args) { SpringApplication.run(SpringbootmyApplication.class, args); } /** * it's for set http url auto change to https */ @Bean public EmbeddedServletContainerFactory servletContainer(){ TomcatEmbeddedServletContainerFactory tomcat=new TomcatEmbeddedServletContainerFactory(){ @Override protected void postProcessContext(Context context) { SecurityConstraint securityConstraint=new SecurityConstraint(); securityConstraint.setUserConstraint("CONFIDENTIAL");//confidential SecurityCollection collection=new SecurityCollection(); collection.addPattern("/*"); securityConstraint.addCollection(collection); context.addConstraint(securityConstraint); } }; tomcat.addAdditionalTomcatConnectors(httpConnector()); return tomcat; } @Bean public Connector httpConnector(){ Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(8080); connector.setSecure(false); connector.setRedirectPort(8443); return connector; } }
此時運行http://localhost:8080,會自動跳轉到https://localhost:8443springboot