ubuntuusers.de

mariaDB SSL Zertifikate

Status: Ungelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

joe2017

Anmeldungsdatum:
24. Juli 2017

Beiträge: 146

Ich verwende die aktuelle mariaDB Installation unter ubuntu und möchte meine ECC 384 Zertifikate meiner eigenen CA einsetzten. Ich habe diese bereits in das entsprechende Verzeichnis kopiert. und in den beiden config Files eingetragen.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

ssl-ca=/etc/mysql/ca.crt
ssl-cert=/etc/mysql/server_ecdsa.crt
ssl-key=/etc/mysql/server_ecdsa_re.key

sudo nano /etc/mysql/mariadb.conf.d/50-client.cnf

ssl-ca=/etc/mysql/ca.crt
ssl-cert=/etc/mysql/client_ecdsa.crt
ssl-key=/etc/mysql/client_ecdsa_re.key

sudo systemctl restart mysql

SHOW VARIABLES LIKE '%ssl%';

+---------------------+---------------------------------------------+
| Variable_name       | Value                                       |
+---------------------+---------------------------------------------+
| have_openssl        | NO                                          |
| have_ssl            | DISABLED                                    |
| ssl_ca              | /etc/mysql/ca.crt                           |
| ssl_capath          |                                             |
| ssl_cert            | /etc/mysql/server_ecdsa.crt                 |
| ssl_cipher          | TLSv1.2                                     |
| ssl_crl             |                                             |
| ssl_crlpath         |                                             |
| ssl_key             | /etc/mysql/server_ecdsa_re.key              |
| version_ssl_library | YaSSL 2.4.4                                 |
+---------------------+---------------------------------------------+

Warum steht hier nicht:

have_openssl        | YES
have_ssl            | YES
version_ssl_library | OpenSSL

Wenn ich SSL erzwinge (ssl-verify-server-cert=on) erhalte ich die Fehlermeldung:

ERROR 2026 (HY000): SSL connection error: SSL is required, but the server does not support it

Kann mir hierbei jemand ein Tipp geben?

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17521

OpenSSL wird bei Ubuntu für MySQL/MariaDB nicht verwendet, das passt also so bzgl. have_openssl. Wie wäre der Versuch mal ssl=1 oder ähnliches zu setzen in der Konfiguration, den so lange dort Disabled steht ist es vorhanden aber nicht passend konfiguriert und daher weiterhin inaktiv.

mfg Stefan

joe2017

(Themenstarter)

Anmeldungsdatum:
24. Juli 2017

Beiträge: 146

Also in dem ConfigFile /etc/mysql/mariadb.conf.d/50-server.cnf gibt es einen Schalter

ssl=on

Jedoch bewirkt der auch nicht das was ich dachte. Ich bekommen immer noch die INFO

have_openssl        | NO
have_ssl            | DISABLED 

In folgendem Log File hab ich diesen Eintrag gefunden. /var/log/mysql/error.log

SSL error: Unable to get private key from '/etc/mysql/server_ecdsa.crt'

Verstehe nicht weshalb der Key nicht gelesen werden kann?

Ich habe gelesen, dass mariaDB nur mit PKCS#1 Key´s arbeiten kann. Das kann ich mir irgendwie nicht vorstellen. Kann dies jemand bestätigen? Das würde bedeuten, dass ich keine ECDSA Zertifikate verwenden kann.

Ich habe mein Server_ecdsa.key auch in PKCS#12 konvertiert. Hier erhalte ich nach wie vor die Fehlermeldung.

SSL error: Unable to get private key from '/etc/mysql/server_ecdsa.crt'

joe2017

(Themenstarter)

Anmeldungsdatum:
24. Juli 2017

Beiträge: 146

Hat hier keiner eine Idee woran das liegen könnte? Ich komm hier irgendwie nicht weiter?

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17521

joe2017 schrieb:

SSL error: Unable to get private key from '/etc/mysql/server_ecdsa.crt'

Was sagt denn der Befehl sudo namei -l /etc/mysql/server_ecdsa.crt zu der Sache?

mfg Stefan

joe2017

(Themenstarter)

Anmeldungsdatum:
24. Juli 2017

