尝试在Tomcat9中使用Windows10中的JDK10设置SSL。当我按照在线教程使用默认密码'changeit‘创建一个Java keystore时,一切运行正常,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命令从来不会像许多在线示例所显示的那样提示我输入“key password”。当我使用默认的'changeit‘密码以外的密码时,有没有不同的keytool命令?
谢谢。
发布于 2018-08-06 02:16:46
好的,我能够解决这个问题。我的问题是我使用了错误的连接器属性来指定密钥库密码。在我的例子中,我使用的是"keystorepass“,正确的应该是"certificateKeystorePassword”。也许我在日志中遗漏了这一点,但Tomcat似乎没有抛出一个适当的错误,比如“连接器的错误属性”,这可能会很有用。
看起来Tomcat有不同的连接器,所以必须使用正确的连接器:
https://tomcat.apache.org/tomcat-9.0-doc/config/http.html#SSL_Support
https://stackoverflow.com/questions/51680108
复制相似问题