如何强制java服务器只接受TLS1.2并拒绝TLS1.0和TLS1.1连接
我有一个运行在Java7上的HTTPS web服务。我需要进行更改,以便此服务只接受TLS1.2连接并拒绝SSL3、TLS1.0和TLS1.1 我添加了以下Java参数,因此TLS1.2是最高优先级如何强制java服务器只接受TLS1.2并拒绝TLS1.0和TLS1.1连接,java,security,ssl,https,Java,Security,Ssl,Https,我有一个运行在Java7上的HTTPS web服务。我需要进行更改,以便此服务只接受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.securit
-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
jdk.certpath.disabledAlgorithms=MD2、MD4、MD5、SHA224、DSA、EC-keySize<256、RSA-keySize<2048、SHA1-keySize<224
jdk.tls.disabledAlgorithms=DSA、DHE、EC密钥大小<256、RSA密钥大小<2048、SHA1密钥大小<224
我正在使用Java7更新79。我不倾向于截取每个连接并检查TLS版本
我的服务器证书是用MD5和RSA算法生成的2048位
如果禁用的算法列表使用RSA代替RSA keySize<2048,我会得到SSLHandShakeError
,并显示错误消息:
没有共同的密码套件
我的测试程序正在从以下URL运行HTTP服务器:
请帮助我们如何让java只接受TLS1.2连接。我找到了一个解决方案。我设定了
jdk.tls.disabledAlgorithms= SSLv2Hello, SSLv3, TLSv1, TLSv1.1
在服务器上的文件jre/lib/security/java.security
中
设置此选项后,服务器只接受TLS1.2连接,并拒绝较低安全性的协议版本。只是一个小注释
在问题中,您声明您使用MD5生成了2048大小的证书。但是在cert path alg中,您禁用了MD5,因此这通常不起作用。其次,现代浏览器(如InternetExplorer10/Edge)禁止使用MD5哈希生成的服务器证书
我建议您至少使用SHA256或
jdk.tls.disabledAlgorithms=SSL、SSLv2、SSLv3、TLSv1、TLSv1.1、MD5、SSLv3、DSA、RSA keySize<2048是否
SSLContext.getInstance(“TLSv1.2”)
起作用?@user5266804否,不起作用。SSLContext.getInstance
方法基本上将SSL
或TLS
作为参数。我敢打赌,在幕后,Sun提供商甚至不关心您传递的字符串:您总是得到JSSE提供的“TLS引擎”。在哪里设置?您需要在“java.security”中设置它您可以在/jre/lib/security文件夹中找到的文件。在jdk/jre/lib/security中更改此文件后,是否需要重新编译我的应用程序?此更改不需要重新编译,因为它不是代码更改。我使用以下属性jdk.tls.disabledAlgorithms=EC,ECDHE,DHE,TLSv1.2,SSLv3,RSA keySize<2048但当我获得GetSupportedCipherSuite()时,它也会显示禁用的密码“但一些客户端仍然能够使用SSL协议调用我的服务。”我喜欢这个。