Настройте SSL для PDO-MySQL на Fedora

Я хочу настроить SSL для MySQL на Fedora. Я использую PDO в качестве MySQL-коннектора в PHP. Но это не работает.

PHP-версия (php -v):

PHP 5.6.6 (cli) (построено: 19 февраля 2015 13:46:39)

Когда я проверяю php -m Я получаю длинный список, в том числе openssl, PDO, pdo_mysql, mysql.

В /etc/my.cnf Я добавил «ssl» и три сертификата (CA-корень, закрытый ключ, сертификат). Я перезапустил MySQL и Apache.

Pdo-разъем это:

function getDBConn() {
return new PDO(
'mysql:host=localhost; dbname=forum',
user,
pass,
array(
PDO::MYSQL_ATTR_SSL_KEY => path_to_same_as_in_my.cnf.key,
PDO::MYSQL_ATTR_SSL_CERT => path_to_same_as_in_my.cnf.crt,
PDO::MYSQL_ATTR_SSL_CA => path_to_same_as_in_my.cnf.crt
)

}

Но на страницах, которые подключаются к базе данных, я получаю следующие ошибки:

Warning: PDO::__construct(): this stream does not support SSL/crypto in /var/www/html/functions.php on line 78
Warning: PDO::__construct(): cannot connect to MySQL by using SSL in /var/www/html/functions.php on line 78
Warning: PDO::__construct(): [2002] (trying to connect via unix:///var/lib/mysql/mysql.sock) in /var/www/html/functions.php on line 78
FATAL ERROR: Uncaught exception 'PDOException' with message 'SQL:STATE[HY000][2002]' in /var/www/html/functions.php:78 Stack trace .....

У кого есть решение для этого?

0

Решение

Все, что вам нужно, это для PDO MySQL с использованием SSL

<?php
$pdo = new PDO('mysql:host=ip;dbname=db', 'user', 'pass', array(
PDO::MYSQL_ATTR_SSL_KEY    =>'/etc/mysql/ssl/client-key.pem',
PDO::MYSQL_ATTR_SSL_CERT=>'/etc/mysql/ssl/client-cert.pem',
PDO::MYSQL_ATTR_SSL_CA    =>'/etc/mysql/ssl/ca-cert.pem'
)
);
$statement = $pdo->query("SHOW TABLES;");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);
?>

Другая большая причина, по которой вы получаете ошибку, заключается в том, что у вас может не быть openssl установлены.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]