SpringBoot開發案例之集成SSL證書
推薦閱讀:阿裏雲盾證書服務助力博客裝逼成功
SSL簡介
SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網絡通信提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡連接進行加密。
SSL協議位於TCP/IP協議與各種應用層協議之間,為數據通訊提供安全支持。SSL協議可分為兩層: SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供數據封裝、壓縮、加密等基本功能的支持。 SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。
而基於B/S的web應用中,是通過https來實現SSL的。
HTTPS簡介
HTTPS其實是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密信息的模塊。服務端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸的數據都是加密後的數據。具體是如何進行加密,解密,驗證的,且看下圖。
接下來,我們開始在spring boot中使用ssl設置。
生成證書
使用SSL之前需要先生成一個證書,這個證書可以是自簽名的(瀏覽器並不信任),也可以從SSL證書授權中心獲取。下麵為了演示方便,使用自授權證書。
每一個jdk或者jre中都有一個工具叫keytool,它是一個證書管理工具,可以用來生成自簽名的證書。打開cmd,敲入命令:
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
如圖所示操作:
輸入y執行成功以後會在目錄下生成一個PKCS12格式的命名為keystore.p12的證書。
配置HTTPS
在application.yml加入以下配置:
server:
context-path: /springboot
port: 8080
session-timeout: 60
tomcat:
max-threads: 300
uri-encoding: UTF-8
ssl:
key-store: classpath:keystore.p12
key-store-password: 123456
keyStoreType: PKCS12
最後,重啟服務訪問:https://localhost:8080/springboot
以下是360瀏覽器顯示情況,由於是自簽名,是不被瀏覽器信任的,但是可以看到頒發信息就是我們剛才錄入的。
當然,tomcat做為一個後端服務,一般都是通過Nginx代理的方式去訪問的,不會直接暴露給用戶。
正常生產環境也很少這麼去做,大家也就玩玩圖個樂就ok了。
推薦閱讀:阿裏雲盾證書服務助力博客裝逼成功
作者: 小柒
出處: https://blog.52itstyle.com
分享是快樂的,也見證了個人成長曆程,文章大多都是工作經驗總結以及平時學習積累,基於自身認知不足之處在所難免,也請大家指正,共同進步。
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁麵明顯位置給出, 如有問題, 可郵件(345849402@qq.com)谘詢。
最後更新:2017-08-17 09:32:14