mar*_*nov 6 php ssl mysqli openssl codeigniter
我通过SSL连接到我的数据库Google Cloud SQL.虽然mysqli驱动程序有点修改以允许此功能,但我使用codeigniter 3.0来执行此操作.
它已经好几个月了.但是它刚刚开始返回此警告:
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
Run Code Online (Sandbox Code Playgroud)
我假设DH Key is too small
是主要问题,但我不知道这意味着什么.我用Google搜索了Diffie-Hellman密钥交换,以及"密钥太小"的消息,但我没有太多运气.
这是服务器上的密钥被篡改的标志吗?我已经检查了它们的最后修改日期 - 没有异常的最近访问.
可能是我的服务器做了一些升级到PHP或他们的服务器配置,这可能导致这种破坏,但我想检查并确保它不是别的东西.
感谢您对该主题的任何见解/可读材料.
jww*_*jww 10
Run Code Online (Sandbox Code Playgroud)... error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small
您感兴趣的错误号是OpenSSL错误0x14082174.
在SSL3_CHECK_CERT_AND_ALGORITHM
使出口级密码时,通常出现.由于Logjam,它可能会在非出口级别谈判中再次出现(见下文).
我假设DH Key太小是主要问题,但我不知道这意味着什么.我用Google搜索了Diffie-Hellman密钥交换,以及"密钥太小"的消息,但我没有太多运气.
这是由于最近Logjam的攻击来自文章" 不完美的前瞻性保密:Diffie-Hellman如何在实践中失败".
您应该使用2048位Diffie-Hellman组或更大的组.您不应该使用512位或1024位Diffie-Hellman组.
要检查的第一件事是你的密码列表字符串.它应该类似于:
"HIGH:!aNULL:!MD5:!RC4"
Run Code Online (Sandbox Code Playgroud)
它将避免出口级密码,并使用现代密码.但是您还需要确保您的DH回调不使用弱/小字段大小.为此,您需要检查服务器配置.
有些人正在"解决"这个问题kRSA
.kRSA
是一个关键的运输方案,而不是一个关键的协议方案.RSA密钥传输方案不提供前向保密,并且通常不鼓励使用它.事实上,它将从TLS 1.3中删除.
我只能说"通常气馁",因为它取决于受保护的数据.如果你有SSL/TLS来保护公共文件的下载,那么它可能可以使用.如果您的网站有登录,那么使用它可能有点冒险,因为密码是秘密数据(与可公开下载的文件不同).
为避免密钥传输并通过Qualsys SSL Labs测试以进行Web服务器配置和转发保密,请使用:
"HIGH:!aNULL:!kRSA:!MD5:!RC4"
Run Code Online (Sandbox Code Playgroud)
在您的Apache配置文件中,它看起来像这样:
# cat /etc/httpd/conf.d/ssl.conf | grep SSLCipherSuite
# SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCipherSuite HIGH:!aNULL:!kRSA:!MD5:!RC4
Run Code Online (Sandbox Code Playgroud)
wget
在报纸发布之前的某段时间,我似乎回想起被拒绝的小团体.它可能会为您的网站提供一个很好的测试用例.
还有一个改进的sslscan,可以测试很多东西.这也可能是一个很好的QA工具.