建立金鑰庫並配置 Tomcat
本文將介紹如何配置 Tomcat 以從客戶端請求 CAC 證書。它專注於建立開發環境,因此一些應該考慮用於生產的功能不在這裡。 (例如,它顯示使用 https 的自簽名證書,並且不考慮檢查已吊銷的證書。)
建立用於啟用 HTTPS 連線的金鑰庫
第一步是在 tomcat 上設定 SSL。這在 tomcat 網站上有記錄: https : //tomcat.apache.org/tomcat-8.5-doc/ssl-howto.html 為了完整起見,下面列出了使用自簽名證書進行設定的步驟:
我們需要建立一個包含伺服器 SSL 證書的金鑰庫檔案。證書是建立 https 連線所需的證書,與從客戶端請求伺服器請求 CAC 證書無關,但客戶端證書身份驗證需要 https 連線。對於開發環境,建立自簽名證書是可以的,但不鼓勵生產。Java 附帶了一個名為 keytool 的實用程式( http://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html) ,用於管理證書和金鑰庫。它可用於建立自簽名證書並將其新增到金鑰庫。為此,你可以從命令提示符處發出以下命令:
keytool -genkey -alias tomcat -keyalg RSA -keystore \ path \ to \ my \ keystore -storepass changeit
系統將提示你輸入各種資訊,然後將建立名為“\ path \ to \ my \ keystore”且密碼為 changeit
的金鑰庫檔案,它將包含生成的自簽名證書。
建立包含 DoD 根證書的信任庫
接下來需要的是建立一個包含 DoD 根證書的信任庫。此信任庫中的證書將被 tomcat 視為受信任,並且它僅接受在其證書鏈中具有其中一個受信任證書的客戶端證書。
要建立信任庫,我們需要獲取 DoD 根證書的副本。為此,請從 http://militarycac.com/dodcerts.htm 下載“InstallRoot 5.0” 。安裝並執行然後執行它。展開“安裝 DoD 證書”窗格,然後單擊證書選項卡: http://i.stack.imgur.com/Ol1Y9.jpg
接下來,從證書列表中選擇三個 DoD 根 CA 證書,然後單擊匯出工具組下的 PEM
: http://i.stack.imgur.com/AT7PY.jpg
單擊 PEM
匯出按鈕後,選擇要將證書匯出到的位置,然後單擊確定。這應該在你選擇的目錄中建立了三個 .cer 檔案。開啟命令提示符並導航到該目錄。
在這裡,我們將使用 keytool 命令將證書匯入信任庫。執行以下命令以匯入三個證書:
keytool -importcert -file DoD_Root_CA_2__0x05__DoD_Root_CA_2.cer -alias DODRoot2 -keystore truststore.jks -storepass changeit
keytool -importcert -file DoD_Root_CA_3__0x01__DoD_Root_CA_3.cer -alias DODRoot3 -keystore truststore.jks -storepass changeit
keytool -importcert -file DoD_Root_CA_4__0x01__DoD_Root_CA_4.cer -alias DODRoot4 -keystore truststore.jks -storepass changeit
這將在當前工作目錄中建立一個 truststore.jks 檔案,密碼為 changeit
。它將包含三個 DoD Root Certs,你可以通過執行來看到:
keytool -list -keystore truststore.jks
哪個應該列出如下:
你的金鑰庫包含 3 個條目
dodroot4,2016 年 9 月 23 日,trustedCertEntry,證書指紋(SHA1):B8:26:9F:25:DB:D9:37:EC:AF:D4:C3:5A:98:38:57:17:23:F2 :D0:26 dodroot3,2016 年 9 月 23 日,trustedCertEntry,證書指紋(SHA1):D7:3C:A9:11:02:A2:20:4A:36:45:9E:D3:22:13:B4:67 :D7:CE:97:FB dodroot2,2016 年 9 月 23 日,trustedCertEntry,證書指紋(SHA1):8C:94:1B:34:EA:1E:A6:ED:9A:E2:BC:54:CF:68 :72:52:B4:C9:B5:61
配置 Tomcat 以使用 Keystore 和 Truststore
我們現在有了我們需要的金鑰庫和信任庫檔案,接下來是配置 tomcat 來使用它們。為此,我們必須更改/conf/server.xml 檔案。在新增聯結器定義中開啟檔案,如下所示:
<Connector
clientAuth="true"
keystoreFile="path/to/keystore.jks"
keystorepass="changeit"
keystoreType="jks"
truststoreFile="path/to/truststore.jks"
truststoreType="jks"
truststorepass="changeit"
maxThreads="150"
port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
scheme="https"
secure="true"
sslProtocol="TLS"
SSLEnabled="true"
/>
你可以到這裡進一步定義所有屬性: http : //tomcat.apache.org/tomcat-7.0-doc/config/http.html
一旦完成這一切就啟動 tomcat。從具有插入 CAC 的 CAC 閱讀器的計算機瀏覽到 https://:8443 / url,如果一切配置正確,則應提示你從 CAC 卡中選擇證書。