1

我有一个奇怪的问题:当我将我的 tomcat 配置为通过 https 连接工作(在 server.xml 中配置连接器)时,我的应用程序无法连接到其他 https url(外部 api-s)。

我得到的错误:引起:javax.net.ssl.SSLException:证书中的主机名不匹配:...

我的连接器配置:

<Connector
       protocol="HTTP/1.1"
       port="8443" maxThreads="200"
       scheme="https" secure="true" SSLEnabled="true"
       keystoreFile="/home/user/my-https.keystore" keystorePass="changeit"
       clientAuth="false" sslProtocol="TLS"/>

我的密钥库是一个常规的密钥库,其中包含所有必要的 RapidSSL 证书。

当我在没有 HTTPS 配置的情况下运行我的 tomcat 时,我的应用程序能够连接到其他使用 https 的外部 API。

我在这里假设的是,当我将应用程序连接到 HTTPS 时,应该将 $JAVA_HOME/jre/lib/security/cacerts 用作信任库。但看起来tomcat 在某些时候会弄乱 cacerts 和 my-https.keystore 。当我在 Jetty 上使用相同的 HTTPS conf 运行我的应用程序时,一切正常。

有没有人有同样的问题,或者我在这里做错了什么?

我的环境:* Debian Wheezy(在 AWS 上);* Tomcat 7.0.28(Debian 自带);* OpenJDK 1.7.0.25

4

0 回答 0