Windows Tomcat7 SSL CA 证书说是自签名的

Windows Tomcat7 SSL CA cert says is self signed

您好,我正在尝试使用来自 CA 的证书(委托,如果重要的话)在 windows7 中配置 tomcat7 (7.0.50)。我下载了 CA 根、链根和链证书文件,以及我的新证书。根据 tomcat guide,我使用了从中生成 csr 的密钥库并遵循了这些步骤

  1. keytool -import -alias entrust -trustcacerts -keystore crush.jks -file entrust.crt.txt

[提示我证书存在于系统范围的 CA 密钥库中,我仍然添加它]

  1. keytool -import -alias chain-root -trustcacerts -keystore crush.jks -file L1Kchainroot.txt

  2. keytool -import -alias chain-root -trustcacerts -keystore crush.jks -file L1Kchain.txt

  3. keytool -import -alias tomcat -trustcacerts -keystore crush.jks -file entrustcert.crt.txt

现在,当我列出我的密钥库的内容时,我看到了

C:\Users\crush\My Documents\cert>keytool -list -keystore crush.jks
Enter keystore password:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 5 entries

entrust, Mar 30, 2015, trustedCertEntry,   
Certificate fingerprint (SHA1): B3:1E:B1:B7:40:E3:6C:84:02:DA:DC:3

chain, Mar 30, 2015, trustedCertEntry,   
Certificate fingerprint (SHA1): CC:A2:7D:33:C7:35:A7:D0:6D:1F:EC:A

chain-root, Mar 30, 2015, trustedCertEntry,   
Certificate fingerprint (SHA1): 9E:1A:0C:35:E7:14:B6:97:92:D0:90:B

tomcat, Mar 30, 2015, trustedCertEntry,   
Certificate fingerprint (SHA1): 6A:77:EC:32:1E:F9:AC:4F:BE:C7:CB:5

crush-windows7, Mar 26, 2015, PrivateKeyEntry,   
Certificate fingerprint (SHA1): 04:72:8A:36:56:7E:D5:0F:7E:E9:E0:1

现在我将 server.xml 文件编辑成这样

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" 
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1" 
    keystoreFile="C:\Users\crush\apache-tomcat-7.0.50\conf\crush.jks"  
    keystorePass="storepassword" 
    keyPass="keypassword"
/>

当它启动并导航到该页面时,我会看到一个不受信任的连接警告

crush-windows7.crush.com:8443 uses an invalid security certificate. The certificate is not trusted because it is self-signed. (Error code: sec_error_ca_cert_invalid)

如果我将 -v 与 keytool 一起使用并检查返回的证书,我会看到 Issuer 是 Entrust

Owner: CN=crush-windows7.crush.com, ....
Issuer: CN=Entrust Certification Authority - L1K, OU="(c) 2012 Entrust, Inc. - for authorized use only", OU=See www.entrust.net/legal-terms, O="Entrust, Inc.", C=US

但是我的私钥条目的发行人是我自己

Owner: CN=crush-windows7.crush.com, ....
Issuer: CN=crush-windows7.crush.com, ....

我已经弄乱了几个小时并用头撞墙,在使用 openssl 而不是 keytool 之前我已经用 linux 完成了这个没有问题。这可能是我的问题吗?无论我尝试什么连接器配置,如果没有私钥条目作为别名和 keyPass 选项集,它都不会启动。如果我删除私​​钥条目,它将启动但永远不会完成 ssl 握手。我使用 'tomcat' 作为 keyAlias 的别名,它会说

java.io.IOException: Alias name tomcat does not identify a key entry

我可以挽救我当前的证书,还是需要生成一个新的私钥和 csr 并提交一个新的请求,然后将它们移到我的 windows 机器上?我真的觉得这是我的问题,我什至接近要点了吗?为此使用 windows 不太舒服,感谢您的帮助。

您在第 4 步中犯了一个小错误:您没有使用 Entrust 颁发的证书更新您的 PrivateKeyEntry,而是将其导入为受信任的证书。

正确的命令应该是:

keytool -import -alias crush-windows7 -trustcacerts -keystore crush.jks -file entrustcert.crt.txt