天天看點

雙認證的實作

使用Keytool工具生成證書及簽名完整步驟

  1. 建立證書庫(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都能通路

繼續閱讀