Ich verwende Ubuntu Server 12.04 und möchte SSL-Verbindungen zu MySQL aktivieren.
Ich habe mit OpenSSL die folgenden Keys / Certs-Dateien generiert:
- ca-cert.pem
- server-cert.pem
- server-key.pem
Ich habe diese unter gespeichert /etc/mysql
und dann die folgenden Zeilen hinzugefügt /etc/mysql/my.cnf
:
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem
Als nächstes habe ich den Server mit neu gestartet sudo service restart mysql
.
Dies scheint jedoch SSL nicht zu aktivieren. Innerhalb einer MySQL-Sitzung:
mysql> show variables like '%ssl%';
+---------------+----------------------------+
| Variable_name | Value |
+---------------+----------------------------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| ssl_ca | /etc/mysql/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /etc/mysql/server-cert.pem |
| ssl_cipher | |
| ssl_key | /etc/mysql/server-key.pem |
+---------------+----------------------------+
Irgendwelche Ideen, was mir fehlt? Vielen Dank
Antworten:
Ubuntu 12.04 wird mit OpenSSL 1.0.1 ausgeliefert, das etwas andere Standardeinstellungen als die ältere Version von OpenSSL 0.9.8 hat.
Unter anderem, wenn Sie
openssl req -newkey rsa:2048
einen RSA-Schlüssel generieren, erhalten Sie einen Schlüssel im Format PKCS # 8 . Diese Schlüssel werden im PEM-Format dargestellt und haben den allgemeineren-----BEGIN PRIVATE KEY-----
Header, der nicht angibt, um welche Art von Schlüssel es sich handelt (RSA, DSA, EC).Zuvor hatten Schlüssel mit OpenSSL 0.9.8 immer das Format PKCS # 1 , das als PEM dargestellt wurde, und hatten den Header
-----BEGIN RSA PRIVATE KEY-----
.Aus diesem Grund können Sie die Kopf- und Fußzeile nicht einfach wie folgt ändern:
zu
Es ist nicht dasselbe und es wird nicht funktionieren. Stattdessen müssen Sie den Schlüssel mit in das alte Format konvertieren
openssl rsa
. So was:MySQL (v5.5.35) unter Ubuntu 12.04 verwendet eine SSL-Implementierung namens yaSSL (v2.2.2). Es wird erwartet, dass die Schlüssel im PKCS # 1-Format vorliegen und das von OpenSSL 1.0 und höher verwendete PKCS # 8-Format nicht unterstützt. Wenn Sie einfach die Kopf- und Fußzeile ändern, wie in anderen Beiträgen in diesem Thread vorgeschlagen, wird sich MySQL / yaSSL nicht beschweren, aber Sie können keine Verbindung herstellen und erhalten stattdessen den folgenden Fehler:
Ubuntu 14.04 wird mit OpenSSL 1.0.1f und neuen Einstellungen geliefert. Unter anderem werden Zertifikate mit SHA256-Digests anstelle von SHA1 generiert, das in früheren Versionen verwendet wurde. Übrigens unterstützt die mit MySQL gebündelte yaSSL-Version dies auch nicht.
Wenn Sie Zertifikate zur Verwendung mit MySQL generieren, müssen Sie sicherstellen, dass die RSA-Schlüssel in das traditionelle PKCS # 1-PEM-Format konvertiert werden und dass Zertifikate SHA1-Digests verwenden.
Im Folgenden finden Sie ein Beispiel für die Erstellung einer eigenen Zertifizierungsstelle, eines Serverzertifikats und eines Clientzertifikats.
quelle
ERROR 2026 (HY000): SSL connection error: protocol version mismatch
Fehler (mit OpenSSL 1.0.1f). Ich habe auf OpenSSL 1.0.1e umgestellt und es hat mit den obigen Anweisungen funktioniert.Das hat mir geholfen:
Die Kopf- und Fußzeile der Datei server-key.pem sah folgendermaßen aus:
Aber es erfordert so etwas:
Beachten Sie den BEGIN RSA PRIVATE KEY
Um das Protokoll zu sehen:
Hoffe das hilft.
quelle
openssl rsa
Ich hatte am 12.04 die gleichen Probleme, aber es war in der Tat Apparmor, der die Probleme verursachte.
Ich habe in den Ubuntu-Foren eine Lösung gefunden, bei der das Verschieben von
.pem
Dateien/etc/mysql
behoben wurde.Sie können die Apparmor-Konfiguration auch in ändern
/etc/apparmor.d/usr.sbin.mysqld
.quelle
Stellen Sie sicher, dass der Benutzer, der den mysqld-Prozess ausführt, Lesezugriff auf die Schlüssel und Zertifikatsdateien hat. Wenn Sie MySQL mit dem Konto "mysql" starten, würden Sie:
Andernfalls wird in Ihrem Fehlerprotokoll möglicherweise Folgendes angezeigt:
quelle
Auf Ubuntu 16.04 lief ich
mysql_ssl_rsa_setup
, konnte die Dateien in Showvariablen wie in der Frage sehen, aberhave_ssl
undhave_openssl
blieb dabeiDISABLED
.Die Lösung war zu
chown mysql.mysql /var/lib/mysql/*.pem
. Alternativ gehe ich davon aus, dass, wenn Sie mysql_ssl_rsa_setup als mysql-Benutzer ausführen, die Dateien mit den richtigen Berechtigungen erstellt werden.quelle
Die private Schlüsseldatei sollte wie folgt aussehen (PKCS # 1-Format):
Wenn Ihr privater Schlüssel stattdessen beginnt mit:
(PKCS # 8 Format), dann sollten Sie es wie folgt konvertieren :
Fügen Sie das "fehlende" "
RSA
" Tag nicht manuell von Hand hinzu, da das Format unterschiedlich ist.quelle
Die SSL-Startoptionen sollten sich oben in Ihrer Datei my.cnf befinden, da sie sonst möglicherweise ignoriert werden. Ich hatte Probleme, mysql 5.6 auf RHEL 6.4 auszuführen, wo die SSL-Variablen ignoriert wurden. Ich hatte sie am Ende der Datei my.cnf. Ich habe sie oben in die Datei verschoben (direkt unter [mysqld]), dann habe ich den Server neu gestartet und alles war in Ordnung.
quelle