web-dev-qa-db-ja.com

Tomcat 7でのDiffie-Hellman公開キーエラー

TomcatとSSL証明書を使用して2台のUbuntuマシンを正常にセットアップしました。 Centos 6でもまったく同じ手順に従いましたが、サーバーに接続しようとすると(Operaを使用して)これを取得します。

サーバーに弱い一時的なDiffie-Hellman公開キーがあります

コネクタは次のとおりであり、catalina.logにエラーはありません。

<Connector port="some port number"  
           protocol="org.Apache.coyote.http11.Http11Protocol" 
           SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           keystoreFile="path to jks"
           keystoreType="JKS"
           keystorePass="mypass1"
           keyPass="mypass2"  /> 

Firefoxでは、信頼できない通信エラーが発生します。

14
Bob

私にとっては、conf/server.xmlのTomcat構成に許可された暗号のリストを追加して、弱いDiffie-Hellman暗号を無効にした後に機能しました。

    <Connector
        ...
        ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"
        ...
30
centic

これは、SSLの弱いDH暗号で構成されたWebサイトにアクセスするときに、新しいバージョンのブラウザーが警告/エラーを発行し始めたという事実によるものです。問題の詳細については、以下のリンクに従ってください

https://weakdh.org

logjamの問題

これを修正するには、ブラウザ側またはサーバー側でこれを回避する方法を見つけることができます。サーバー側は、異なるブラウザー/場所からサーバーにアクセスしている場合、すべてのユーザーの問題を解決するため、最適です。

サーバー(この場合はTomcat)がSSLに強力な暗号を使用していることを確認する必要がある問題を修正します。

Tomcatには、SSLの2つの異なる実装があります。 Defautlは、Javaランタイムの一部として提供されるJSSE実装です。その他は、デフォルトでOpenSSLエンジンを使用するAPR実装です。

JSSEはJavaランタイムに依存しているため、Tomcatで使用しているJavaバージョンを最初に確認する必要があります。 Tomcat 7はJava 1.6以上をサポートします。次に、JSSEの関連するJavaバージョンでサポートされているそれぞれの暗号スイートを見つける必要があります。弱いものは '[〜#〜] dhe [〜#〜]'を持つものなので、 '[〜#を含まないものを選択してください〜] dhe [〜#〜])。 Java 1.6 JSSEの強力なスイートはほとんどありません。

TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_ECDH_ECDSA_WITH_RC4_128_SHA
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDH_RSA_WITH_RC4_128_SHA
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_RC4_128_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDH_ECDSA_WITH_NULL_SHA
TLS_ECDH_RSA_WITH_NULL_SHA
TLS_ECDHE_ECDSA_WITH_NULL_SHA
TLS_ECDHE_RSA_WITH_NULL_SHA
...

強力な暗号スーツのリストをコンパイルし、Tomcatのconf/server.xmlのコネクタ暗号に追加します

<Connector
...
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_RC4_128_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDH_RSA_WITH_RC4_128_SHA,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_ECDSA_WITH_NULL_SHA,TLS_ECDH_RSA_WITH_NULL_SHA,TLS_ECDHE_ECDSA_WITH_NULL_SHA,TLS_ECDHE_RSA_WITH_NULL_SHA"
...
/>

サーバーを再起動すると、エラー/警告が消えます。 Javaバージョンが異なる場合は、上記のコピー/貼り付けが機能しない可能性があることに注意してください。そのため、正しいバージョンとサポートされている暗号スイートを参照してください。

注:256ビットのAES暗号を使用できるようにするには、JCE Unlimited Strength Jurisdiction Policy Filesをインストールする必要があります

TomcatがJSSEではなくAPRを使用するように構成されている場合、上記の構成は機能しません。 APRのTomcat ssl構成ガイドおよび logjam admin guideに従って強力な暗号スイートを有効にできます。

7
kadian

これをserver.xmlファイルに追加し、サーバーを再起動します

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
       maxThreads="150" scheme="https" secure="true"
       keystoreFile="keystorePath"
       keystorePass="keystorepass"
       ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"
       clientAuth="false" sslProtocol="TLS"/>

https:// localhost:844 で閲覧してみてください

2

Google Chrome ver.44で動作します。提案をしてくれたJason Scrogginsに感謝します。

  1. 新しいタブで、アドレスバーにabout:configと入力するか貼り付けて、Enterキーを押します。注意することを約束するボタンをクリックします。
  2. リストの上の検索ボックスに、dheと入力するか貼り付けて、リストがフィルターされるまで一時停止します。
  3. security.ssl3.dhe_rsa_aes_128_sha設定をダブルクリックしてtrueからfalseに切り替えます(Firefoxがこの暗号を使用できないようにします)。
  4. security.ssl3.dhe_rsa_aes_256_sha設定をダブルクリックしてtrueからfalseに切り替えます(Firefoxがこの暗号を使用できないようにします)。
2
user5312883

私にとっては、Tomcatで使用されているJavaバージョン。

Javaバージョンを変更したと言ったとき、環境変数「Java_HOME」を変更したことを意味しました。

0
Swapnil