我有一个奇怪的问题: 当我将tomcat配置为通过https连接(在server.xml中配置连接器)时,我的应用程序无法连接到其他https URL(外部api-s)。
我得到的错误: 引起:javax.net.ssl.SSLException:证书中的主机名不匹配:...
我的连接器conf:
<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。当我使用相同的HTTPS配置在Jetty上运行我的应用程序时,一切正常。
有没有人遇到同样的问题,或者我在这里犯了什么字面错误?
我的环境: * Debian Wheezy(在AWS上); * Tomcat 7.0.28(Debian附带); * OpenJDK 1.7.0.25