使用Keytool工具生成證書及簽名完整步驟
-
建立證書庫(keystore)及證書(Certificate)
2.生成證書簽名請求(CSR)
3.将已簽名的證書導入證書庫
第一步:使用JDK自帶工具KeyTool 生成自簽發證書!
為伺服器生成證書:
CMD指令如下:
keytool
-genkey
-alias tomcat(别名)
-keypass 123456(别名密碼)
-keyalg RSA(算法)
-keysize 1024(密鑰長度)
-validity 365(有效期,天機關)
-keystore D:/keys/tomcat.keystore(指定生成證書的位置和證書名稱)
-storepass 123456(擷取keystore資訊的密碼)
keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/keys/tomcat.keystore -storepass 123456
解釋:tomcat:别名
123456(别名密碼)
RSA(算法)
1024(密鑰長度)
365(有效期,天機關)
D:/https/key/tomcat.keystore(指定生成證書的位置和證書名稱)
123456(擷取keystore資訊的密碼)
注意:①D:/https/ key目錄需要提前手動建立好,否則會生成失敗
圖例:
第二步:為用戶端生成證書
為浏覽器生成證書,以便讓伺服器來驗證它。
是以,使用如下指令生成:
keytool
-genkey
-alias client (别名)
-keypass 123456(别名密碼)
-keyalg RSA (算法)
-storetype PKCS12
-keypass 123456
-storepass 123456
-keystore D:/keys/client.p12
友善複制版:
keytool -genkey -alias client -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -storetype PKCS12 -keystore D:/https/key/client.p12 -storepass 123456
第二步餘下操作步驟同第一步。
注意:上面兩個證書的格式不一樣。
第三步:讓伺服器信任用戶端證書
1、
由于不能直接将PKCS12格式的證書庫導入,
必須先把用戶端證書導出為一個單獨的CER檔案,使用如下指令:
keytool -export -alias client -keystore D:/https/key/client.p12 -storetype PKCS12 -keypass 123456 -file D:/https/key/client.cer
圖例:
注意:
Keypass:指定CER檔案的密碼,但會被忽略,而要求重新輸入
2、
将該檔案導入到伺服器的證書庫,添加為一個信任證書:
keytool -import -v -file D:/https/key/client.cer -keystore D:/https/key/tomcat.keystore -storepass 123456
圖例:
完成之後通過list指令檢視伺服器的證書庫,
可以看到兩個證書,一個是伺服器證書,一個是受信任的用戶端證書:
keytool -list -v -keystore D:/keys/tomcat.keystore
圖例:
第四步:讓用戶端信任伺服器證書(和以上類似,注意但不同)
1、
由于是雙向SSL認證,用戶端也要驗證伺服器證書,
是以,必須把伺服器證書添加到浏覽器的“受信任的根證書頒發機構”。
由于不能直接将keystore格式的證書庫導入,
必須先把伺服器證書導出為一個單獨的CER檔案,使用如下指令:
keytool -keystore D:/https/key/tomcat.keystore -export -alias tomcat -file D:/https/key/server.cer
注意:此處的别名tomcat必須和格式轉換前的别名一樣。
2、
輕按兩下server.cer檔案,按照提示安裝證書,
将證書填入到“受信任的根證書頒發機構”。
填入方法:
打開浏覽器 - 工具 - internet選項-内容- 證書-導入 就OK了。
第五步:配置Tomcat伺服器
<Connector port=“8443”
protocol=“org.apache.coyote.http11.Http11NioProtocol” SSLEnabled=“true”
maxThreads=“150”
scheme=“https”
secure=“true”
clientAuth=“true”
sslProtocol=“TLS”
keystoreFile=“D:/keys/tomcat.keystore”
keystorePass=“123456”
truststoreFile=“D:/keys/tomcat.keystore”
truststorePass=“123456” />
屬性說明:
clientAuth:設定是否雙向驗證,預設為false,設定為true代表雙向驗證
keystoreFile:伺服器證書檔案路徑
keystorePass:伺服器證書密碼
truststoreFile:用來驗證用戶端證書的根證書,此例中就是伺服器證書
truststorePass:根證書密碼
注意:
① 設定clientAuth屬性為True時,需要手動導入用戶端證書才能通路。
② 要通路https請求 需要通路8443端口,通路http請求則通路Tomcat預設端口(你自己設定的端口,預設8080)即可。
上圖兩個都配置了,http和https都能通路