我在tomcat 7(7.0.10)上配置SSL时遇到问题我在使用Thawte SGC证书,请仔细阅读以下说明帮助我。 我已经按照以下步骤进行了
1)使用以下命令生成密钥
keytool -genkey -keysize 2048 -alias test_self_certificate -keyalg RSA -keystore test_self_certificate.jks -validity 730
此命令在当前文件夹中生成“ test_self_certificate.jks ”文件
2)使用以下命令生成CSR
keytool -certreq -alias test_self_certificate -file my_application.csr -keystore test_self_certificate.jks
此命令在当前文件夹中生成“ my_application.csr ”文件
3)然后我将此CSR提交给Thawte并以PKCS#7格式从他们那里获得证书,我已将该证书文本复制到记事本中并将该文件另存为“ signed_certificate.p7b ”
4)然后我使用下面的命令
创建了新的JKS密钥库和从Thawte收到的导入证书keytool -import -alias signed_cert -trustcacerts -file signed_certificate.p7b -keystore tomcat_application.jks
此命令在当前文件夹中生成 “tomcat_application.jks ”文件
5)我已经更新了tomcat server.xml,如下所示(我提供了正确的.jks文件路径和密钥库密码)
<Connector port="8001" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="/export/home/parsupport/Tomcat_certs/ tomcat_application.jks " keystorePass="parlive" clientAuth="false" sslProtocol="TLS" />
6)在我启动Tomcat之后发生这种变化后,我得到了Exception并且tomcat没有以SSL开头
Caused by: javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled.
at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.checkEnabledSuites(SSLServerSocketImpl.java:310)
at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.accept(SSLServerSocketImpl.java:255)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.checkConfig(JSSESocketFactory.java:774)
重要说明: 但是如果我导入从密钥库中获取的Thawte证书(test_self_certificate.jks - 上面提到的第一步),我已经创建了以生成KeyPair和CSR,并使用该密钥库配置tomcat(如上面的步骤6所述),然后Tomcat以SSL模式启动,但在尝试启动HTTPS URL时,我收到不受信任的证书警告。
答案 0 :(得分:0)
keytool -genkey -keysize 2048 -alias test_self_certificate [...]
这里,-genkey
生成公钥/私钥对并存储到“test_self_certificate”别名条目中,从而使其成为私钥条目。 (如果使用keytool -list
,您将看到一些私钥条目和一些证书条目。 -genkey
还会自动生成一个自签名证书以与此私钥关联(默认情况下,这也是公钥有效存储的方式)。
keytool -import -alias signed_cert [...]
如果您获得了存储在密钥库中的私钥的证书,则需要将此证书存储在正确的私钥条目中,而不仅仅是任何条目。在这里,您应该使用-alias test_self_certificate
代替(这也可能意味着它不是别名的最佳选择,但这只是一个细节)。
(在某些情况下,您可能还需要make sure you import the full chain。)