Beiträge: 146

Hi Stefan,

jetzt hat sich auch noch der Fehlerteufel eingeschlichen. Das kommt davon wenn man die Original Dateinamen austauscht. Der Fehler war natürlich:

Unable to get private key from '/etc/mysql/server_ecdsa_re.key'

Und das kommt dabei raus:

sudo namei -l '/etc/mysql/server_ecdsa_re.key'

f: /etc/mysql/server_ecdsa_re.key
drwxr-xr-x root root /
drwxr-xr-x root root etc
drwxr-xr-x root root mysql
-rwxr--r-- root root server_ecdsa_re.key

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17521

Und der Key hat das richtige Format mit dem MySQL was anfangen können sollte, ja? Dafür kann z.B. openssl pkey -in dein.key -noout -text hilfreich sein. (Den Output davon brauchen wir nicht, nur die Info ob es gelesen werden konnte!)

Beachte auch das MariaDB/MySQL eventuell mit YaSSL (was bei dir ja aktiv ist) gar kein ECDSA, sondern nur RSA kann 😉

mfg Stefan

joe2017

(Themenstarter)

Anmeldungsdatum:
24. Juli 2017

Beiträge: 146

Von Grund auf. Ich habe eine eigen CA unter Ubuntu eingerichtet welche ausschließlich ECC 384 Zertifikate ausstellt.

Ich habe mein erstelltes Zertifikat inklusive Key für meinen mariaDB Server auf diesen kopiert und in die Config Files eingetragen.

Wie kann ich nun diese ECC 384 (ECDSA) Zertifikate für die Verschlüsselung unter mariaDB/MySQL einsetzten? Was ist hierfür notwendig. Leider habe ich hier diese Anforderung und kann somit nicht auf RSA ausweichen.

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17521

Mein Ansatz wäre testweise mal RSA zu probieren, geht es damit ist die SSL Library zu wechseln und dann sollte auch ECC gehen. Geht es nicht hast du noch wo anders ein Problem und solltest erstmal das fixen.

mfg Stefan

joe2017

(Themenstarter)

Anmeldungsdatum:
24. Juli 2017

Beiträge: 146

Hallo Stefan,

ich habe bereits diverse Verschlüsselungen (LDAP, Apache, usw.) mit selbst erstellten Zertifikaten am laufen. Ich denke nicht das es ein Problem mit dem Zertifikat an sich gibt. Wie kann ich die SSL Library wechseln?

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17521

Könnten wir bitte strukturiert vorgehen? Du musst nicht deine ganze CA weghauen, nur für diesen einen Service mal RSA bauen und schauen ob es damit geht.

Dein Zertifikat ist sicher in Ordnung, wenn YaSSL von deinen MariaDB aber kein ECC kann, dann ist es egal weil es damit einfach nicht arbeiten wird. Ich hab SSL mit ECC für MySQL/MariaDB nicht am laufen, kann dies also nicht beurteilen. Daher der Ansatz das mal mit RSA zu testen, dann weißt du mehr.

mfg Stefan

joe2017

(Themenstarter)

Anmeldungsdatum:
24. Juli 2017

Beiträge: 146

Ich denke ich habe eine passende Info hierzu gefunden:

https://dev.mysql.com/doc/refman/5.7/en/encrypted-connection-protocols-ciphers.html

