问题描述 投票:0回答:5

Java7 SSLDoc

  1. I在客户端和服务器之间的谈判中遇到了一些错误,因为仅将密码限制在AES-GCM密码中,因此无法协商密码。 经过调查,我发现看来Cipher套件在客户端或服务器上不支持(Tomcat实例)。 在客户端上运行一些示例代码以获取输出:
  2. // 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 :
  3. 不知道是否有人遇到过这样的问题。 does Java 7支持使用AES-GCM在SSL/TLS中使用AES-GCM?
在Java7

的sunjsse提供商中没有GCM密码套件(假设Oracle JRE),尽管它支持TLS 1.2.2. 这些已在Java8

中引入了这些(请参阅“ Sunjsse Providers”部分中的密码套件表)。
1.8.0-ea-b124    
Connecting with 71 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_AES_128_GCM_SHA256 ********* 
 ********* TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ********* 
 ********* TLS_RSA_WITH_AES_128_GCM_SHA256 ********* 
 ********* TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 ********* 
 ********* TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 ********* 
 ********* TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 ********* 
 ********* TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 ********* 
 ********* 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_GCM_SHA256 ********* 
 ********* 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 ********* 

其他人说,Java 1.7不支持该密码,但是,如果您有可能调整Java安装,则可以添加安全提供者。 这里的步骤:

java security ssl aes
5个回答
14
投票
Editfile lib/security/java。

security.provider.1 = org.bouncycastle.jce.provider.bouncycastleprovider -security.provider.2 =org.bouncycastle.jsse.provider.bouncycastlejsseprovider

通过添加2个(so security.provider.1 = sun.security.provider.sun变为安全。 这一切,现在应该起作用

tls v1.2中可用AAES-GCM。请参阅[传输层安全性(TLS)协议版本1.2] [1],第6.2.3.3节。 TLSV1.1没有添加任何密码套件,TLSV1.0从未有AES-GCM或椭圆曲线齿轮。 (椭圆曲线在TLSV1.2中也出现)。
最新的公共建筑Java7

8
投票

在更改代码后,支持TLSV1.2在插座编程的情况下使用代码,或者在HTTP编程的情况下只是声明
    SSLContext.getInstance("TLSv1.2")
  1. -Dhttps.protocols=TLSv1.2
  2. 根据仅在Java 7的商业版本中实施的请求,即使在TLSV1.2下,也不支持AES-GCM密码套件。
    https://bugs.java.com/bugdatabase/view_bug.do?bug_id =8180834
    有趣的是,由于TLSV1.2 Ciphers。
Oracle JDK和OpenJDK都开始支持Java 8中的GCM密码。

对于OpenJDK,请参阅

5
投票

对于Oracle JDK,请参阅

JDK8 Security Enhancements

和JDK8
  • 
    
    这个答案刚从@dandfra的答案中得出,但没有添加或修改Java jre lib/ext。如果您将同一Java库用于多个应用程序,这可能很有用,并且不会影响任何应用程序。
    
    首先,将弹性播种到pom.xml

  • TLS_ECDHE_ECDSA_*
  • 当Java程序启动时,将其添加到Java。

    <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.59</version> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bctls-jdk15on</artifactId> <version>1.59</version> </dependency>

    注意,使用ProviderList list = Providers.getFullProviderList(); list = ProviderList.insertAt(list, new BouncyCastleProvider(), 0); list = ProviderList.insertAt(list, new BouncyCastleJsseProvider(), 0); Providers.setProviderList(list);

    将不起作用,因为它只是在最终附加了提供商。
  • Security.addProvider

您可以使用

Security.addProvider(new BouncyCastleProvider());
Security.addProvider(new BouncyCastleJsseProvider());
.

来验证它。

4
投票
最近,我最近与Java在一起,这个密码套房最近有很多。

从我的经验中,您需要无限制的策略文件来获取一些额外的套房。我不记得我的头顶了,如果使用这些会让您获得GCM密码,但是从我对IBM Java的回忆中,它至少让我获得了AES256位密码。 this

link
    表明,您至少可以使用TLSV1.2初始化SSLContext(因此,您应该至少能够支持所有不需要无限派遣策略文件的TLSV1.2密码套件) 在我看不到我看过的一些链接之前,我看不到Oracle的密码套件列表上的任何GCM密码!
  • 启用/支持的 - 核心suites. 这些链接中有一些帮助您!
  • (我在工作用完时要打字,所以如果我错过了任何GCM密码,请原谅我:)) 在ADD支持AES-GCM的TLS中已经讨论了这个问题。 您需要使用弹力城堡提供的外部图书馆,以便在握手中访问AES-GCM密码。 所需的库是BCTLS-JDK15TO18-1.80.JAR,其中包含与SSL和Bouncycastlejsseprovider相关的所有内容,但您可能还需要添加BCPROV-JDK15TO18-1.80.JAR。 Java 7)
请看,请看一下此评论

2
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.