Java後端HTTP轉HTTPS的實現

HTTPS是HTTP的加密實現,其中引入了公鑰,私鑰,數字證書等概念,以實現數據收發雙方的身份認證和數據加密。

1. 原理

數字證書在用戶公鑰後附加了用戶信息及CA的簽名。公鑰是密鑰對的一部分,另一部分是私鑰。公鑰公之於衆,誰都可以使用。私鑰只有自己知道。由公鑰加密的信息只能由與之相對應的私鑰解密。爲確保只有某個人才能閱讀自己的信件,發送者要用收件人的公鑰加密信件;收件人便可用自己的私鑰解密信件。同樣,爲證實發件人的身份,發送者要用自己的私鑰對信件進行簽名;收件人可使用發送者的公鑰對簽名進行驗證,以確認發送者的身份。

在線交易中可使用數字證書驗證對方身份。用數字證書加密信息,可以確保只有接收者才能解密、閱讀原文,信息在傳遞過程中的保密性和完整性。有了數字證書網上安全才得以實現,電子郵件、在線交易和信用卡購物的安全才能得到保證。

2. 實現

2.1 證書的獲取

一般有兩種方式:
1)使用工具在本地生成自簽名證書。

// 使用JDK工具keytool生成自簽名證書(祕鑰庫)
keytool -genkey -alias tomcat -keyalg RSA -keystore ./server.keystore 

2)向權威機構購買由該機構簽名認證的證書(CA證書)。

區別是,前者無法被各大瀏覽器認可(一般瀏覽器地址欄會顯示“不安全”的字樣),後者則能夠被瀏覽器識別,有的甚至直接能夠解析出連接地址名稱。當然後者也是要money的~~,不過可以在 阿里雲申請免費的個人證書 。參考附錄的第4篇引文

2.2 將證書文件拷貝到SpringBoot工程根目錄下

提示:和pom.xml同級目錄下

2.3 在SpringBoot工程的application.yml文件中添加ssl配置

server:
  port: 10080 ## 後臺服務對外端口
  ssl:
    key-store: server.keystore ##祕鑰庫文件名稱,即上面生成的自簽名證書
    key-store-password: 123456 ## 生成祕鑰庫文件的密碼
    key-store-type: JKS ## 祕鑰庫類型(JKS爲jdk的keytool工具默認生成的祕鑰庫類型)
    key-alias: tomcat ## 祕鑰別名

運行SpringBoot工程,在瀏覽器中使用 https://localhost:10080/xxxx 訪問相應的API接口,實現HTTPS方式訪問API

3. 附錄

  1. java常見證書類型和密鑰庫類型
  2. 網絡安全之證書、密鑰、密鑰庫等名詞解釋
  3. SpringBoot配置HTTPS,並實現HTTP訪問自動轉HTTPS訪問
  4. http免費轉https–使用阿里雲(最新圖解攻略)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章