【发布时间】:2018-08-03 18:13:47
【问题描述】:
假设我有一个客户端,它为我提供数据库凭据,并且他们希望使用安全/加密的方式连接到数据库。他们还在他们的 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
)
但真的不知道为什么会这样,自签名证书是这样做的正确方法吗?
【问题讨论】:
-
你能澄清一下吗?如果已正确设置数据库,则 SSL 证书应该是有效的,并且建立安全连接应该像使用他们提供给您的数据库凭据一样简单。他们不应该给你任何额外的密钥或证书。
-
@rickjerrity 我在想你需要一些证书或密钥来在客户端和服务器之间建立安全的加密连接。是否有 php 代码来验证连接是否已加密?
-
我已经发布了您的问题的答案。如果您需要进一步澄清,请随时在此处编辑您的原始问题或评论/答案。
-
您不需要密钥,但您需要使用 OpenSSL 编译 php,以便 php 进行握手。
-
@rickjerrity 我在下面回复了您的回答
标签: php mysql database ssl pdo