假设我有一个客户端给我db凭据,他们想用一个安全的/加密的连接到db。他们还在mysql设置中启用了ssl。当他们给我他们的数据库信用证,我不想问他们的钥匙和证书。那么,当连接到没有这些项目的客户机db时,是否有可能通过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
)
但我不知道为什么这样做,一个自签名证书是正确的方法吗?
2条答案
按热度按时间toiithl61#
@rickjerrity我通过命令行连接到我的远程数据库,并通过运行
\s
然后说SSL: Cipher in use is DHE-RSA-AES256-SHA
. 但是当我使用php连接到同一个数据库并使用相同的凭据时,它会说密码是空的。下面是我用来连接到远程数据库的代码答案是
ttygqcqt2#
除了数据库凭据之外,安全的数据库连接不需要客户端证书或密钥。php应该在连接时验证ssl证书的完整性。任何其他能够验证连接加密状态的php方法都是出于理智的考虑,就像您提到的那样。如果您展示一些特定的代码示例,我们可能会提供进一步的帮助。