建立金鑰庫並配置 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 證書,然後單擊匯出工具組下的 PEMhttp://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 卡中選擇證書。