7

尝试在 Windows 10 中使用 JDK10 在 Tomcat 9 中设置 SSL。当我按照在线教程使用默认密码“changeit”创建 Java 密钥库时,一切正常,Tomcat 启动时没有错误。但是,如果我使用“changeit”以外的其他密钥库密码创建密钥库,tomcat 会抛出此错误:

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

这是创建密钥库的命令:

keytool -genkey -alias tomcat -keyalg RSA -keystore c:\certificates\tomcatkeystore

这是有效的 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 命令从不提示我输入“密钥密码”,就像许多在线示例显示的那样。使用默认的“changeit”密码以外的其他 keytool 命令吗?

谢谢。

4

1 回答 1

7

好的,我能够解决这个问题。我的问题是我使用了错误的连接器属性来指定密钥库密码。在我的示例中,我使用的是“keystorepass”,正确的应该是“certificateKeystorePassword”。也许我在日志中错过了它,但 Tomcat 似乎没有抛出一个适当的错误,比如“连接器的错误属性”,这很有用。

好像 Tomcat 有不同的连接器,所以必须使用正确的连接器:

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

于 2018-08-05T18:16:45.793 回答