Ubuntu 14.04(Java OpenJDK 1.7)にTomcat 7サーバーがあり、1年以上問題なく動作しています。数ヶ月前、Chromeからアクセスできなくなったので、Firefoxに切り替えてこの特定のサイトにアクセスすることで対処しました。最近(数日)前に、Firefoxでアクセスできなくなりました。
私は相談しました この質問 これは基本的に私が抱えている問題と同じですが、その解決策は何らかの理由で機能しなくなりました。昨日現在、Chrome 41とFirefox 37の両方が私のサイトを表示していません。Chromeの場合、私はこの応答を受け取ります:
A secure connection cannot be established because this site uses an unsupported protocol.
Error code: ERR_SSL_VERSION_OR_CIPHER_MISMATCH
Firefoxで私はこれを取得します:
Cannot communicate securely with peer: no common encryption algorithm(s). (Error code: ssl_error_no_cypher_overlap)
私はTomcat7に対して answers および 参照が推奨 のプロトコルのすべての組み合わせを試しましたが、サイコロはありません。ブラウザメーカーは、これらのパラメータが機能しなくなるほどセキュリティを強化しているようです。
<Connector port="8443" protocol="org.Apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslEnabledProtocols = "TLSv1,TLSv1.1,TLSv1.2" />
私は一日中パラメータのさまざまな組み合わせを試してきましたが、運がありません。また、2つの異なるTomcatインストール(Windowsでは2番目)で問題を再現することもできたので、マシンの問題ではないと確信しています。
Java 8とTomcat 8をあきらめてインストールする前に、週末の残りを一掃する前に、考えられる解決策についてここで質問したいと思いました。
状況をデバッグするには、opensslのコマンドラインツール、特にopenssl s_client
を使用できます。オプション-tls1
、-tls1_1
、および-tls1_2
を追加することにより、プロトコルの互換性をテストでき、暗号の場合は-cipher [cipherlist]
を使用できます。例えば
openssl s_client -connect example.com:443 -tls1
接続、証明書、機能(再ネゴシエーション、圧縮など)に関する詳細情報と、場合によっては警告が表示されます。これは、問題のデバッグに役立ちます。
tomcatでTlsを有効にするには、Tomcat/conf /フォルダーにあるTomcatのserver.xmlファイルのConnectorセクションにこのパラメーターsslEnabledProtocols = "TLSv1.X"を追加します。たとえば、TLSv1.1を構成するには、以下の構成に従います。
<Connector port="8443"
protocol="org.Apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="ssl/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="SSL" sslEnabledProtocols="TLSv1.1" />
サーバーを再起動します