J'ai configuré SSL pour MySQL en utilisant le script suivant.
#!/bin/bash
#
mkdir -p /root/abc/ssl_certs
cd /root/abc/ssl_certs
#
echo "--> 1. Create CA cert, private key"
openssl genrsa 2048 > ca-key.pem
echo "--> 2. Create CA cert, certificate"
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem
echo "--> 3. Create Server certificate, key"
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem
echo "--> 4. Create Server certificate, cert"
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
echo ""
echo
echo ""
echo "--> 5. Create client certificate, key. Use DIFFERENT common name then server!!!!"
echo ""
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem
echo "6. Create client certificate, cert"
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
exit 0
Les fichiers suivants ont été créés:
ca-key.pem ca-cert.pem
server-req.pem server-key.pem server-cert.pem
client-req.pem client-key.pem client-cert.pem
Ensuite, j'ai combiné server-cert.pem et client-cert.pem dans ca.pem (j'ai lu dans un post pour le faire ..)
J'ai créé un utilisateur ssl dans MySQL:
GRANT ALL ON *.* to sslsuer@hostname IDENTIFIED BY 'pwd' REQUIRE SSL;
Ensuite, j'ai ajouté ce qui suit dans my.cnf
[mysqld]
ssl-ca = /root/abc/ssl_certs/ca.pem
ssl-cert = /root/abc/ssl_certs/server-cert.pem
ssl-key = /root/abc/ssl_certs/server-key.pem
Après avoir redémarré le serveur, je me suis connecté à mysql mais SSL n'était toujours pas utilisé :(
mysql -u ssluser -p
SSL: Not in use
Même le paramètre have_ssl montrait toujours désactivé .. :(
mysql> show variables like '%ssl%';
+---------------+---------------------------------------------+
| Variable_name | Value |
+---------------+---------------------------------------------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| ssl_ca | /root/abc/ssl_certs/ca.pem |
| ssl_capath | |
| ssl_cert | /root/abc/ssl_certs/server-cert.pem |
| ssl_cipher | |
| ssl_key | /root/abc/ssl_certs/server-key.pem |
+---------------+---------------------------------------------+
Ai-je manqué une étape, ou qu'est-ce qui ne va pas ..
Les réponses avec des étapes manquées en détail seront très appréciées.
mysql
ssl
ssl-certificate
encryption
Rayons de soleil
la source
la source
mysql --ssl --help
N'oubliez pas non plus de redémarrer mysql après avoir apporté ces modifications à my.cnfmysql --ssl -u ssluser -p
de forcer SSL sur le client. après cela fonctionne, on peut essayer de comprendre pourquoi REQuIRE SSL ne fonctionne pas.Réponses:
Voir la solution ici: /ubuntu/194074/enabling-ssl-in-mysql
Vous devez convertir les certificats à l'ancien format:
la source
Essayez de vérifier ceci:
mysql
?) De lire les fichiers. En/root
je ne pense pas que ce soit le cas par défaut.la source
Sur Ubuntu, vous pouvez vérifier si l'
apparmor
accès à vos fichiers cert est bloqué, voir le manuel .Ensuite, vous devez vérifier les autorisations / la propriété des fichiers et ajouter les droits nécessaires à
/etc/apparmor.d/usr.sbin.mysqld
. Voir ce fil .la source
J'ai eu ce problème, et cela a aidé à changer la propriété des fichiers .pem:
(De Craig Wright - /ubuntu/194074/enabling-ssl-in-mysql )
la source
Ajoutez le "ssl" dans la
[mysqld]
section dumy.cnf
fichier commepuis redémarrez mysql et vérifiez à nouveau. Ça va marcher.
la source
Je crois que ce problème est dû au fait que vous n'avez pas spécifié correctement les chemins d'accès aux fichiers pour votre certificat CA, votre clé de serveur et votre certificat de serveur. Il doit être dans le format suivant ...
c'est-à-dire que vous avez besoin du FULL FILE PATH des certificats et des clés dans votre dossier d'installation mysql et non d'un chemin relatif '/ root /'.
Voici un exemple de mon installation:
Reportez-vous au lien suivant pour plus d'informations. https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-ssl.html
la source
/
, ce qui signifie qu'ils sont des chemins complets, pas des chemins relatifs./root/
est le dossier personnel de l'utilisateur root sur un système Unix.