it-swarm.com.de

Diffie-Hellman-Fehler mit öffentlichem Schlüssel bei Tomcat 7

Ich habe erfolgreich zwei Ubuntu-Maschinen mit Tomcat- und SSL-Zertifikaten eingerichtet. Ich habe genau das gleiche Verfahren mit Centos 6 befolgt, aber ich bekomme dies, wenn ich versuche, eine Verbindung zum Server herzustellen (über Opera):

Der Server verfügt über einen schwachen, kurzlebigen öffentlichen Diffie-Hellman-Schlüssel

Der Connector lautet wie folgt und es gibt keine Fehler in 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"  /> 

Bei Firefox erhalte ich den nicht vertrauenswürdigen Kommunikationsfehler.

14
Bob

Für mich funktionierte es nach dem Hinzufügen einer Liste zulässiger Verschlüsselungen zur Konfiguration von Tomcat in der Datei conf/server.xml, um die schwachen Diffie-Hellman-Verschlüsselungen zu deaktivieren:

    <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

Dies liegt daran, dass neue Browserversionen beim Zugriff auf Websites, die mit schwachen DH-Verschlüsselungen für SSL konfiguriert sind, entweder Warnungen/Fehler ausgegeben haben. Weitere Informationen zu diesem Problem finden Sie unter den folgenden Links

https://weakdh.org

Logjam Problem

Um dies zu beheben, können Sie entweder auf der Browser- oder der Serverseite einen Ausweg finden. Die Serverseite ist die beste, da das Problem für alle Benutzer behoben wird, wenn sie über verschiedene Browser/Standorte auf den Server zugreifen. 

Beheben Sie das Problem, um sicherzustellen, dass auf unserem Server (in diesem Fall Tomcat) starke Verschlüsselungscodes für SSL verwendet werden.

In Tomcat gibt es zwei verschiedene Implementierungen von SSL. Defautl ist eine JSSE-Implementierung, die als Teil der Java-Laufzeitumgebung bereitgestellt wird. Andere sind APR-Implementierung, die standardmäßig die OpenSSL-Engine verwendet. 

Da JSSE von der Java-Laufzeitumgebung abhängig ist, müssen wir zunächst herausfinden, welche Java-Version wir mit Tomcat verwenden. Tomcat 7 unterstützt Java 1.6 und höher. Dann müssen wir die entsprechenden Cipher Suites finden, die von der entsprechenden Java-Version von JSSE unterstützt werden. Schwache sind die, die 'DHE' haben, also wählen Sie diejenigen aus, die nicht 'DHE' enthalten. Einige der stärkeren Suites für Java 1.6 JSSE sind unten aufgeführt. 

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
...

Erstellen Sie eine Liste starker Chiffre-Anzüge und fügen Sie sie den Connector-Chiffren in der Datei conf/server.xml in Ihrem Tomcat hinzu

<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"
...
/>

Starten Sie den Server neu und die Fehler-/Warnmeldung sollte verschwinden. Denken Sie daran, dass die Java-Version anders ist, wenn das Kopieren/Einfügen oben nicht funktioniert. Beziehen Sie sich also auf die korrekte Version und die unterstützten Chiffre-Suites.

Hinweis: Damit Sie die 256-Bit-AES-Verschlüsselungscodes verwenden können, müssen Sie die Richtliniendateien für JCE-Richtlinien für unbegrenzte Gültigkeit verwenden

Wenn Tomcat für die Verwendung von APR anstelle von JSSE konfiguriert ist, funktioniert die obige Konfiguration nicht. Sie können starke Chiffriersätze aktivieren, indem Sie dem Tomcat-SSL-Konfigurationshandbuch für APR und Logjam Admin folgen.

7
kadian

Fügen Sie dies der Datei server.xml hinzu und starten Sie den Server neu 

<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"/>

Versuchen Sie, mit https: // localhost: 8443 zu surfen.

2

Es funktioniert mit Google Chrome Ver.44 und Danke an Jason Scroggins für den Vorschlag:

  1. Geben Sie auf einer neuen Registerkarte about:config in die Adressleiste ein, und drücken Sie die Eingabetaste. Klicken Sie auf die Schaltfläche, die verspricht, vorsichtig zu sein.
  2. Geben Sie im Suchfeld über der Liste ein und fügen Sie sie ein, während die Liste gefiltert wird.
  3. Doppelklicken Sie auf die Voreinstellung security.ssl3.dhe_rsa_aes_128_sha, um von wahr nach falsch zu wechseln (deaktivieren Sie diese Verschlüsselung in Firefox).
  4. Doppelklicken Sie auf die Voreinstellung security.ssl3.dhe_rsa_aes_256_sha, um von wahr nach falsch zu wechseln (deaktivieren Sie diese Verschlüsselung in Firefox).
2
user5312883

Für mich war es das Problem der Java-Version, die von Tomcat verwendet wurde .. Ich habe die Version von JDK 6 auf JDK 1.7_080 geändert und der Fehler ist verschwunden.

Als ich sagte, dass ich die Java-Version geändert habe, meinte ich, dass ich die Umgebungsvariable "Java_HOME" geändert habe.

0
Swapnil