tomcat9如何使用客户端证书?
How to use client certificate with tomcat 9?
我最近将受客户端证书保护的应用程序从 tomcat 7 迁移到 tomcat 9。tomcat 应该根据自位于信任库中的签名证书。
工作 tomcat 7 配置使用了以下连接器(取自 server.xml
):
<Connector
port="8443"
...
clientAuth="true"
truststoreFile="/usr/share/tomcat/truststore.jks"
truststorePass="..."
/>
我在tomcat9中已经根据官方文档将此迁移到以下配置:
<Connector port="8443" ...>
<SSLHostConfig protocols="TLSv1.2" certificateVerification="required"
truststoreFile="/usr/share/tomcat9/truststore.jks"
truststorePassword="..."
truststoreType="PKCS12">
</SSLHostConfig>
...
</Connector>
启动tomcat9时,出现如下错误:
java.lang.IllegalArgumentException: the trustAnchors parameter must be non-empty
用谷歌搜索这个错误会产生一堆结果,这通常似乎指向一个空的/不可访问的信任库。我的信任库不为空,并且位于也用于密钥库的同一目录中,可以毫无问题地使用它。因为同一个信任库与 tomcat 7 一起工作,所以我 运行 不知道如何在这个问题上取得进展。
有人有什么想法吗?谢谢。
以防万一,信任库如下所示:
> keytool -list -keystore truststore.jks
Keystore type: PKCS12
Keystore provider: SUN
Your keystore contains 1 entry
mycert, Sep 15, 2021, PrivateKeyEntry,
Certificate fingerprint (SHA-256): ...
感谢 dave_thompson_085 and Piotr P. Karwasz 的分析和评论,我可以通过将 truststoreAlgorithm="SunPKIX"
添加到连接器配置来解决问题。
正如他们指出的那样,这个 answer 可能是一个替代解决方案,但涉及修改信任库。
我最近将受客户端证书保护的应用程序从 tomcat 7 迁移到 tomcat 9。tomcat 应该根据自位于信任库中的签名证书。
工作 tomcat 7 配置使用了以下连接器(取自 server.xml
):
<Connector
port="8443"
...
clientAuth="true"
truststoreFile="/usr/share/tomcat/truststore.jks"
truststorePass="..."
/>
我在tomcat9中已经根据官方文档将此迁移到以下配置:
<Connector port="8443" ...>
<SSLHostConfig protocols="TLSv1.2" certificateVerification="required"
truststoreFile="/usr/share/tomcat9/truststore.jks"
truststorePassword="..."
truststoreType="PKCS12">
</SSLHostConfig>
...
</Connector>
启动tomcat9时,出现如下错误:
java.lang.IllegalArgumentException: the trustAnchors parameter must be non-empty
用谷歌搜索这个错误会产生一堆结果,这通常似乎指向一个空的/不可访问的信任库。我的信任库不为空,并且位于也用于密钥库的同一目录中,可以毫无问题地使用它。因为同一个信任库与 tomcat 7 一起工作,所以我 运行 不知道如何在这个问题上取得进展。 有人有什么想法吗?谢谢。
以防万一,信任库如下所示:
> keytool -list -keystore truststore.jks
Keystore type: PKCS12
Keystore provider: SUN
Your keystore contains 1 entry
mycert, Sep 15, 2021, PrivateKeyEntry,
Certificate fingerprint (SHA-256): ...
感谢 dave_thompson_085 and Piotr P. Karwasz 的分析和评论,我可以通过将 truststoreAlgorithm="SunPKIX"
添加到连接器配置来解决问题。
正如他们指出的那样,这个 answer 可能是一个替代解决方案,但涉及修改信任库。