J'utilise Ubuntu Server 12.04 et je souhaite activer les connexions SSL à MySQL.
J'ai généré les fichiers de clés / certificats suivants avec OpenSSL:
- ca-cert.pem
- server-cert.pem
- server-key.pem
Je les ai stockés à /etc/mysql
, puis j'ai ajouté les lignes suivantes à /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
Ensuite, j'ai redémarré le serveur avec sudo service restart mysql
.
Cependant, cela ne semble pas activer SSL. Dans une session mysql:
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 |
+---------------+----------------------------+
Des idées sur ce qui me manque? Merci
Réponses:
Ubuntu 12.04 est livré avec un OpenSSL 1.0.1, qui a des valeurs par défaut quelque peu différentes de l'ancienne version d'OpenSSL 0.9.8.
Entre autres choses, si vous utilisez
openssl req -newkey rsa:2048
pour générer une clé RSA, vous vous retrouverez avec une clé dans un format appelé PKCS # 8 . Représentées au format PEM, ces clés ont l'en------BEGIN PRIVATE KEY-----
tête plus générique , qui ne vous indique pas de quel type de clé (RSA, DSA, EC) il s'agit.Auparavant, avec OpenSSL 0.9.8, les clés étaient toujours dans un format appelé PKCS # 1 , qui représentait PEM, avait l'en-tête
-----BEGIN RSA PRIVATE KEY-----
.Pour cette raison, vous ne pouvez pas simplement changer l'en-tête et le pied de page de:
à
Ce n'est pas la même chose et ça ne marchera pas. Au lieu de cela, vous devez convertir la clé dans l'ancien format à l'aide de
openssl rsa
. Comme ça:MySQL (v5.5.35) sur Ubuntu 12.04 utilise une implémentation SSL appelée yaSSL (v2.2.2). Il s'attend à ce que les clés soient au format PKCS # 1 et ne prennent pas en charge le format PKCS # 8 utilisé par OpenSSL 1.0 et plus récent. Si vous modifiez simplement l'en-tête et le pied de page, comme suggéré par d'autres articles de ce fil, MySQL / yaSSL ne se plaindra pas, mais vous ne pourrez pas vous connecter et vous retrouverez à la place avec une erreur comme celle-ci:
Ubuntu 14.04 est livré avec OpenSSL 1.0.1f et de nouveaux paramètres. Entre autres choses, il générera des certificats avec des résumés SHA256 au lieu de SHA1, qui était utilisé dans les versions antérieures. Soit dit en passant, la version yaSSL fournie avec MySQL ne prend pas cela en charge non plus.
Si vous générez des certificats à utiliser avec MySQL, n'oubliez pas de vous assurer que les clés RSA sont converties au format PEM PKCS # 1 traditionnel et que les certificats utilisent des résumés SHA1.
Voici un exemple de génération de votre propre autorité de certification, d'un certificat de serveur et d'un certificat client.
la source
ERROR 2026 (HY000): SSL connection error: protocol version mismatch
erreurs (en utilisant OpenSSL 1.0.1f). Je suis passé à OpenSSL 1.0.1e et cela a fonctionné avec les instructions ci-dessus.Cela m'a aidé:
L'en-tête et le pied de page du fichier server-key.pem ressemblaient à ça:
Mais cela nécessite quelque chose comme ça:
Notez la clé privée BEGIN RSA
Pour voir le journal:
J'espère que cela t'aides.
la source
openssl rsa
J'ai eu les mêmes ennuis le 12.04 mais c'est en fait l'apparmeur qui a causé les problèmes.
J'ai trouvé une solution sur les forums Ubuntu , en déplaçant les
.pem
fichiers dans la/etc/mysql
résolution.Vous pouvez également modifier la configuration de l'apparmeur dans
/etc/apparmor.d/usr.sbin.mysqld
.la source
Assurez-vous que l'utilisateur exécutant le processus mysqld dispose d'un accès en lecture aux clés et aux fichiers de certificat. Si vous lancez MySQL en utilisant le compte "mysql", vous devez:
Sinon, vous pourriez obtenir les informations suivantes dans votre journal des erreurs:
la source
Sur Ubuntu 16.04, j'ai couru, je
mysql_ssl_rsa_setup
pouvais voir les fichiers dans les variables show comme dans la question, maishave_ssl
et j'aihave_openssl
continué à l'êtreDISABLED
.La solution était de
chown mysql.mysql /var/lib/mysql/*.pem
. Alternativement, je suppose que si vous exécutez mysql_ssl_rsa_setup en tant qu'utilisateur mysql, il créera les fichiers avec les autorisations appropriées.la source
Le fichier de clé privée doit ressembler à (format PKCS # 1):
Si votre clé privée commence à la place par:
(Format PKCS # 8), alors vous devez le convertir comme ceci:
N'ajoutez pas manuellement la
RSA
balise "manquante" " " à la main, car le format est différent.la source
Les options de démarrage SSL doivent se trouver en haut de votre fichier my.cnf, sinon elles peuvent être ignorées. J'ai eu des problèmes lors de l'exécution de mysql 5.6 sur RHEL 6.4 où les variables SSL étaient ignorées, je les avais à la fin du fichier my.cnf. Je les ai déplacés en haut du fichier (juste en dessous de [mysqld]) puis j'ai redémarré le serveur et tout allait bien.
la source