注意:我解决了我在输入这个问题时遇到了一段时间的问题,我想知道我的解决方案是否
我的 sql 数据库连接出现“握手错误”错误。当我尝试实现我最近安装的 ssl 时,它就开始了。我从以下代码开始:
$init =mysqli_init();
$key="path/ftpd-rsa-key.pem";
$cert="path/ftpd-rsa.pem";
$ca="path/cert.pem";
mysqli_ssl_set($init, $key, $cert, $ca, NULL, NULL);
//This line was my original connection script, which was working.
//$connection = mysqli_connect("localhost", "username", "password", "database") or die(mysqli_connection_error());
if(!$connection = mysqli_real_connect($init,"localhost", "username", "password", "database"))
{
die("Connect Error: " . mysqli_connect_error());
}
我尝试了其他各种事情,包括 PDO、重建 Apache,以及切换 ssl 证书和密钥等。没有任何工作。最终,我尝试回到我使用的原始代码,然后实现 ssl:
$connection = mysqli_connect("localhost", "username", "password", "database") or die(mysqli_connection_error());
$key="path/ftpd-rsa-key.pem";
$cert="path/ftpd-rsa.pem";
$ca="path/cert.pem";
mysqli_ssl_set($connection, $key, $cert, $ca, NULL, NULL);
令我惊讶的是,这奏效了。我的页面现在看起来完全正常,没有“糟糕的握手”错误。但是,由于我没有找到任何以这种方式构建它的教程或材料,我想知道这是否真的安全。ssl 的全部目的是为了安全,这样做可以在没有 ssl 的情况下启动连接。那是问题吗?
此外,有关“错误握手”错误及其原因的任何信息都会很有用。如果我们可以创建/链接指南或对其的完整解释以及导致它的原因,那将对未来的程序员很有用,因为我在谷歌搜索时发现的建议解决方案范围从垃圾服务器到切换到 PDO 到降级mysql。