我试图在Java 8中禁用TLSv1.0
我已将TLSv1.0包含在以下行中,如下所示:JRE / lib / security / java.security
jdk.tls.disabledAlgorithms = SSLv3,RC4,MD5withRSA,DH,TLSv1.0
仍然,我在测试时从TLSv1.0获取了密码,但是当我配置其他版本(如TLSv1.1)时,我能够成功删除相应的密码
这可能是什么问题?
有没有办法删除JRE级别的特定密码?
答案 0 :(得分:2)
对于第一部分问题我可以通过修改如下所示的行来禁用TLSv1.0(使用TLSv1而不是TLSv1.0)
jdk.tls.disabledAlgorithms = SSLv3,RC4,MD5withRSA,DH,TLSv1
但我仍然想知道,有没有可能我可以在JRE级别禁用整个密码套件,例如,删除3个以下密码
.ipa
答案 1 :(得分:1)
您可以通过设置java选项
强制客户端使用特定协议-Djdk.tls.client.protocols=TLSv1.1,TLSv1.2
或者,如果要查找禁用特定密码,您可以尝试设置
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
在java.security文件中
答案 2 :(得分:1)
用TLSv1替换TLSv1.0,我测试没问题 jdk.tls.disabledAlgorithms = SSLv3,RC4,MD5withRSA,DH,TLSv1
测试方法 openssl s_client -connect ip:port -tls1
答案 3 :(得分:0)
您可以使用命令行参数来禁用TLSv1和所需的任何密码,例如:
java -Djava.security.properties=disabled_tlsv1.properties
文件disabled_tlsv1.properties
包含要禁用的密码列表,并且还支持协议,例如TLSv1
。我在下面列出的其余密码对于TLSv1.1被认为是不安全的。
这仍然使TLSv1.1仍然可以使用,因为它的某些密码仍处于启用状态。请注意,您也可以在JRE本身中执行此操作,以影响整个服务器(如问题本身所述)。
jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 768,TLSv1,TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_RC4_128_MD5,TLS_RSA_WITH_RC4_128_SHA
一个显示此消息的git存储库,以及如何验证TLSv1已禁用can be found here