gpt4 book ai didi

java - 如何强制 java 服务器只接受 tls 1.2 并拒绝 tls 1.0 和 tls 1.1 连接

转载 作者:太空狗 更新时间:2023-10-29 22:32:49 34 4
gpt4 key购买 nike

我有一个在 Java 7 上运行的 HTTPS 网络服务。我需要进行更改,以便此服务仅接受 TLS1.2 连接并拒绝 SSL3、TLS1.0 和 TLS1.1。

我添加了以下 Java 参数,使 TLS1.2 具有最高优先级。

-Dhttps.protocols=TLSv1.2

但它也接受来自 Java 客户端的 TLS1.0 连接。如果客户端也以上述 Java 参数运行,则连接为 TLS1.2,但如果客户端在没有此参数的情况下运行,则连接为 TLS1.0。

我对 jdk/jre/lib/security 文件夹中的 java.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 update 79。我不倾向于拦截每个连接并检查 TLS 版本。

我的服务器证书是使用 MD5 和 RSA 算法生成的 2048 位。

如果禁用的算法列表用 RSA 代替 RSA keySize < 2048,我会收到 SSLHandShakeError 错误消息:

no cipher suites in common.

我的测试程序正在运行来自以下 URL 的 HTTP 服务器: http://www.herongyang.com/JDK/HTTPS-HttpsEchoer-Better-HTTPS-Server.html

请帮助如何让 java 只接受 TLS1.2 连接。

最佳答案

我找到了一个解决方案。我设置了

jdk.tls.disabledAlgorithms= SSLv2Hello, SSLv3, TLSv1, TLSv1.1

在服务器上的文件 jre/lib/security/java.security 中。

设置后服务器只接受TLS1.2连接,拒绝低安全协议(protocol)版本。

关于java - 如何强制 java 服务器只接受 tls 1.2 并拒绝 tls 1.0 和 tls 1.1 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32466407/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com