Ich habe SSL für MySQL mit dem folgenden Skript konfiguriert.
#!/bin/bash
#
mkdir -p /root/abc/ssl_certs
cd /root/abc/ssl_certs
#
echo "--> 1. Create CA cert, private key"
openssl genrsa 2048 > ca-key.pem
echo "--> 2. Create CA cert, certificate"
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem
echo "--> 3. Create Server certificate, key"
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem
echo "--> 4. Create Server certificate, cert"
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
echo ""
echo
echo ""
echo "--> 5. Create client certificate, key. Use DIFFERENT common name then server!!!!"
echo ""
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem
echo "6. Create client certificate, cert"
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
exit 0
Die folgenden Dateien wurden erstellt:
ca-key.pem ca-cert.pem
server-req.pem server-key.pem server-cert.pem
client-req.pem client-key.pem client-cert.pem
Dann habe ich server-cert.pem und client-cert.pem zu ca.pem kombiniert (ich habe dazu einen Beitrag gelesen ..)
Ich habe einen SSL-Benutzer in MySQL erstellt:
GRANT ALL ON *.* to sslsuer@hostname IDENTIFIED BY 'pwd' REQUIRE SSL;
Als nächstes habe ich folgendes in my.cnf hinzugefügt
[mysqld]
ssl-ca = /root/abc/ssl_certs/ca.pem
ssl-cert = /root/abc/ssl_certs/server-cert.pem
ssl-key = /root/abc/ssl_certs/server-key.pem
Nach dem Neustart des Servers stellte ich eine Verbindung zu MySQL her, aber SSL wurde immer noch nicht verwendet :(
mysql -u ssluser -p
SSL: Not in use
Sogar der Parameter have_ssl wurde immer noch deaktiviert angezeigt .. :(
mysql> show variables like '%ssl%';
+---------------+---------------------------------------------+
| Variable_name | Value |
+---------------+---------------------------------------------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| ssl_ca | /root/abc/ssl_certs/ca.pem |
| ssl_capath | |
| ssl_cert | /root/abc/ssl_certs/server-cert.pem |
| ssl_cipher | |
| ssl_key | /root/abc/ssl_certs/server-key.pem |
+---------------+---------------------------------------------+
Habe ich einen Schritt verpasst oder was ist falsch ..
Antworten mit fehlenden Schritten im Detail werden sehr geschätzt.
mysql
ssl
ssl-certificate
encryption
Sonnenstrahlen
quelle
quelle
mysql --ssl --help
Vergessen Sie auch nicht, MySQL neu zu starten, nachdem Sie diese Änderungen an my.cnf vorgenommen habenmysql --ssl -u ssluser -p
, SSL auf dem Client zu erzwingen. Danach kann man herausfinden, warum REQuIRE SSL dies nicht tut.Antworten:
Die Lösung finden Sie hier: /ubuntu/194074/enabling-ssl-in-mysql
Sie müssen Zertifikate in das alte Format konvertieren:
quelle
Versuchen Sie dies zu überprüfen:
mysql
?), Die Dateien lesen kann. In/root
Ich glaube nicht , es hat in der Standardeinstellung.quelle
Unter Ubuntu können Sie überprüfen, ob der
apparmor
Zugriff auf Ihre Zertifizierungsdateien blockiert ist ( siehe Handbuch) .Anschließend sollten Sie die Dateiberechtigungen / -eigentümer überprüfen und die erforderlichen Rechte hinzufügen
/etc/apparmor.d/usr.sbin.mysqld
. Siehe diesen Thread .quelle
Ich hatte dieses Problem und es half, den Besitz der PEM-Dateien zu ändern:
(Von Craig Wright - /ubuntu/194074/enabling-ssl-in-mysql )
quelle
Fügen Sie die "ssl" in den
[mysqld]
Abschnitt in dermy.cnf
Datei wieund dann MySQL neu starten und erneut überprüfen. Es wird klappen.
quelle
Ich glaube, dieses Problem ist darauf zurückzuführen, dass Sie die Dateipfade für Ihr CA-Zertifikat, Ihren Serverschlüssel und Ihr Serverzertifikat nicht korrekt angegeben haben. Es muss im folgenden Format vorliegen ...
Das heißt, Sie benötigen den FULL FILE PATH der Zertifikate und Schlüssel in Ihrem MySQL-Installationsordner, keinen relativen '/ root /' Pfad.
Hier ist ein Beispiel aus meiner Installation:
Weitere Informationen finden Sie unter dem folgenden Link. https://dev.mysql.com/doc/connector-net/de/connector-net-tutorials-ssl.html
quelle
/
, was bedeutet, dass es sich um vollständige Pfade handelt, nicht um relative Pfade./root/
ist der Home-Ordner für den Root-Benutzer auf einem Unix-System.