当前位置: 首页 > 面试题库 >

Java 7是否支持SSL / TLS中的AES-GCM?

周睿范
2023-03-14
问题内容

根据Java 7文档以及第三方供应商的说法,似乎Java 7应该支持AES-GCM套件:

  1. IBM Java 7
  2. Java 7 SSL文档

客户端和服务器之间的协商中遇到一些错误,由于仅将其限制为AES-
GCM密码而无法协商密码。经过调查,我发现客户端或服务器(tomcat实例)均不支持密码套件。在客户端上运行一些示例代码以获取输出:

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

不知道是否有人遇到过这样的问题。

Java 7是否支持在SSL / TLS中使用AES-GCM?


问题答案:

TLS v1.2中提供了AES-GCM。请参阅[传输层安全性(TLS)协议版本1.2]
[1],第6.2.3.3节。TLSv1.1没有添加任何密码套件,并且TLSv1.0从未具有AES-
GCM或椭圆曲线齿轮。(在TLSv1.2中也显示了椭圆曲线)。

Java 7的最新公共构建80

  • 在更改要SSLContext.getInstance("TLSv1.2")在套接字编程的情况下使用的代码或仅-Dhttps.protocols=TLSv1.2在HTTP编程的情况下声明的代码之后,确实支持TLSv1.2 。

  • 根据仅在Java 7的商业版本191中实现的请求,即使在TLSv1.2下也不支持AES-GCM密码套件。

https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8180834

有趣的是,TLS_ECDHE_ECDSA_*密码套件在您的转储中显示,因为它们是TLSv1.2密码。



 类似资料:
  • 问题内容: 由于Android当前不支持java7,我发现自己想知道他们是否在致力于支持Java7? 问题答案: 令我印象深刻的是,Android并未使用oracle java,而是使用了部分和谐的java:http : //en.wikipedia.org/wiki/Apache_Harmony#Use_in_Android_SDK http://arstechnica.com/open-sou

  • 我在演戏!(2.2.1,Java)应用程序,我希望允许: 客户端证书-只有使用客户端证书的客户端身份验证才能使用应用程序API 服务器端证书–客户端必须能够通过其受信任的CA列表对服务器提供的证书进行身份验证 你在玩什么!这样做的最佳实践? 另外,你知道Play!使用什么加密算法吗?(TLS1.2, 1.1, 1.0、SSL 3.0、SSL 2.0等),如果它不使用TLS 1.2,我可以强制Pla

  • 我想知道apache cxf 3.1.6是否支持TLS1.2 我查看了Apache的文档,没有发现与TLS1相关的信息。2.http://cxf.apache.org/docs/tls-configuration.html 我还尝试将SecureSocketProtocol设置为TLSv2,但最终在日志中获得了TLSv2 SSLContext不可用。 在这方面的任何帮助都将不胜感激。

  • 我有一个简单的TCP服务器/客户端设置。这种连接实际上效果很好。 现在,我想为套接字连接实现SSL/TLS加密。我使用密钥链访问创建了PKCS12证书。在我的服务器中,accept回调中包含以下代码: 然后我创建流的实例,并在另一个类中处理它们。 当我运行服务器并连接客户端时,我会在委托中获得常规的nsstreamventopencompleted。如果我只是关闭连接,那么当我尝试写入流或事件时,

  • 我需要在JAX-WS中通过客户端连接到外部服务器。客户端在Wildfly 8上运行。使用Java8连接是正常的。但我在Java7中连接到服务器时遇到了问题(我尝试了u45、67、79)。服务器端安全性的属性为https://www.ssllabs.com/ssltest/analyze.html?d=app.bundesnetzagentur.de 在部分“密码套件”中有四个密码。源代码不应支持J

  • 支持哪些版本的Java? 但是,生成失败,出现以下消息: