Verwendung des Standard-SSL-Zertifikats/-Schlüssels unter MySQL 5.7?

Verwendung des Standard-SSL-Zertifikats/-Schlüssels unter MySQL 5.7?

Ich habe Percona MySQL 5.7 ( 5.7.21-20-log) installiert apt-get, wenn ich es mit dem Root-Konto verbinde und den SSL-Status überprüfe

# mysql --ssl
mysql> show variables like '%ssl%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| have_openssl  | YES             |
| have_ssl      | YES             |
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.21-20, for debian-linux-gnu (x86_64) using  6.3

Connection id:      31
Current database:
Current user:       root@localhost
SSL:            Cipher in use is ECDHE-RSA-AES128-GCM-SHA256

Standardmäßig wird also SSL verwendet. Wenn ich jedoch den vollständigen Befehl verwende

mysql -h 127.0.0.1 -P 3306 -u root  -p  --ssl-ca=/var/lib/mysql/ca.pem --ssl-cert=/var/lib/mysql/server-cert.pem --ssl-key=/var/lib/mysql/server-key.pem

Es gibt einen Fehler zurück

ERROR 2026 (HY000): SSL connection error: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

Antwort1

Ihr Problem liegt in der Verwendung des Serverzertifikats und -schlüssels auf der Clientseite.

--ssl-cert=/var/lib/mysql/server-cert.pem --ssl-key=/var/lib/mysql/server-key.pem

Wie dokumentiert in6.4.2 Kommandooptionen für verschlüsselte Verbindungen(Hervorhebung von mir):

--ssl-cert=file_name

Der Pfadname der SSL-Public-Key-Zertifikatdatei im PEM-Format.Auf der Clientseite ist dies das öffentliche Schlüsselzertifikat des Clients. Auf der Serverseite ist dies das öffentliche Schlüsselzertifikat des Servers. Auf der Serverseite impliziert diese Option --ssl.

--ssl-key=file_name

Der Pfadname der SSL-Privatschlüsseldatei im PEM-Format. Auf der Clientseite ist dies derprivater Client-Schlüssel. Auf der Serverseite ist dies der private Schlüssel des Servers. Auf der Serverseite impliziert diese Option --ssl.

Sie können die TLS-Verbindung allein durch erzwingen --ssl:

mysql -h 127.0.0.1 -P 3306 -u root -p --ssl

Nützlich könnte hier auch das sein --ssl-cipher=cipher_list. Damit können Sie sicherstellen, dass die Verbindung keine unerwünschte Verschlüsselung verwendet, auch wenn dies in der Serverkonfiguration erlaubt ist. Wenn Sie jedoch über beides verfügen, sollte dies primär auf der Serverseite konfiguriert werden.

verwandte Informationen