我最近將一個受客戶證書保護的應用程式從 tomcat 7 遷移到 tomcat 9。 tomcat 應該根據位于 truststore 中的自簽名證書來驗證客戶證書。
作業中的tomcat 7配置使用了以下連接器(取自server.xml):
<Connector
port="8443"/span>
...
clientAuth="true"/span>
truststoreFile="/usr/share/tomcat/truststore.jks"
truststorePass=" ..."
/>
我已經根據官方檔案將其遷移到tomcat 9中的以下配置:
<Connector port="8443" 。 ...>
<SSLHostConfig protocols="TLSv1。 2" certificateVerification="required"。
truststoreFile="/usr/share/tomcat9/truststore.jks"/span>
truststorePassword=" ..."
truststoreType="PKCS12">。
</SSLHostConfig>/span>
...
</Connector> ...
當啟動tomcat 9時,我得到了以下錯誤:
java.lang.IllegalArgumentException: the trustAnchors parameter must be non-empty
谷歌搜索這個錯誤產生了一堆結果,這通常似乎指向一個空的/不可訪問的 truststore。我的truststore不是空的,它位于同樣用于keystore的目錄中,可以順利使用。因為同樣的信任庫在tomcat 7上也能使用,我對如何在這個問題上取得進展已經沒有想法了。 有沒有人有什么想法?謝謝。
如果有關系的話,truststore看起來是這樣的:
> keytool -list -keystore truststore.jks
密鑰庫型別。PKCS12
密鑰庫提供者。太陽公司
你的鑰匙庫包含1條目
mycert, Sep 15, 2021, PrivateKeyEntry,
證書指紋 (SHA-256): ...
uj5u.com熱心網友回復:
感謝dave_thompson_085和Piotr P. Karwasz的分析和評論,我可以通過在連接器配置中添加truststoreAlgorithm="SunPKIX"來解決該問題。
正如他們所指出的,這個答案可能是一個替代解決方案,但涉及修改 truststore。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/330569.html
標籤:
