Tomcat 9密钥库密码无效

2022-08-21 00:00:00 ssl keystore java tomcat tomcat9
尝试在Tomcat 9中使用Windows 10中的JDK10设置SSL。当我按照在线教程使用默认密码‘changeit’创建Java密钥库时,一切运行正常,Tomcat启动时没有错误。 但是,如果我使用不同于‘changeit’的密钥库密码创建密钥库,Tomcat会抛出这个错误:

Caused by: java.lang.IllegalArgumentException: keystore password was incorrect

这是创建密钥库的命令:

keytool -genkey -alias tomcat -keyalg RSA -keystore c:certificates	omcatkeystore

这是工作正常的SSL连接器。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true">
    <SSLHostConfig>
        <Certificate certificateKeystoreFile="C:/certificates/tomcatkeystore"
                     type="RSA" clientAuth="false" sslProtocol="TLS" keystorePass="changeit" />
    </SSLHostConfig>
</Connector>

无法正常工作的SSL连接器。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true">
    <SSLHostConfig>
        <Certificate certificateKeystoreFile="C:/certificates/tomcatkeystore"
                     type="RSA" clientAuth="false" sslProtocol="TLS" keystorePass="testing" />
    </SSLHostConfig>
</Connector>

如果我遵循与上面完全相同的步骤,但更改为不同的密钥库密码并在server.xml中指定它,为什么会生成上面的Tomcat错误?

注意:在这两种情况下,我都注意到一件事,那就是keyTool命令从来不会像许多在线示例所显示的那样提示我输入‘key password’。使用默认‘changeit’密码以外的密码时,是否需要不同的keyTool命令?

谢谢。


解决方案

好的,我能够解决这个问题。我的问题是我使用了错误的连接器属性来指定密钥库密码。在我的示例中,我使用的是";keystorepass";,正确的keystorepass应该是";certificateKeystorePassword";。也许我在日志中遗漏了这一点,但Tomcat似乎没有抛出一个适当的错误,如‘Bad Attribute for Connector’,这将是有用的。

Tomcat似乎有不同的连接器,因此必须使用正确的连接器:

https://tomcat.apache.org/tomcat-9.0-doc/config/http.html#SSL_Support

相关文章