有没有可能在没有证书或密钥的情况下使用php通过ssl连接到远程mysql数据库?

0dxa2lsx  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(296)

假设我有一个客户端给我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
  )

但我不知道为什么这样做,一个自签名证书是正确的方法吗?

toiithl6

toiithl61#

@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] =>
ttygqcqt

ttygqcqt2#

除了数据库凭据之外,安全的数据库连接不需要客户端证书或密钥。php应该在连接时验证ssl证书的完整性。任何其他能够验证连接加密状态的php方法都是出于理智的考虑,就像您提到的那样。如果您展示一些特定的代码示例,我们可能会提供进一步的帮助。

相关问题