目前我正在使用 Java 7,但无法连接到 LDAPS。我尝试使用下面的代码,但仍然无法连接:
SSLContext ctx = SSLContext.getInstance("TLSv1.2");
ctx.init(null, null, null);
SSLContext.setDefault(ctx);
以下是我从程序中得到的错误:
2018-04-10 15:21:23,446 INFO [stdout](EJB 默认 - 1)EJB 默认 - 1,写入:TLSv1.2 握手,长度 = 221
2018-04-10 15:21:23,446 INFO [stdout](EJB 默认 - 1)EJB 默认 - 1,阅读:TLSv1.2 警报,长度 = 2
2018-04-10 15:21:23,446 INFO [stdout](EJB 默认 - 1)EJB 默认 - 1,RECV TLSv1 ALERT:致命,handshake_failure
2018-04-10 15:21:23,446 INFO [stdout](EJB 默认 - 1)EJB 默认 - 1,称为 closeSocket()
2018-04-10 15:21:23,446 INFO [stdout](EJB 默认 - 1)EJB 默认 - 1,处理异常:javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure
之后我尝试运行协议测试来检查支持的协议:
Supported Protocols: 5
SSLv2Hello
SSLv3
TLSv1
TLSv1.1
TLSv1.2
Enabled Protocols: 1
TLSv1
我添加了以下行以禁用 TLSv1 并在以下位置启用 TLSv1.2 java.security
:
jdk.tls.disabledAlgorithms= SSLv3, SSLv2Hello, TLSv1, TLSv1.1
再次运行协议测试,结果是:
Supported Protocols: 5
SSLv2Hello
SSLv3
TLSv1
TLSv1.1
TLSv1.2
Enabled Protocols: 0
我已确认我的 LDAPS 服务器受支持并使用 TLSv1.2。我还在 Java 控制面板中启用了 TLS1.2,因为每当我尝试使用 TLSv1 时都会导致protocol_version
错误
我的问题是:
- 是什么
RECV TLSv1 ALERT: fatal, handshake_failure
? - 如何在支持的协议中启用 TLSv1.2?
- 编辑Java 7 或 8 是否支持密码套件:
ECDHE-ECDSA-AES256-GCM-SHA384
?
我正在使用 Java 1.7_80。