让我们说我有一个为我提供数据库凭据的客户端,他们想使用安全/加密的方式连接到数据库。他们还在自己的mysql设置中启用了ssl。当他们给我他们的数据库信用时,我不想问他们密钥和证书。那么在不包含这些项目的情况下连接到客户端数据库时,是否可以通过ssl建立加密的安全连接?
更新: 所以在进一步修改之后
$db->ssl_set(NULL, NULL,'/path_to_self_signed_cert/ca.pem',NULL,'');
$db->real_connect('hostname','username','password','dbname',
'port'socket', MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);`
执行此操作后,我得到了想要的结果
$db->query("SHOW STATUS LIKE 'Ssl_cipher';");
显示密码算法,而不是空白
(
[0] => Ssl_cipher
[Variable_name] => Ssl_cipher
[1] => DHE-RSA-AES128-SHA
[Value] => DHE-RSA-AES128-SHA
)
但是真的不知道为什么会这样,自签名证书是这样做的正确方法吗?
答案 0 :(得分:1)
@rickjerrity我通过命令行连接到远程数据库,并通过运行\s
并说SSL: Cipher in use is DHE-RSA-AES256-SHA
来检查状态。但是,当我使用php并使用相同的凭据连接到相同的数据库时,它说密码为空。这是我用来连接到远程数据库的代码
$db = mysqli_init();
$db->real_connect('hostname','username','password','dbname');
$res = $db->query("SHOW STATUS LIKE 'Ssl_cipher';");
while ( $row = $res->fetch_array() ) {
print_r($row);
}
$db->close();
,响应为
[0] => Ssl_cipher
[Variable_name] => Ssl_cipher
[1] =>
[Value] =>
答案 1 :(得分:0)
除了数据库凭证之外,对于安全的数据库连接,不需要客户端证书或密钥。 PHP在连接时应验证SSL证书的完整性。就像您提到的那样,任何其他能够验证连接的加密状态的PHP方法都是出于理智。如果您显示一些特定的代码示例,我们也许可以提供进一步的帮助。