用keytool製做證書並在tomcat配置https服務(一)html
用keytool製做證書並在tomcat配置https服務(二)瀏覽器
用keytool製做證書並在tomcat配置https服務(四)tomcat
模擬CA實現對服務器證書的認證安全
咱們在前篇的雙向認證上繼續。服務器
CA認證,是這個機構的根證書已經存在於瀏覽器中的【受信任的根證書頒發機構】,瀏覽器信任他,因此不會出現該證書不安全的提示。spa
那麼咱們能夠模擬一個CA,本身對服務器端證書進行簽名,而後把模擬CA的根證書導出來,發送給客戶端,讓客戶端添加到信任機構。3d
1.首先服務端須要生成一個帶證書及主體信息的簽名申請文件csr格式,CA須要用來製做簽名證書。code
keytool -certreq -keyalg RSA -alias tomcat -sigalg SHA256withRSA -keystore D:/ssl/keystore.jks -file D:/ssl/serverreq.csr
2.CA也是有本身的密鑰對和密鑰庫的,建立好。server
keytool -genkey -alias rootca -keypass 123456 -keyalg RSA -keysize 2048 -validity 365 -storetype JKS -keystore D:/ssl/castore.jks -storepass 123456
查看一下htm
keytool -list -v -keystore D:/ssl/castore.jks
3.CA庫有了,而後CA用本身的私鑰對服務端申請簽名文件中的證書進行簽名操做。
keytool -gencert -alias rootca -keystore D:/ssl/castore.jks -infile D:/ssl/serverreq.csr -outfile D:/ssl/signedserver.cer
而後咱們看一下,發佈者是CA
keytool -printcert -file D:/ssl/signedserver.cer
4.咱們將CA庫的證書導出來,這就是上邊這個signedserver.cer的根證書。
keytool -export -alias rootca -keystore D:/ssl/castore.jks -storetype JKS -keypass 123456 -file D:/ssl/rootca.cer
這個證書的做用有兩個:
(1)須要給客戶端,客戶端須要這個根證書對服務端證書進行驗證。
(2)咱們須要把新生成的簽名證書再導入到服務端的庫裏覆蓋原來的未簽名證書。
由於是根證書作的簽名,不把根證書導入就會報【沒法從回覆中創建鏈】這麼個錯誤。
因此先導入根證書,再導入服務端簽名證書。
5.服務端導入根證書
keytool -import -v -alias rootca -file D:/ssl/rootca.cer -keystore D:/ssl/keystore.jks
6.服務端導入簽名證書覆蓋原證書
keytool -import -v -alias tomcat -file D:/ssl/signedserver.cer -keystore D:/ssl/keystore.jks
來看一下服務端的庫
keytool -list -v -keystore D:/ssl/keystore.jks
這裏邊一共有三條信息:
(1)rootca證書信息
(2)剛剛導入的覆蓋的別名叫tomcat的簽名證書
(3)上一篇作的雙向認證導入的客戶端證書。
7.把根證書rootca.cer發送給客戶端,安裝到瀏覽器中的【受信任的根證書頒發機構】。
到這就結束了,而後咱們啓動tomcat看下效果【tomcat的server配置仍是上一篇的配置,沒有變】。
而後咱們點擊上邊的這個小鎖查看下證書信息。
結束。