Tomcat上的证书配置

时间:2017-04-04 23:36:25

标签: java tomcat ssl-certificate tomcat8 keytool

首先,我知道已经提出了类似的问题,我试图按照建议进行故障排除,但没有运气。所以,我认为我最好只是发帖寻求帮助。提前感谢您的帮助。

问题:我做错了什么?我应该检查什么/在哪里?

目标:我正在尝试在Tomcat上设置证书。我有Tomcat 8.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

2 个答案:

答案 0 :(得分:0)

<Certificate certificateKeystoreFile="D:\cert.jks" type="RSA" keystorePass="123456" />

探测器在这里。密钥库类型是JKS,而不是RSA 1 密钥对类型为RSA。

您可能还需要将密钥对/证书条目重命名为&#34; tomcat&#34;或者Tomcat 8中的默认值,或者告诉Tomcat使用别名&#34; cert&#34; (选择不当)。

  1. 因为您没有为keytool指定任何其他类型。

答案 1 :(得分:-1)

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