你好, 我最近安装了与数据库关联的SSL证书,以保护数据库与Web服务器之间的数据传输安全。有关信息,我在Web服务器上使用MysqlServer(如BDD)和PDO进行请求。
我按照以下命令在MysqlServer上安装SSL证书:
sudo mysql_ssl_rsa_setup --uid=mysql
我还启用了此选项以保护所有交换(require_secure_transport = ON)。 因此,该安装在Mysql服务器端运行良好。
现在,当我想从Web服务器通过PDO连接到我的数据库时,可以使用以下方法:
<?php
//Connexion à la base de données.
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::MYSQL_ATTR_SSL_CA => "-----BEGIN CERTIFICATE-----
BLABLABLA
-----END CERTIFICATE-----
",
PDO::MYSQL_ATTR_SSL_CERT => "-----BEGIN CERTIFICATE-----
BLABLABLA
-----END CERTIFICATE-----
",
PDO::MYSQL_ATTR_SSL_KEY => "-----BEGIN RSA PRIVATE KEY-----
BLABLABLA
-----END RSA PRIVATE KEY-----
",
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,);
try
{
$bdd = new PDO('mysql:host=***;dbname=***;charset=utf8', '***', '***', $options);
}
catch(Exception $e)
{
echo "Problème de connexion à la base de données. Réessayez !";
exit();
}
?>
这里也一切正常,但是我想确保连接已加密。 因此,从PDO,我执行了以下命令:SHOW SESSION STATUS LIKE“ Ssl_cipher”; 我得到的是:DHE-RSA-AES256-SHA。所以一切都很好。但是,一旦我更改了证书(例如删除一些字母和数字),连接就始终是“安全的”。当我指出证书的位置不正确时,也是如此。因此,我的印象是,即使没有证书,PDO连接仍然是安全的。 你能为我澄清一下吗?
感谢您;)
答案 0 :(得分:0)
显然,在最新版本的Mysql中,传输中的数据加密无需证书(在客户端)。无论如何,都不需要用PDO指定它们。为什么? Mysql的行为类似于HTTPS站点(登录到站点时,您的计算机上不需要已经存在证书)。所以我们可以做这样的事情:
$options = [
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::MYSQL_ATTR_SSL_CA => true,
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
];
...