Tomcat
將整個證書鏈載入到 Tomcat 7 的密鑰庫中
環境:Tomcat 7.0 on Windows 2008 R2
要完成什麼
讓 Tomcat 7.0 使用帶有證書鏈的特定萬用字元證書,這樣客戶的瀏覽器就不會拋出錯誤。提供的證書是萬用字元證書。這是不可協商的,與安裝證書無關。
我的問題是除了主證書之外,我無法讓 tomcat 使用鏈(根證書)。
我試過的
起初,我花了很長時間才獲得使用提供的密鑰對的證書。參考文獻 2 和 3 向我展示了將提供的密鑰對導入為 Tomcat 更喜歡的“PrivateKeyEntry”的這些步驟:
#on a CentOS server cuz easier than getting a windows tool for it openssl pkcs12 -export -in wildcard-customer-2016.crt -inkey wildcard-customer-2016.key -out wildcard-customer-2016.p12 -name wildcard -CAfile rapidssl.crt -caname root #back on windows C:\Program Files\Java\jre7\bin\keytool -importkeystore -deststorepass tomcat -destkeystore c:\.keystore -srckeystore c:\certificate\wildcard-customer-2016\wildcard-customer-2016.p12 -srcstoretype PKCS12 -alias wildcard
但我不知道如何添加根證書以便它也使用它。您可以看到我用來建構 .p12 文件的命令包含一個 CAfile 命令。使用“-trustcacerts”執行時的 importkeystore 命令不會添加根證書,儘管它確實適用於 *.customer.com 證書。
可能的替代方案
有人解釋瞭如何配置我
server.xml
以正確使用 APR。假裝我不知道 zip 文件中的文件去哪裡了。(參考文獻4)參考
我使用以下步驟來完成此操作
- HOSTNAME.key 包含未加密的私鑰
- HOSTNAME.cer 包含公共證書 + CA 鏈。
$HOSTNAME 應該是主機的 FQDN(在步驟 2 和 3 中對於別名很重要)。
openssl pkcs12 \ -export \ -out $HOSTNAME.pfx \ -inkey $HOSTNAME.key \ -in $HOSTNAME.cer
然後使用 $HOSTNAME.pfx
keytool -importkeystore \ -srckeystore $HOSTNAME.pfx \ -srcstoretype pkcs12 \ -srcstorepass pazzword \ -destkeystore $HOSTNAME.jks \ -deststoretype JKS \ -deststorepass pazzword \ -srcalias 1 \ -destalias $HOSTNAME
最後在Tomcat的server.xml中
keystoreFile="/etc/tomcat7/security/$HOSTNAME.jks" keystorePass="pazzword" keyAlias="$HOSTNAME" truststoreFile="/etc/tomcat7/security/mastercert.jks" truststorePass="changeit"
最後一部分(信任庫)是如果您需要 Tomcat 信任額外的 CA,那麼您的設置可能不需要。因此,密鑰庫是伺服器證書所在的位置,而信任庫是伺服器將信任的人(以防您想要進行相互身份驗證等)。