2017-04-04 254 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