Ошибка удаленного подключения MySQL SSL: невозможно получить закрытый ключ
Я пытаюсь написать PHP-скрипт (размещенный на VPS с GoDaddy), который подключается к удаленной базе данных MySQL (размещенной на экземпляре Amazon EC2) с помощью SSL.
я сгенерировал несколько сертификатов (по состоянию на http://dev.mysql.com/doc/refman/5.0/en/creating-ssl-certs.html) и настроен мой.cnf в базе данных remote / server так:
[mysqld]
ssl-ca =/etc/mysql/ca-cert.pem
ssl-cert =/etc/mysql/server-cert.pem
ssl-key =/etc/mysql/server-key.pem
[client]
ssl-ca =/etc/mysql/ca-cert.pem
ssl-cert =/etc/mysql/client-cert.pem
ssl-key =/etc/mysql/client-key.pem
конфигурация работает на стороне remote / server (то есть php-скрипт работает локально к удаленной базе данных можно установить соединение с помощью сгенерированных SSL сертификатов).
однако, хотя я могу сделать незащищенное соединение между PHP-скриптом, размещенным на VPS, и удаленной базой данных, я получаю ошибку, когда пытаюсь установить SSL-соединение между теми же двумя системами.
если я пытаюсь подключиться к удаленной базе данных через командную строку, используя:
mysql -h hostIP --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem –u ssluser –p
я получаю сообщение об ошибке:
ERROR 2026 (HY000): SSL connection error: Unable to get private key
я получаю ту же ошибку, когда Я пытаюсь подключиться к серверу через php-скрипт, используя:
<?php
$link = mysqli_init();
$key = '/home/userName/etc/mysql/certs/client-key.pem' ;
$cert = '/home/userName/etc/mysql/certs/client-cert.pem';
$ca = '/home/userName/etc/mysql/certs/ca-cert.pem';
$capath = NULL;
$cipher = NULL;
mysqli_ssl_set ( $link , $key , $cert , $ca , $capath , $cipher );
mysqli_real_connect ($link, $host, $user, $pass, $schema, 3306, NULL, MYSQLI_CLIENT_SSL);
?>
приводит к ошибке:
(HY000/2026): SSL connection error: Unable to get private key
Я уже попытался исправить согласно (forums.mysql.com/read.php?11, 400856, 401127), но это изменение приводит к "ошибке сегментации".
есть ли шаг, который я пропустил? Что я делаю не так?
3 ответов
разрешить:
удален ключ клиента.Пэм фразу, используя
openssl rsa -in client-key.pem -out client-key2.pem
согласно инструкциям на этот сайт.
сменил
$key = '/home/userName/etc/mysql/certs/client-key2.pem' ;
и
mysql -h hostIP --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key2.pem –u ssluser –p
а не
[client]
ssl-key =/etc/mysql/client-key.pem
'openssl genrsa' генерирует ключевой вывод:
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
'openssl pkey' или openssl req-newkey..... ключевые выход:
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
Mysql Server ищет RSA в начале и конце. Добавление RSA после начала и конца решило проблему для меня.
проверить ссылку для деталей mysql форум