閱讀216 返回首頁    go 阿裏雲 go 技術社區[雲棲]


SpringBoot開發案例之集成SSL證書

推薦閱讀:阿裏雲盾證書服務助力博客裝逼成功

ssl2

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的。

ssl1

HTTPS簡介

HTTPS其實是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密信息的模塊。服務端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸的數據都是加密後的數據。具體是如何進行加密,解密,驗證的,且看下圖。

3106433219_1_

接下來,我們開始在spring boot中使用ssl設置。

生成證書

使用SSL之前需要先生成一個證書,這個證書可以是自簽名的(瀏覽器並不信任),也可以從SSL證書授權中心獲取。下麵為了演示方便,使用自授權證書。

每一個jdk或者jre中都有一個工具叫keytool,它是一個證書管理工具,可以用來生成自簽名的證書。打開cmd,敲入命令:

keytool -genkey -alias tomcat  -storetype PKCS12 -keyalg RSA -keysize 2048  -keystore keystore.p12 -validity 3650

如圖所示操作:

2039510971

輸入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瀏覽器顯示情況,由於是自簽名,是不被瀏覽器信任的,但是可以看到頒發信息就是我們剛才錄入的。

2.png

當然,tomcat做為一個後端服務,一般都是通過Nginx代理的方式去訪問的,不會直接暴露給用戶。

正常生產環境也很少這麼去做,大家也就玩玩圖個樂就ok了。

推薦閱讀:阿裏雲盾證書服務助力博客裝逼成功

作者: 小柒

出處: https://blog.52itstyle.com

分享是快樂的,也見證了個人成長曆程,文章大多都是工作經驗總結以及平時學習積累,基於自身認知不足之處在所難免,也請大家指正,共同進步。

本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁麵明顯位置給出, 如有問題, 可郵件(345849402@qq.com)谘詢。

最後更新:2017-08-17 09:32:14

  上一篇:go  The Differences between AI, Machine Learning, and Deep Learning
  下一篇:go  MySQL鎖係列(八)之 死鎖