您好我正在尝试使用来自CA的证书在Windows 7中配置tomcat7(7.0.50)(委托,如果重要的话)。我下载了CA根,链根和链证书文件以及我的新证书。根据{{3}},我使用了我生成csr的密钥库并按照这些步骤进行操作
[提示我证书存在于系统范围的CA密钥库中,我仍然添加它]
keytool -import -alias chain-root -trustcacerts -keystore crush.jks -file L1Kchainroot.txt
keytool -import -alias chain-root -trustcacerts -keystore crush.jks -file L1Kchain.txt
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, ....
我一直在搞乱这个问题几个小时,把我的头靠在墙上,我用linux做了这个,然后使用openssl代替keytool而没有问题。这可能是我的问题吗?无论我尝试什么连接器配置,如果没有私钥输入作为别名和keyPass选项集,它将无法启动。如果我删除私钥条目它将启动但永远不会完成ssl握手。我使用'tomcat'别名为keyAlias它会说
java.io.IOException: Alias name tomcat does not identify a key entry
我可以打捞当前的证书,还是需要生成新的私钥和csr并提交新的请求然后将它们移到我的Windows机器上?我真的觉得这是我的问题,我是否接近了?为此,使用Windows不太舒服,感谢您的帮助。
答案 0 :(得分:0)
您在第4步中犯了一个小错误:您没有使用Entrust颁发的证书更新您的PrivateKeyEntry,而是将其作为可信证书导入。
正确的命令应该是:
keytool -import -alias crush-windows7 -trustcacerts -keystore crush.jks -file entrustcert.crt.txt