Php 如何在SSL下从PDO连接MySQL

Php 如何在SSL下从PDO连接MySQL,php,mysql,ssl,pdo,Php,Mysql,Ssl,Pdo,我已经在ubuntu服务器中配置了MySQLSSL show variables like "%ssl%"; +---------------+----------------------------+ | Variable_name | Value | +---------------+----------------------------+ | have_openssl | YES | | have_

我已经在ubuntu服务器中配置了
MySQL
SSL

show variables like "%ssl%";
+---------------+----------------------------+
| Variable_name | Value                      |
+---------------+----------------------------+
| have_openssl  | YES                        |
| have_ssl      | YES                        |
| ssl_ca        | /etc/mysql/ca-cert.pem     |
| ssl_capath    |                            |
| ssl_cert      | /etc/mysql/server-cert.pem |
| ssl_cipher    |                            |
| ssl_key       | /etc/mysql/server-key.pem  |
+---------------+----------------------------+
PHP脚本中当前的PDO连接如下所示:

try {
    $this->_conn = $this->dbh = new PDO('mysql:host=' . DB_SERVER . ';dbname='. DB_NAME, DB_USER, DB_PASS);
    $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Couldn't connect to database. Please try again!");
}
我试图在连接中添加此数组。但是,它不起作用

array(PDO::MYSQL_ATTR_SSL_KEY  => '/etc/mysql/client-key.pem',
      PDO::MYSQL_ATTR_SSL_CERT => '/etc/mysql/client-cert.pem',
      PDO::MYSQL_ATTR_SSL_CA   => '/etc/mysql/ca-cert.pem'
     );
现在的问题是:如何在安全连接(SSL)下连接MySQL数据库?我需要做哪些更改才能添加并使其安全

我已通过以下方式生成客户端和服务器证书:

openssl genrsa -out ca-key.pem 2048;
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem -out ca-cert.pem;
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem -out server-req.pem;
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem;
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem -out client-req.pem;
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem;
错误消息

SQLSTATE[HY000][2026]SSL连接错误:无法获取私钥


这些路径是服务器还是客户端上的
/etc/mysql/*.pem
路径?所有的客户机和服务器
.pem
文件都在这个路径下:
/etc/mysql
我看到了,但是这个路径/etc/mysql是在服务器的文件系统上还是在客户机的文件系统上?根据另一个问题,客户机证书和密钥必须存在于客户机的文件系统中。@Ronak Patel,我认为这看起来像;丈夫和妻子在卧室里和妻子聊天。那没用。那么,答案是什么?