java - 在 JDK 1.7 中连接到 https 站点时出现问题

标签 java ssl java-7

我有两个问题,

1) 我在尝试连接到 JDK 1.7 中的服务器时遇到以下异常

javax.net.ssl.SSLProtocolException:违反协议(protocol):服务器发送了一个 用于 key 交换 RSA 的服务器 key 交换消息

服务器支持以下协议(protocol) - TLS_RSA_WITH_AES_256_CBC_SHA 和 TLS_RSA_WITH_AES_128_CBC_SHA

2) 我刚看到下面的链接,

Is TLS_RSA_WITH_3DES_EDE_CBC_SHA equivalent to SSL_RSA_WITH_3DES_EDE_CBC_SHA

这说明 TLS_RSA_WITH_3DES_EDE_CBC_SHA 和 SSL_RSA_WITH_3DES_EDE_CBC_SHA 是等效的。

但我发现当服务器在连接到它时支持“TLS_RSA_WITH_3DES_EDE_CBC_SHA”时 (JDK1.7),此密码套件未被选中,我与站点的连接失败。

另外请注意,我正在使用 Apache 的 httpclient 进行连接。

最佳答案

这是一个很好的链接,显示了 Java 1.7 支持的内容: https://www.ssllabs.com/ssltest/viewClient.html?name=Java&version=7u25

您的协议(protocol)之一 (TLS_RSA_WITH_AES_128_CBC_SHA) 被 Java 1.7 接受,但仅适用于 TLSv1.0 或更低版本。可能值得检查服务器是否已关闭支持,如果这只支持 TLSv1.1 或 TLSv1.2?您可以使用 server test在同一个网站上检查这个。

如果是这样,那么您需要升级到 Java 8。如果为您的 Java 应用程序使用 SSL/TLS,这可能是您应该考虑的事情,因为 PCI 已强制关闭 TLSv1.0,因此这将变得越来越多一个问题。

关于java - 在 JDK 1.7 中连接到 https 站点时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33360668/

相关文章:

java - 输入空行时退出java程序

java - IntelliJ 使用 Java 8 SDK 为 Java 7 JRE 编译

java - 自定义 Spring Boot 配置文件未在 IntelliJ 中激活

java - 在 Openshift 中配置 MySQL 连接

php curl到自签名证书url

javascript - 安全的 Javascript GET 请求

Javamail 无法将套接字转换为 TLS GMail

java - Windows 批处理文件 - 检查 JAVA_HOME 是否包含 java 7

java - JPA:迭代大型结果集的正确模式是什么?

java - 与 Java 类相比,使用表达式委托(delegate)有什么好处?