MySQL-SSL-Remote-Verbindung Fehler: Unable to get Private Key
Ich bin versucht, ein PHP Skript zu schreiben (gehostet auf einem VPS mit GoDaddy), die eine Verbindung zu einem remote-MySQL-Datenbank (gehostet auf einer Amazon EC2-Instanz) mit SSL.
Generiert ich einige certs (als pro http://dev.mysql.com/doc/refman/5.0/en/creating-ssl-certs.html) und konfiguriert meine.cnf auf dem remote-server-Datenbank wie folgt:
[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
Die Konfiguration funktioniert der remote/server-Seite (das heißt, ein php-Skript läuft, lokal auf der remote-Datenbank ist in der Lage, zum herstellen einer Verbindung mit der generierten SSL-certs).
Während ich jedoch machen kann, die eine unsichere Verbindung zwischen dem PHP script die auf der VPS und der remote-Datenbank, bekomme ich eine Fehlermeldung wenn ich versuche zum herstellen einer SSL-Verbindung zwischen zwei Systemen.
Wenn ich versuche, die Verbindung zu remote-Datenbank über die Befehlszeile mit:
mysql -h hostIP --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem –u ssluser –p
Bekomme ich die Fehlermeldung:
ERROR 2026 (HY000): SSL connection error: Unable to get private key
Bekomme ich die gleiche Fehlermeldung, wenn ich Versuch die Verbindung zum server über das php-Skript mit:
<?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);
?>
Ergebnisse in der Fehlermeldung:
(HY000/2026): SSL connection error: Unable to get private key
Ich habe bereits versucht ein Update als pro (forums.mysql.com/read.php?11,400856,401127), sondern darum, dass diese änderung führt zu einem "Segmentation fault".
Ist es ein Schritt, den ich verpasst habe? Was mache ich falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
GELÖST:
entfernt die client-Schlüssel.pem-passphrase verwenden
gemäß den Anweisungen auf diese website.
Änderte ich
und
aber nicht
client-key2.pem
mit einem Bindestrich, nicht mit Unterstrich.openssl rsa -in client-key.pem -out client-key.pem
"openssl genrsa' erzeugt key-Ausgang:
'openssl pkey' oder openssl req -newkey..... Schlüssel-Ausgabe:
Mysql-Server sucht nach RSA-in BEGINNEN und ENDEN. Hinzufügen von RSA nach Beginn und ENDE löste das Problem für mich.
prüfen Sie den Link für Details
mysql-forum
Ich meinen Fall, die Besitzer der server-Schlüssel.pem war root und nicht mysql.
Ist für mich der Schlüssel benötigt, um umgewandelt werden, um vollständige rsa-format, verändert nicht nur die überschriften:
openssl rsa -in client.key -out client.key.rsa
Dank Velkan über dba-Austausch für die Antwort.