ECDHE cipher-Suiten nicht unterstützt OpenJDK 8 installiert, die auf EC2-Linux-Maschine
Beim starten jetty-distribution-9.3.0.v20150612
mit openjdk 1.8.0_51
läuft auf einem Amazon EC2 Linux-Maschine ist, ist gedruckt, alle konfigurierten ECDHE-Suiten werden nicht unterstützt.
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA not supported
Diese werden aktiviert, in jetty/etc/jetty-ssl-context.xml
-
<Set name="IncludeCipherSuites">
<Array type="java.lang.String">
<!-- TLS 1.2 AEAD only (all are SHA-2 as well) -->
<Item>TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256</Item>
<Item>TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256</Item>
<Item>TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</Item>
<Item>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</Item>
<Item>TLS_DHE_RSA_WITH_AES_256_GCM_SHA384</Item>
<Item>TLS_DHE_RSA_WITH_AES_128_GCM_SHA256</Item>
...
Lese ich Oracle Java 8 sollten diese Protokolle unterstützen, aber das ist vielleicht nicht unterstützt OpenJDK? Oder sollte ich Sie aktivieren irgendwie?
Update
Oracle JCE cryptographic provider installiert ist, unter jre/lib/security/
, aber es hat nicht geholfen.
der Oracle-Installation der JCE kryptografische auf ein OpenJDK installieren hat keine Wirkung, da sich die ECDHE ciphers Implementierung in nativem C-code und werden nur ausgeliefert, die in der Oracle-JDK (siehe armoredbarista.blogspot.co.uk/2013/10/...)
InformationsquelleAutor Kof | 2015-08-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, ich bin mit einem ähnlichen setup, mit einem AWS-box läuft openjdk-1.8.0.51.
was löste es bei mir so fügen Sie bouncycastle als provider-wie so:
Fügen Sie die
bcprov-<verion>.jar
zu/usr/lib/jvm/jre/lib/ext
Bearbeiten
/usr/lib/jvm/jre/lib/security/java.security
Sie die folgende Zeile hinzufügen, um der Liste der Anbieter:(Ich habe es als 6. Eintrag, aber Sie können hinzufügen, der höher in der Ordnung, wenn Sie bevorzugen)
Neustart meiner Anwendung und war in der Lage zu verwenden EG-basierten cipher suites wie
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
.Wollen einfach nur, um zu bestätigen, dass die Installation des bouncycastle-provider gelöst, ein ähnliches problem für mich. Es gibt 2 Anbieter Gläser stehen auf dem bouncycastle Website:
bcprov-jdk15on-<version>.jar
undbcprov-ext-jdk15on-<version>.jar
. Nicht sicher, was der Unterschied ist, aber ich habe die ehemalige und es funktionierte gut.Ich bin noch immer nicht in der EG-ALG nach dem hinzufügen der BouncyCastle jar v1.55 in /usr/lib/jvm/jre/lib/ext und wie @lenswipe vorgeschlagen, zu entfernen 'EC, ECDHE, ECDH" aus dem jdk.tls.disabledAlgorithms. Ich bin auf OpenJDK 1.8.0_101 auf RHEL7.2. BTW - ich bin nicht mit Jetty - nur das erstellen einer benutzerdefinierten Java-Anwendung. Die Art und Weise ich die Prüfung für die Verfügbarkeit des ALG ist der Aufruf SSLServerSocket.getSupportedCipherSuites(). Die zurückgegebene Liste enthält nicht alle EG-Chiffren. Alle anderen Dinge, könnte die Blockierung der EG ALG?
Klar, ich habe auch die BC-provider in der Liste, aber die position 9 in meinem Fall.
Ok - so habe ich herausgefunden, mein Problem. @lenswipe war richtig, aber ich "entfernt" EG, ECDHE, und ECDH falsch von java.Sicherheit Datei. Funktioniert NICHT:
jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 768, DES #, EC, ECDHE, ECDH
InformationsquelleAutor taleb
Die Ursache ist, dass OpenJDK auf CentOS/RHEL/Amazon Linux mit OpenJDK auf Sie einfach nicht Schiff mit der benötigten nativen Bibliotheken zur Unterstützung der EG. Die Unlimited Policy Dateien sind ein Roter Hering, als irgendwelche versuche zu un-deaktivieren Sie verschiedene algorithmen, etc. Wenn die Bibliotheken nicht vorhanden sind, können Sie nicht die Funktionen nutzen.
Akzeptierte Antwort "installieren Hüpfburg" funktioniert, weil der BC bietet eine pure-Java-Implementierung die gewünschten algorithmen. Idealerweise ist der JDK würde native Implementierungen, die würden liefern höhere Leistung.
Sieht es aus wie OpenJDK auf Amazon Linux nur warten. 🙁
Ref: http://armoredbarista.blogspot.de/2013/10/how-to-use-ecc-with-openjdk.html
Auch: https://security.stackexchange.com/questions/117975/how-to-enable-ecdhe-in-openjdk-1-8-0-in-centos-6-7
UPDATE 2016-11-09
Es scheint, dass Oracle die Elliptische Kurve native Bibliothek (
libsunec.so
) ist lizensiert unter der GPL. Sie können dies überprüfen, indem Sie auf Oracle download-Seite, indem Sie auf Third Party Licenses, und überprüfen Sie die README-Datei für Ihre version von Java.Dies bedeutet, dass, wenn Sie können, schnappen Sie sich eine Kopie der Oracle JRE/JDK für die Ziel-Plattform und-Architektur, die Sie ergreifen können, die
libsunec.so
Bibliothek von es und installieren Sie es rechtlich in das OpenJDK installation.Für mich bedeutete das, greifen die Datei
$JAVA_HOME/jre/lib/amd64/libsunec.so
aus einer Oracle Java 8 JRE-and-Drop z.B./usr/lib/jvm/jre-1.8.0/lib/amd64/
. Das ist alles, was erforderlich ist, um zu ermöglichen, Elliptische-Kurven-algorithmen.UPDATE 2018-03-08
Oracle Java 9 wird auch die "unlimited strength cryptography" Bibliotheken standardmäßig aktiviert, so dass ist schön. Es sieht aus wie OpenJDK wird immer noch verlangen, dass Sie legen Sie eine system-Eigenschaft zu aktivieren "unlimited strength cryptography".
libsunec.so
standardmäßig.Das ist eine gute Nachricht. Ich habe nicht überprüft mich, aber es sieht aus wie die Java-Welt ist schließlich bewegte Vergangenheit der dumme 1990er-Jahre-ära beschränkt-Stärke Kryptographie Regeln und der Umzug in das moderne Zeitalter.
InformationsquelleAutor Christopher Schultz
Versuchen, die Installation der JCE Unlimited Strength Jurisdiction Policy-Dateien (diese sollten helfen, mit Ihrem höheren bit-Chiffren)
Beachten Sie auch, in der link, den Sie über die java-8-cipher-Protokoll-Unterstützung sagt
Haben Sie einen solchen Anbieter auf dem Java 8 VM?
jre-1.8.0-openjdk.x86_64/lib/security
, server neu gestartet, aber er sagt immer noch "nicht unterstützt". Ich versuche herauszufinden, wenn es ein OpenJDK (auf EC2 Linux-Rechner) Problem.Installation
Oracle JDK 1.8
mit JCE cryptographic provider hat diese Arbeit machen. Also Frage ist, wie diese zu aktivieren Kryptologie in OpenJDK? Ich werde entfernen Jetty aus dem Frage-Titel.Möchte nur hinzufügen das stack-trace-string an die post, so dass andere vielleicht finden Sie diesen Beitrag, wenn Sie die Suche nach dem Fehler. javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
InformationsquelleAutor Joakim Erdfelt
Diese werden aktiviert, in Steg/etc/jetty-ssl-Kontext.xm
InformationsquelleAutor user6263205