如何验证PDO的连接是否有SSL?

问题描述 投票:0回答:1

你好我最近安装了一个与我的数据库相关联的SSL证书,以确保我的数据库和我的Web服务器之间的数据传输。作为参考,我使用MysqlServer(如BDD)和PDO在我的Web服务器上进行请求。

我按照这些命令在MysqlServer安装了一个SSL证书。

sudo mysql_ssl_rsa_setup --uid=mysql

我还启用了这个选项来保证所有交换的安全(require_secure_transport = ON).所以在Mysql服务器端安装工作非常顺利。

现在,当我想通过PDO从我的Web服务器连接到我的数据库时,我使用这个。

<?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的连接也是安全的。

谢谢你;)

php mysql sql ssl pdo
1个回答
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,
];
...
© www.soinside.com 2019 - 2024. All rights reserved.