SSL操作失败,代码1:dh密钥太小
我正在通过SSL连接到数据库Google Cloud SQL。我使用codeigniter
3.0进行了此操作,尽管mysqli驱动程序进行了一些修改以允许此功能。
几个月来一直运作良好。但是,它 刚刚 开始返回此警告:
Message: mysqli::real_connect(): SSL operation failed with code 1. OpenSSL Error messages: error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small
我认为这DH Key is too small
是主要问题,但我不知道那是什么意思。我已经搜索了Diffie-
Hellman密钥交换以及“密钥太小”消息,但是运气不高。
这是否表明服务器上的密钥已被篡改?我检查了它们的上次修改日期-最近没有异常访问。
可能是我的服务器进行了一些升级到PHP或它们的服务器配置,这可能会导致此中断,但是我想检查并确保它不是其他内容。
感谢您提供有关该主题的任何见识/可读材料。
回答:
... error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too
small
您感兴趣的错误号是OpenSSL错误0x14082174。
在SSL3_CHECK_CERT_AND_ALGORITHM
使出口级密码时,通常出现。由于Logjam,它可能会再次出现在非出口级谈判中(见下文)。
我以为DH Key太小是主要问题,但是我不知道这意味着什么。我已经搜索了Diffie-Hellman密钥交换以及“密钥太小”消息,但是运气不高。
这是由于《不完美的前向机密:Diffie-Hellman如何在实践中失败》一文中最近的Logjam攻击所致。
您应该使用2048位Diffie-Hellman组或更大的组。你应该 使用512位或1024位Diffie-Hellman组进行。
首先要检查的是您的密码列表字符串。它应该类似于:
"HIGH:!aNULL:!MD5:!RC4"
它将避免使用出口级密码,并使用现代密码。但是,您还需要确保DH回调不使用弱/小字段大小。为此,您需要检查服务器配置。
有些人正在用“解决”这个问题kRSA
。kRSA
是关键的 方案,而不是关键的
方案。RSA密钥传输方案不提供前向保密性,通常不鼓励使用它。实际上,它将从TLS 1.3中删除。
我只能说 “通常不鼓励”, 因为这取决于要保护的数据。如果您具有SSL /
TLS来保护公共文件的下载,则可以使用它。如果您的网站具有登录名,则使用它可能会有一点风险,因为密码是秘密数据(与可公开下载的文件不同)。
为避免密钥传输并通过那些Qualsys SSL Labs测试的Web服务器配置和保密性,请使用:
"HIGH:!aNULL:!kRSA:!MD5:!RC4"
在您的Apache配置文件中,它看起来像这样:
# cat /etc/httpd/conf.d/ssl.conf | grep SSLCipherSuite# SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCipherSuite HIGH:!aNULL:!kRSA:!MD5:!RC4
我似乎记得wget
在论文发表前一段时间曾拒绝过小团体。这可能是您网站的一个很好的测试案例。
还有一个改进的sslscan,可以测试很多东西。这也可能是一个很好的质量检查工具。
以上是 SSL操作失败,代码1:dh密钥太小 的全部内容, 来源链接: utcz.com/qa/435659.html