Passage: MySQL passes this cipher list to OpenSSL:

ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-ECDSA-AES128-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-ECDSA-AES256-SHA384
ECDHE-RSA-AES256-SHA384
DHE-RSA-AES128-GCM-SHA256
DHE-DSS-AES128-GCM-SHA256
DHE-RSA-AES128-SHA256
DHE-DSS-AES128-SHA256
DHE-DSS-AES256-GCM-SHA384
DHE-RSA-AES256-SHA256
DHE-DSS-AES256-SHA256
ECDHE-RSA-AES128-SHA
ECDHE-ECDSA-AES128-SHA
ECDHE-RSA-AES256-SHA
ECDHE-ECDSA-AES256-SHA
DHE-DSS-AES128-SHA
DHE-RSA-AES128-SHA
TLS_DHE_DSS_WITH_AES_256_CBC_SHA
DHE-RSA-AES256-SHA
AES128-GCM-SHA256
DH-DSS-AES128-GCM-SHA256
ECDH-ECDSA-AES128-GCM-SHA256
AES256-GCM-SHA384
DH-DSS-AES256-GCM-SHA384
ECDH-ECDSA-AES256-GCM-SHA384
AES128-SHA256
DH-DSS-AES128-SHA256
ECDH-ECDSA-AES128-SHA256
AES256-SHA256
DH-DSS-AES256-SHA256
ECDH-ECDSA-AES256-SHA384
AES128-SHA
DH-DSS-AES128-SHA
ECDH-ECDSA-AES128-SHA
AES256-SHA
DH-DSS-AES256-SHA
ECDH-ECDSA-AES256-SHA
DHE-RSA-AES256-GCM-SHA384
DH-RSA-AES128-GCM-SHA256
ECDH-RSA-AES128-GCM-SHA256
DH-RSA-AES256-GCM-SHA384
ECDH-RSA-AES256-GCM-SHA384
DH-RSA-AES128-SHA256
ECDH-RSA-AES128-SHA256
DH-RSA-AES256-SHA256
ECDH-RSA-AES256-SHA384
ECDHE-RSA-AES128-SHA
ECDHE-ECDSA-AES128-SHA
ECDHE-RSA-AES256-SHA
ECDHE-ECDSA-AES256-SHA
DHE-DSS-AES128-SHA
DHE-RSA-AES128-SHA
TLS_DHE_DSS_WITH_AES_256_CBC_SHA
DHE-RSA-AES256-SHA
AES128-SHA
DH-DSS-AES128-SHA
ECDH-ECDSA-AES128-SHA
AES256-SHA
DH-DSS-AES256-SHA
ECDH-ECDSA-AES256-SHA
DH-RSA-AES128-SHA
ECDH-RSA-AES128-SHA
DH-RSA-AES256-SHA
ECDH-RSA-AES256-SHA
DES-CBC3-SHA

MySQL passes this cipher list to yaSSL:

DHE-RSA-AES256-SHA
DHE-RSA-AES128-SHA
AES128-RMD
DES-CBC3-RMD
DHE-RSA-AES256-RMD
DHE-RSA-AES128-RMD
DHE-RSA-DES-CBC3-RMD
AES256-SHA
RC4-SHA
RC4-MD5
DES-CBC3-SHA
DES-CBC-SHA
EDH-RSA-DES-CBC3-SHA
EDH-RSA-DES-CBC-SHA
AES128-SHA:AES256-RMD

Wie kann ich yaSSL auf OpenSSL umstellen?

joe2017

(Themenstarter)

Anmeldungsdatum:
24. Juli 2017

Beiträge: 146

also ich habe jetzt ein RSA Zertifikat erstellt und nach der Anmeldung sehe ich jetzt folgendes.

SHOW VARIABLES LIKE '%ssl%';

have_ssl            | YES 

Im Log (cat /var/log/mysql/error.log) stehen auch keine Warnungen oder Fehler mehr.

Wenn ich in der Config (sudo nano /etc/mysql/mariadb.conf.d/50-client.cnf) folgenden Wert setzte:

ssl-verify-server-cert=on

Erhalte ich bei der Anmeldung folgende Fehlermeldung:

ERROR 2026 (HY000): SSL connection error: SSL certificate validation failure

Woran könnte dies noch liegen?

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17521

joe2017 schrieb:

Erhalte ich bei der Anmeldung folgende Fehlermeldung:

ERROR 2026 (HY000): SSL connection error: SSL certificate validation failure

Das ist gut so, wenn du ein self-signed Cert hast kommt das ja von keiner Trusted CA. Du kannst dem MySQL/MariaDB Client aber sagen das er doch bitte dieser CA trauen möchte.

mfg Stefan

joe2017

(Themenstarter)

Anmeldungsdatum:
24. Juli 2017

Beiträge: 146

Hallo Stefan,

das hatte ich eigentlich auch schon gemacht. Deshalb verstehe ich das ganze nicht so ganz.

Antworten |