Доброго времени года!
При попытке установить соединение с удалённым сервером через PDO с SSL вот так
try{
$db = new PDO("mysql:host=db.server.ru;dbname=testbase",
'ssluser',
'pass',
[
PDO::MYSQL_ATTR_SSL_KEY => VARS . '/certs/client-key.pem',
PDO::MYSQL_ATTR_SSL_CERT => VARS . '/certs/client-cert.pem',
PDO::MYSQL_ATTR_SSL_CA => VARS . '/certs/ca.pem'
]
);
} catch(PDOException $ex){
var_dump($ex->getMessage());
echo "\r\n";
}
Получаю ошибку SQLSTATE[HY000] [2002] без остального текста. Скорее всего там Connection refused.
На сервере стоит mariadb.
Сертификаты генерил
так. Common name у сертификатов разные.
При выполнении на сервере, на котором исполняется скрипт с ошибкой, команды в консоли
mysql -h db.server.ru -ussluser -p --ssl-ca=/var/www/.../var/certs/ca.pem --ssl-cert=/var/www/.../var/certs/client-cert.pem --ssl-key=/var/www/.../var/certs/client-key.pem
подключение происходит нормально, без ошибок.
Каталог с сертификатами выглядит так
drwxrwxrwx 2 apache apache 4096 Mar 15 13:40 .
drwxrwxrwx 11 root root 4096 Mar 15 13:40 ..
-rwxrwxrwx 1 apache apache 1679 Mar 16 18:14 ca-key.pem
-rwxrwxrwx 1 apache apache 1285 Mar 16 18:14 ca.pem
-rwxrwxrwx 1 apache apache 1155 Mar 16 18:14 client-cert.pem
-rwxrwxrwx 1 apache apache 1675 Mar 16 18:14 client-key.pem
-rwxrwxrwx 1 apache apache 985 Mar 16 18:14 client-req.pem
-rwxrwxrwx 1 apache apache 1155 Mar 16 18:14 server-cert.pem
-rwxrwxrwx 1 apache apache 1679 Mar 16 18:14 server-key.pem
-rwxrwxrwx 1 apache apache 985 Mar 16 18:14 server-req.pem
Логи мускуля по этому подключению ничего не показывают. Логи такие: log_error и general_log_file.
Система Centos. В логах messages и secure по этому поводу тоже нет ничего.