MySQL SSL: schlechte andere Signaturbestätigung

7

Ich versuche, SSL-Verbindungen für MySQL zu aktivieren. SSL wird in MySQL als aktiviert angezeigt, kann jedoch aufgrund dieses Fehlers keine Verbindungen herstellen: FEHLER 2026 (HY000): SSL-Verbindungsfehler: ASN: Fehlerhafte andere Signaturbestätigung

Ich führe folgendes aus:

Ubuntu Version: 14.04.1 LTS (GNU/Linux 3.13.0-34-generic x86_64)
MySQL Version: 5.5.38-0ubuntu0.14.04.1
OpenSSL Version: OpenSSL 1.0.1f 6 Jan 2014

Ich habe diese Befehle verwendet, um meine Zertifikate zu generieren (alle in / etc / mysql generiert):

openssl genrsa -out ca-key.pem 2048
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca-cert.pem -subj "/C=US/ST=NY/O=MyCompany/CN=ca"

openssl req -newkey rsa:2048 -nodes -days 3650 -keyout server-key.pem -out server-req.pem -subj "/C=US/ST=NY/O=MyCompany/CN=server"
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

openssl req -newkey rsa:2048 -nodes -days 3650 -keyout client-key.pem -out client-req.pem -subj "/C=US/ST=NY/O=MyCompany/CN=client"
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

Ich habe folgendes in my.cnf eingefügt:

[mysqld]    
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

Wenn ich versuche, eine Verbindung unter Angabe der Client-Zertifikate herzustellen, wird die folgende Fehlermeldung angezeigt:

mysql -uroot -ppassword --ssl-ca=/etc/mysql/ca-cert.pem --ssl-cert=/etc/mysql/client-cert.pem --ssl-key=/etc/mysql/client-key.pem

ERROR 2026 (HY000): SSL connection error: ASN: bad other signature confirmation

Wenn ich mich ohne SSL verbinde, kann ich sehen, dass MySQL die Zertifikate korrekt geladen hat:

mysql -uroot -ppassword --ssl=false

mysql> SHOW VARIABLES LIKE '%ssl%';
+---------------+----------------------------+
| Variable_name | Value                      |
+---------------+----------------------------+
| have_openssl  | YES                        |
| have_ssl      | YES                        |
| 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  |
+---------------+----------------------------+
7 rows in set (0.00 sec)

Meine generierten Zertifikate bestehen die OpenSSL-Überprüfung und den Modul:

openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
server-cert.pem: OK
client-cert.pem: OK

Was vermisse ich? Ich habe den gleichen Prozess zuvor auf einem anderen Server verwendet und er hat funktioniert - die Ubuntu-Version war jedoch 12.04 LTS und die OpenSSL-Version war älter (erinnere mich nicht genau). Hat sich mit der neuesten OpenSSL etwas geändert?

Jede Hilfe wäre dankbar!

SJL
quelle

Antworten:

10

Ich benutzte:

# Generate a CA key and certificate with SHA1 digest

openssl genrsa 2048 > ca-key.pem;
openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem;

# Create server key and certficate with SHA1 digest, sign it and convert
# the RSA key from PKCS #8 (OpenSSL 1.0 and newer) to the old PKCS #1 format

openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem > server-req.pem;
openssl x509 -sha1 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem;
openssl rsa -in server-key.pem -out server-key.pem;

# Create client key and certificate with SHA digest, sign it and convert
# the RSA key from PKCS #8 (OpenSSL 1.0 and newer) to the old PKCS #1 format

openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem > client-req.pem;
openssl x509 -sha1 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem;
openssl rsa -in client-key.pem -out client-key.pem;

um meine ssl einzurichten (ubuntu 12.04). Meine MySQL-Konfiguration enthält:

[client]
ssl-cert=/etc/mysql/client-cert.pem
ssl-key=/etc/mysql/client-key.pem

[mysqld]
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

Schauen Sie sich diesen Beitrag zum Debuggen von SSL an. Und dieser Beitrag für die Änderungen in openssl (ubuntu 10.04 -> 14.04).

tersmitten
quelle
Ja, das war es - ich musste auf das alte PKCS # 1-Format konvertieren, da ich am 14.04 die neuere OpenSSL verwendete. VIELEN DANK!
SJL
Ich SSL connection error: SSL certificate validation failureerhalte , wenn ich das Serverzertifikat validiere : mysql --ssl-verify-server-cert. Irgendeine Idee, was los ist?
Rustyx
Egal - das überprüft nur, ob der allgemeine Name mit dem Hostnamen übereinstimmt (für mich nicht).
Rustyx