为什么 tomcat 不提供正确的 SSL 证书

Ray*_*orm 5 ssl tomcat ssl-certificate tomcat6

我成功地使用 SSL 配置了 tomcat,并使用了自签名证书。最近出现了一个问题,就是让客户“接受/信任”我们的证书并不容易。我们最终为该服务器购买了 verisigin 证书。

我已将新证书添加到密钥库的证书中。我已经更新了 tomcat 的server.xml文件以使用别名作为新证书。我已经重新启动了 Tomcat 和服务器。每次我连接到服务器时,我都会获得旧证书。

环境:

  • Windows 2008 R2 - 64 位
  • Tomcat 6.0.29 - 作为服务安装
  • Java 1.6.0_23

连接器server.xml中:

<Connector port="443" maxThreads="150" 
           scheme="https" secure="true" SSLEnabled="true"
           keystoreFile="keystore.keys" keyalias="webapps2013"
           keystorePass="Redacted"             
           clientAuth="false" sslProtocol="TLS" protocol="HTTP/1.1" />
Run Code Online (Sandbox Code Playgroud)

我什至尝试更改密钥库,方法是将旧证书移动到不同的别名,并将我的新证书添加到旧别名中。

我已经从多个浏览器和工作站尝试过它。(也清除了我的缓存。)

那么我需要做什么才能让 tomcat 获取并提供我的新证书?

更新:
在其中一条评论中提出清除 tomcats 缓存的建议之后。
我停止了 tomcat,删除了 ${CATALINA_HOME}/work 并重新启动了 tomcat。
它仍在使用旧证书。

更新 2:
我查看了jakarta_service_date.log catalina.date.log manager.date.log stdout.date.logstderr.date.log我没有看到任何证书错误。虽然我看到了一个关于会话序列化的奇怪错误。

Dec 11, 2013 10:46:27 AM org.apache.catalina.session.StandardManager doUnload
SEVERE: IOException while saving persisted sessions: java.io.FileNotFoundException: 
C:\Tomcat6.0\work\Catalina\localhost\RCSLIBRRunner\SESSIONS.ser (Access is denied)
java.io.FileNotFoundException: C:\Tomcat6.0\work\Catalina\localhost\RCSLIBRRunner\SESSIONS.ser (Access is denied)
Run Code Online (Sandbox Code Playgroud)

其次是堆栈跟踪。其他应用程序抛出了类似的异常。它在几个小时内没有发生,我认为这是清除 tomcats 缓存的副作用。

这是另一个序列化错误:

Dec 11, 2013 10:46:27 AM org.apache.catalina.session.StandardManager stop
SEVERE: Exception unloading sessions to persistent storage
java.io.FileNotFoundException: C:\Tomcat6.0\work\Catalina\localhost\RCSLIBRRunner\SESSIONS.ser (Access is denied)
Run Code Online (Sandbox Code Playgroud)

KM.*_*KM. 2

我们遇到了问题protocol="HTTP/1.1",日志中有错误。我们的错误是

证书文件指定或文件格式无效

根据一些“谷歌研究”,我们用它来protocol代替:

protocol="org.apache.coyote.http11.Http11NioProtocol"

我们的Connector情况如下:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
    SSLEnabled="true"
    maxThreads="150" 
    scheme="https" 
    secure="true"
    keystoreFile="/path/to/keystore"
    keystorePass="******"
    clientAuth="false" 
    sslProtocol="TLS" />
Run Code Online (Sandbox Code Playgroud)