9
votes

Comment connecter Django à une base de données MySQL sur une connexion SSL?

J'essaie de connecter Django à une base de données MySQL accessible via une connexion SSL. Comment puis-je configurer cela?

Ma première hypothèse définirait la propriété "Options" de la définition de la base de données. Cependant, je ne trouve pas d'informations sur les options possibles à utiliser. L'option 'ssl': '/map/to/ca-cert.pem' code> ne fonctionne pas. P>

La commande suivante semble fonctionner: p>

mysql -h url.to.host -u lizard -p --ssl-ca=./ca-cert.pem


0 commentaires

4 Réponses :


18
votes

django utilise la bibliothèque Python mysqldb code> à l'interface avec MySQL. En regardant La documentation de la connexion MySQLDB , il ressemble au SSL L'option code> nécessite un argument de dictionnaire. Cela pourrait donc fonctionner:

'OPTIONS': {'ssl': {'key': '/map/to/ca-cert.pem'}}


2 commentaires

Merci. Cela fonctionne également avec «CA» au lieu de «clé». La réponse était sur cette page: dev.mysql.com /doc/refman/5.5/fr/mysql-ssl-set.html


Il semble que "CA" est la bonne option, "Touche" à son propre causée MySQL ne vérifie pas le contenu. En savoir plus à ce sujet ici: Stackoverflow.com/questions/7287088/... et ici: bugs.mysql.com/bug.php?id=62743



11
votes

Le client MySQL doit être fourni avec trois clés:


1 commentaires

Je ne suis pas tout à fait sûr que le "Doit être" dans la première phrase est correct, sauf si Cert + Key L'authentification est utilisé (contrairement à la cryptée simplement du trafic réseau).



3
votes

Je reçois une "erreur de connexion SSL: ssl_ctx_set_default_verify_paths a échoué") "Erreur lors de l'exécution Python Manage.py migrate

J'ai utilisé PIP pour installer le package DJANGO-MYSQL-SSL. Cela ne fonctionnait toujours pas. Je devais changer" ca "à" SSL-ca "Et maintenant ça marche. xxx

Je ne sais pas si c'est en train d'utiliser un cryptage, mais cela ne jette plus une erreur. Je suis en cours d'exécution d'une application Django locale connectée à un Instance AWS MariADB.

Edit: le package DJANGO-MYSQL-SSL n'est pas requis à partir de Django 1.8, car la fonctionnalité est intégrée maintenant. Voir la section des dépendances dans la description du package ici

Dépendances

Cette application est confirmée pour fonctionner avec Django 1.5. Il devrait aussi Travailler avec Django 1.6-1.7. Ce plugin n'est pas nécessaire pour Django 1.8, Comme la capacité est intégrée au noyau.


2 commentaires

J'ai la même erreur et 'SSL': {'SSL-CA': '' a également travaillé pour moi. En outre, je vois que le chemin du certificat CA peut être n'importe quoi, même inexistant, et cela fonctionne toujours bien. Voir Stackoverflow.com/a/54543985/8645590 .


"Je ne sais pas si c'est en train d'utiliser le cryptage" @bbaker, la connexion sera cryptée, j'ai vérifié en faisant Afficher le statut de session comme 'ssl_cipher' .



0
votes

dans le cas de la connexion cryptée SSL aura probablement besoin de Cipher paramètre xxx

mysql passe une liste de chiffrement par défaut à la bibliothèque SSL. Plus de détails peuvent être trouvés ici:

  1. https://dev.mysql.com/doc/refman/5.7/fr/encrypted-connection-protocols-cidphers.html#encypted-connection-Cipher-configuration
  2. https://dev.mysql.com/doc/refman/5.7/fr/encrypted-connection-protocoles-cidphers.html#encypted-connection-protocol-négotiation

    ne peut pas laisser des commentaires pour @Drew réponse, alors laissez-le en être neuf.


0 commentaires