首先,我知道已经有类似的问题,我试图按照建议进行故障排除,但没有任何运气。所以,我想我最好还是发帖子寻求帮助吧。首先,谢谢你的帮助。
问:我做错了什么?我应该检查什么/在哪里?
目标:我正在尝试在Tomcat上设置一个证书。我有Tomcat8.5、%JAVA_HOME%="C:\Program Files\Java\jdk1.8.0_121“和我用以下命令生成的证书:
keytool -genkeypair -alias cert -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -keypass 123456 -storepass 123456 -keystore d:\cert.jks并填写我的姓名和其他信息等以生成密钥对。
我看到许多YouTube视频和其他说明提到了"genkey“而不是"genkeypair”,但这个选项在这台计算机上不可用。无论如何,我修改了server.xml文件,添加了以下内容:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="D:\cert.jks" type="RSA" keystorePass="123456" />
</SSLHostConfig>
</Connector>执行catalina configtest得到以下结果:
04-Apr-2017 19:28:16.271 SEVERE [main] org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["https-jsse-nio-443"]
java.lang.IllegalArgumentException: java.io.IOException: Keystore was tampered with, or password was incorrect发布于 2017-04-05 12:38:03
FWIW,我可以让它与HTTP/1.1协议一起工作--更简单。
基本上,被替换了
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="D:\cert.jks" type="RSA" keystorePass="123456" />
</SSLHostConfig>
</Connector>有了这个
<Connector port="443" protocol="HTTP/1.1"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clienAuth="false" sslProtocol="TLS" keystoreFile="/conf/.keystore" keystorePass="123456" />继续阅读更多关于Tomcat和存储类型的内容。这里有一个有趣的主题:How to create a BKS (BouncyCastle) format Java Keystore that contains a client certificate chain
https://stackoverflow.com/questions/43219473
复制相似问题