Java 7 Unterstützung von AES-GCM in SSL/TLS?
Nach Java-7-Dokumentation als auch als third-party-Anbieter, es erscheint Java 7 unterstützt die AES-GCM-Suiten:
Ich wurde schlagen einige Fehler in der Verhandlung zwischen client und server nicht in der Lage zu verhandeln eine Chiffre aufgrund der Beschränkung auf nur AES-GCM-Chiffren. Nach der Untersuchung fand ich, dass es scheint, dass die cipher suites werden nicht unterstützt, auf client-noch server (tomcat-Instanz). Lief einige Beispiel-code auf den client zu Holen Sie sich die Ausgabe:
//Create an SSLContext that uses our TrustManager
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, trustAllCerts, new SecureRandom());
SSLParameters params = context.getSupportedSSLParameters();
String[] suites = params.getCipherSuites();
System.out.println("Java version : " + System.getProperty("java.runtime.version"));
System.out.println("Connecting with " + suites.length + " cipher suites supported:");
for (int i = 0; i < suites.length; i++) {
System.out.println();
System.out.print(" ********* ");
System.out.print(suites[i]);
System.out.print(" ********* ");
}
Java version: 1.7.0_51-b13
Connecting with 63 cipher suites supported:
********* TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 *********
********* TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 *********
********* TLS_RSA_WITH_AES_128_CBC_SHA256 *********
********* TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 *********
********* TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 *********
********* TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 *********
********* TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 *********
********* TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA *********
********* TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA *********
********* TLS_RSA_WITH_AES_128_CBC_SHA *********
********* TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA *********
********* TLS_ECDH_RSA_WITH_AES_128_CBC_SHA *********
********* TLS_DHE_RSA_WITH_AES_128_CBC_SHA *********
********* TLS_DHE_DSS_WITH_AES_128_CBC_SHA *********
********* TLS_ECDHE_ECDSA_WITH_RC4_128_SHA *********
********* TLS_ECDHE_RSA_WITH_RC4_128_SHA *********
********* SSL_RSA_WITH_RC4_128_SHA *********
********* TLS_ECDH_ECDSA_WITH_RC4_128_SHA *********
********* TLS_ECDH_RSA_WITH_RC4_128_SHA *********
********* TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA *********
********* TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA *********
********* SSL_RSA_WITH_3DES_EDE_CBC_SHA *********
********* TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA *********
********* TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA *********
********* SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA *********
********* SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA *********
********* SSL_RSA_WITH_RC4_128_MD5 *********
********* TLS_EMPTY_RENEGOTIATION_INFO_SCSV *********
********* TLS_DH_anon_WITH_AES_128_CBC_SHA256 *********
********* TLS_ECDH_anon_WITH_AES_128_CBC_SHA *********
********* TLS_DH_anon_WITH_AES_128_CBC_SHA *********
********* TLS_ECDH_anon_WITH_RC4_128_SHA *********
********* SSL_DH_anon_WITH_RC4_128_MD5 *********
********* TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA *********
********* SSL_DH_anon_WITH_3DES_EDE_CBC_SHA *********
********* TLS_RSA_WITH_NULL_SHA256 *********
********* TLS_ECDHE_ECDSA_WITH_NULL_SHA *********
********* TLS_ECDHE_RSA_WITH_NULL_SHA *********
********* SSL_RSA_WITH_NULL_SHA *********
********* TLS_ECDH_ECDSA_WITH_NULL_SHA *********
********* TLS_ECDH_RSA_WITH_NULL_SHA *********
********* TLS_ECDH_anon_WITH_NULL_SHA *********
********* SSL_RSA_WITH_NULL_MD5 *********
********* SSL_RSA_WITH_DES_CBC_SHA *********
********* SSL_DHE_RSA_WITH_DES_CBC_SHA *********
********* SSL_DHE_DSS_WITH_DES_CBC_SHA *********
********* SSL_DH_anon_WITH_DES_CBC_SHA *********
********* SSL_RSA_EXPORT_WITH_RC4_40_MD5 *********
********* SSL_DH_anon_EXPORT_WITH_RC4_40_MD5 *********
********* SSL_RSA_EXPORT_WITH_DES40_CBC_SHA *********
********* SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA *********
********* SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA *********
********* SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA *********
********* TLS_KRB5_WITH_RC4_128_SHA *********
********* TLS_KRB5_WITH_RC4_128_MD5 *********
********* TLS_KRB5_WITH_3DES_EDE_CBC_SHA *********
********* TLS_KRB5_WITH_3DES_EDE_CBC_MD5 *********
********* TLS_KRB5_WITH_DES_CBC_SHA *********
********* TLS_KRB5_WITH_DES_CBC_MD5 *********
********* TLS_KRB5_EXPORT_WITH_RC4_40_SHA *********
********* TLS_KRB5_EXPORT_WITH_RC4_40_MD5 *********
********* TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA *********
********* TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5 ********* INFO - Received response from post device of :
Wusste nicht, ob sonst noch jemand über so ein Problem.
Nicht Java 7 unterstützt die Verwendung von AES-GCM in SSL/TLS?
Du musst angemeldet sein, um einen Kommentar abzugeben.
AES-GCM ist in TLS v1.2. Siehe [Transport Layer Security (TLS) Protocol, Version 1.2][1], Abschnitt 6.2.3.3. TLSv1.1 nicht alle cipher suites, und TLSv1.0 nie hatte AES-GCM oder die elliptische Kurve Getriebe. (Die elliptische Kurve Zeug, zeigte sich in TLSv1.2).
Die aktuelle öffentliche build 80 von Java 7
SSLContext.getInstance("TLSv1.2")
im Falle der socket-Programmierung oder einfach nur die Deklaration der-Dhttps.protocols=TLSv1.2
im Falle von HTTP-Programmierung.nicht die Unterstützung der AES-GCM-cipher-suite auch unter TLSv1.2, nach einer Anfrage implementiert, nur in einem kommerziellen build 191 von Java 7,
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8180834
Seine interessant, dass die
TLS_ECDHE_ECDSA_*
cipher-Suiten zeigen sich in Ihrem dump, da Sie TLSv1.2 Chiffren.Es gibt keine GCM-cipher-suites in der SunJSSE Anbieter von Java 7 (unter der Annahme einer Oracle JRE), obwohl es unterstützt TLS 1.2.
Diese wurden eingeführt in Java 8 (siehe cipher-suite-Tabelle in der "Die SunJSSE Anbieter" Abschnitt).
Sowohl Oracle-JDK und OpenJDK zu starten, um support-GCM-Cipher in java 8.
Ich habe seit kurzem Herumspielen mit Java und diese cipher-suite-Unsinn ganz ein bisschen kürzlich.
Aus meiner Erfahrung, müssen Sie die unlimited policy Dateien, um einige zusätzliche Suiten. Ich kann mich nicht erinnern aus der Spitze mein Kopf, wenn Sie diese verwenden, erhalten Sie die GCM-Chiffre, aber aus meiner Erinnerung mit IBM java es zumindest, hab mir die AES256-bit-Chiffren.
Diese link zeigt, dass man zumindest die Initialisierung eines SSLContext mit TLSv1.2 (so sollten Sie in der Lage sein, mindestens alle Unterstützung TLSv1.2 cipher suites, die nicht die unbegrenzte jurisditcion policy-Dateien)
Haben einen Blick auf einige der links habe ich mir angeschaut, bevor ich sehe keine GCM-Chiffren, die auf die oracle-cipher-suite-Liste! orace-aktiviert/unterstützt-cipher-suites.
Hoffentlich einige dieser links Ihnen helfen!
(Ich Schreibe dies während der Ausführung von arbeiten, so verzeihen Sie mir, wenn ich verpasst gcm-Verschlüsselungen 🙂 )
Als andere, sagte Java 1.7 nicht unterstützt, dass cipher aber, wenn Sie die Möglichkeit haben, zu optimieren Ihrer java-installation können Sie die Sicherheit Anbieter.
Hier die Schritte:
-security.Anbieter.2=org.bouncycastle.jsse.Anbieter.BouncyCastleJsseProvider
So, jetzt sollte es funktionieren