本文參考地址:https://blog.csdn.net/tony1130/article/details/5134318
1.什麼是https?
HTTPS其實是有兩部分組成:HTTP + SSL / TLS,
也就是在HTTP上又加了一層處理加密信息的模塊,並且會進行身份的驗證。
2.SSL(Secure Sockets Layer,安全套接層),這是一種爲網絡通信提供安全及數據完整性的一種安全協議,SSL在網絡傳輸層對網絡連接進行加密。SSL協議可以分爲兩層:SSL記錄協議(SSL Record Protocol),它建立在可靠的傳輸協議如TCP之上,爲高層協議提供數據封裝、壓縮、加密等基本功能支持;SSL握手協議(SSL Handshake Protocol),它建立在SSL記錄協議之上,用於在實際數據傳輸開始之前,通信雙方進行身份認證、協商加密算法、交換加密密鑰等。
3.證書生成
使用SSL需要我們先生成一個證書,這個證書我們可以自己生成,也可以從SSL證書授權中心獲得,自己生成的不被客戶端認可,從授權中心獲得的可以被客戶端認可,提供SSL授權證書的服務商有很多,小夥伴們有興趣可以自行查找,我這裏以自己生成的證書爲例。
4.Keytool 是一個Java 數據證書的管理工具 ,Keytool 將密鑰(key)和證書(certificates)存在一個稱爲keystore的文件中 在keystore裏,包含兩種數據:
密鑰實體(Key entity)——密鑰(secret key)又或者是私鑰和配對公鑰(採用非對稱加密)
可信任的證書實體(trusted certificate entries)——只包含公鑰
ailas(別名)每個keystore都關聯這一個獨一無二的alias,這個alias通常不區分大小寫
5.證書keystore生成 生成方式也很簡單,直接使用java自帶的命令keytool來生成,生成命令如下:
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
解釋:
1.-storetype 指定密鑰倉庫類型
2.-keyalg 生證書的算法名稱,RSA是一種非對稱加密算法
3.-keysize 證書大小(祕鑰長度)
4.-keystore 生成的證書文件的存儲路徑
5.-validity 證書的有效期(天爲單位)6.-alias 產生別名
執行完上面一行命令後,在你的系統的當前用戶目錄下會生成一個keystore.p12文件,將這個文件拷貝到我們項目的根目錄下,然後修改application.properties文件,添加HTTPS支持。在application.properties中添加如下代碼:
server.ssl.key-store=keystore.p12
server.ssl.key-store-password=111111
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias:tomcat
DK中keytool 常用命令:
-genkey 在用戶主目錄中創建一個默認文件".keystore",還會產生一個mykey的別名,mykey中包含用戶的公鑰、私鑰和證書
(在沒有指定生成位置的情況下,keystore會存在用戶系統默認目錄,如:對於window xp系統,會生成在系統的C:/Documents and Settings/UserName/文件名爲“.keystore”)
-alias 產生別名
-keystore 指定密鑰庫的名稱(產生的各類信息將不在.keystore文件中)
-keyalg 指定密鑰的算法 (如 RSA DSA(如果不指定默認採用DSA))
-validity 指定創建的證書有效期多少天
-keysize 指定密鑰長度
-storepass 指定密鑰庫的密碼(獲取keystore信息所需的密碼)
-keypass 指定別名條目的密碼(私鑰的密碼)
-dname 指定證書擁有者信息 例如: "CN=名字與姓氏,OU=組織單位名稱,O=組織名稱,L=城市或區域名稱,ST=州或省份名稱,C=單位的兩字母國家代碼"
-list 顯示密鑰庫中的證書信息 keytool -list -v -keystore 指定keystore -storepass 密碼
-v 顯示密鑰庫中的證書詳細信息
-export 將別名指定的證書導出到文件 keytool -export -alias 需要導出的別名 -keystore 指定keystore -file 指定導出的證書位置及證書名稱 -storepass 密碼
-file 參數指定導出到文件的文件名
-delete 刪除密鑰庫中某條目 keytool -delete -alias 指定需刪除的別 -keystore 指定keystore -storepass 密碼
-printcert 查看導出的證書信息 keytool -printcert -file yushan.crt
-keypasswd 修改密鑰庫中指定條目口令 keytool -keypasswd -alias 需修改的別名 -keypass 舊密碼 -new 新密碼 -storepass keystore密碼 -keystore sage
-storepasswd 修改keystore口令 keytool -storepasswd -keystore e:/yushan.keystore(需修改口令的keystore) -storepass 123456(原始密碼) -new yushan(新密碼)
-import 將已簽名數字證書導入密鑰庫 keytool -import -alias 指定導入條目的別名 -keystore 指定keystore -file 需導入的證書
6、keystore信息的查看:
keytool -list -v -keystore e:/keytool /yushan.keystore -storepass 123456