奇妙な問題があります: tomcat を https 接続 (server.xml でコネクタを構成) で動作するように構成すると、アプリケーションが他の https URL (外部 API) に接続できなくなります。
私が得るエラー: 原因: 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 を台無しにしているようです。同じ HTTPS conf を使用して Jetty でアプリを実行すると、すべてが機能します。
誰かが同じ問題を抱えていましたか、それとも私はここで文字通り間違ったことをしていますか?
私の環境: * Debian Wheezy (AWS 上); * Tomcat 7.0.28 (Debian に付属); * OpenJDK 1.7.0.25