如何强制 Java 服务器仅接受 tls 1.2 并拒绝 tls 1.0 和 tls 1.1 连接
我有一个在Java 7上运行的HTTPS Web服务。我需要进行更改,以便此服务仅接受TLS1.2连接并拒绝SSL3,TLS1.0和TLS1.1。
我添加了以下Java参数,以便TLS1.2是最高优先级。
-Dhttps.protocols=TLSv1.2
但它也接受来自 Java 客户端的 TLS1.0 连接。如果客户端也在使用上述 Java 参数运行,则连接为 TLS1.2,但如果客户端在没有此参数的情况下运行,则连接为 TLS1.0。
我对文件夹中的文件进行了一些播放。java.security
jdk/jre/lib/security
我目前有以下禁用的算法:
jdk.certpath.disabledAlgorithms= MD2, MD4, MD5, SHA224, DSA, EC keySize < 256, RSA keySize < 2048, SHA1 keysize < 224
jdk.tls.disabledAlgorithms=DSA, DHE, EC keySize < 256, RSA keySize < 2048, SHA1 keysize < 224
我使用的是 Java 7 更新 79。我不倾向于拦截每个连接并检查TLS版本。
我的服务器证书是使用带有 RSA 算法的 MD5 生成的 2048 位。
如果禁用的算法列表有 RSA 代替 RSA 键大小 < 2048,我收到 with 错误消息:SSLHandShakeError
没有共同的密码套件。
我的测试程序正在从以下 URL 运行 HTTP 服务器:http://www.herongyang.com/JDK/HTTPS-HttpsEchoer-Better-HTTPS-Server.html
请帮助如何使java只接受TLS1.2连接。