您好,我最近安装了与数据库关联的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连接仍然是安全的。你能为我澄清一下吗?
谢谢 ;)
显然,在最新版本的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,
];
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句