Java 如何修复错误\u SSL\u弱\u服务器\u临时\u DH\u密钥

Java 如何修复错误\u SSL\u弱\u服务器\u临时\u DH\u密钥,java,google-chrome,ssl,certificate,Java,Google Chrome,Ssl,Certificate,我有一个网站,最近chrome在尝试访问时开始返回此错误: 错误SSL\u弱服务器\u临时DH\u密钥 它是一个java+jsp网站,在ApacheTomcat上运行。它还使用Verisign认证,但我已经了解到错误与此证书无关 感谢您的帮助。您的服务器正在使用弱Diffie-Hellman密钥,因此可能会受到攻击的影响。由于这种攻击,越来越多的浏览器和TLS堆栈将DH密钥的最小长度增加到768或1024位。您在服务器中使用的OpenSSL版本可能默认使用512位DH密钥,这太小了。您需要通过在

我有一个网站,最近chrome在尝试访问时开始返回此错误:

错误SSL\u弱服务器\u临时DH\u密钥

它是一个java+jsp网站,在ApacheTomcat上运行。它还使用Verisign认证,但我已经了解到错误与此证书无关


感谢您的帮助。

您的服务器正在使用弱Diffie-Hellman密钥,因此可能会受到攻击的影响。由于这种攻击,越来越多的浏览器和TLS堆栈将DH密钥的最小长度增加到768或1024位。您在服务器中使用的OpenSSL版本可能默认使用512位DH密钥,这太小了。您需要通过在服务器配置中显式设置更大的DH密钥来解决此问题。具体操作方式取决于服务器,请参阅以获取详细信息。

如果您与Oracle签订了支持合同,您可以下载最新版本的Java 6/7,该版本将JSSE中的DHE加密提高到1024位。

有一个解决方法(警告:这会造成安全漏洞!

使用以下参数:

--cipher-suite-blacklist=0x0088,0x0087,0x0039,0x0038,0x0044,0x0045,0x0066,0x0032,0x0033,0x0016,0x0013
参数说明:

0x0088 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
0x0087 TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA
0x0039 TLS_DHE_RSA_WITH_AES_256_CBC_SHA
0x0038 TLS_DHE_DSS_WITH_AES_256_CBC_SHA
0x0044 TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA
0x0045 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
0x0066 TLS_DHE_DSS_WITH_RC4_128_SHA
0x0032 TLS_DHE_DSS_WITH_AES_128_CBC_SHA
0x0033 TLS_DHE_RSA_WITH_AES_128_CBC_SHA
0x0016 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
0x0013 SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
资料来源:


我可以通过将系统属性jdk.tls.ephemeralDHKeySize设置为1024(或2048)来解决此问题。

我通过以下方法解决了此问题:

总之,我编辑了server.xml

在连接器协议上,我更改了属性

Protocol="TLS"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA, 
TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256, 
TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"
为了

并添加了属性

Protocol="TLS"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA, 
TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256, 
TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"

谢谢,我正在跟随你链接的指南。我已经正确安装了ApacheTomcat的无限强度文件。但我被困在这一点上:生成一个独特的DH组。我不知道该怎么做,我需要下载一些东西吗?@Kai:需要的确切命令在“生成唯一的DH组”一节中清楚地显示出来:
openssl dhparam-out dhparams.pem 2048
,确切地说,但是。。。。请原谅我的无知,那句话我该怎么办。在cmd上尝试过,但没有任何作用,@Kai:这个命令会创建您以后需要的dhparams.pem文件。唯一适用的情况可能是Tomcat使用APR,否则一切都是用Java完成的,因此这是JSSE问题,没有任何到OpenSSL的链接。。。。或者Java 8,对于它,您当前不需要扩展支持契约。有一个(以及更好的默认值)。您好,您是如何设置系统属性的?您可以在启动时将其作为参数传递给JVM:-Djdk.tls.ephemeralDHKeySize=2048另请参见