2017-04-04 205 views
0

首先,我知道有类似的问题已经提出,我试图按照建议排除故障,但没有运气。所以,我认为我最好只是发布求助信息。预先感谢您的帮助。Tomcat上的证书配置

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

目的:我试图在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> 

执行卡塔利娜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 

回答

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

的probem在这里。密钥库类型是JKS,而不是RSA 。 密钥对类型是RSA。

您可能还必须将密钥对/证书条目重命名为“tomcat”或Tomcat 8中的默认值,或者告诉Tomcat使用别名“cert”(不好的选择)。

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

谢谢@EJP。请耐心等待我 - 第一次使用Tomcat。你的意思是,由于文件名是cert.jks,type的值应该是JKS?下面是来自server.xml模板的示例: nh39

+0

文件名与它无关。由于您在使用keytool时未指定备用密钥库类型,因此其生成的缺省值为JKS。我不知道为什么你重新发布了与我已经指出的相同的错误。 – EJP

+0

感谢您的澄清。我发布的第二个只是server.xml中的原始模板。试图确保我正确理解它。对不起,如果它让你烦恼。 – nh39

-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