Windows Tomcat7 SSL CA证书表示是自签名的

时间:2015-03-31 00:57:47

标签: java windows ssl tomcat7 keytool

您好我正在尝试使用来自CA的证书在Windows 7中配置tomcat7(7.0.50)(委托,如果重要的话)。我下载了CA根,链根和链证书文件以及我的新证书。根据{{​​3}},我使用了我生成csr的密钥库并按照这些步骤进行操作

  1. keytool -import -alias entrust -trustcacerts -keystore crush.jks -file entrust.crt.txt
  2. [提示我证书存在于系统范围的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

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

      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不太舒服,感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

正确的命令应该是:

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