如何通过ssl连接将Django连接到mysql数据库?

Jac*_* Ha 8 mysql django ssl

我正在尝试将Django连接到可通过ssl连接访问的mysql数据库.我该如何配置?

我的第一个猜测是设置数据库定义的'OPTIONS'属性.但是,我找不到有关可能使用的选项的信息.选项'ssl':'/ map/to/ca-cert.pem'不起作用.

以下命令似乎有效:

mysql -h url.to.host -u lizard -p --ssl-ca=./ca-cert.pem
Run Code Online (Sandbox Code Playgroud)

编辑:好的我正在看python-mysqldb文档...也许我可以在那里找到答案.

Dan*_*man 15

Django使用Python MySQLdb库与MySQL进行交互.查看MySQLdb连接文档,看起来该ssl选项需要字典参数.所以这可能有效:

'OPTIONS': {'ssl': {'key': '/map/to/ca-cert.pem'}}
Run Code Online (Sandbox Code Playgroud)

  • 似乎'ca'是正确的选项,'key'本身导致MySQL无法验证内容.在这里阅读更多相关信息:http://stackoverflow.com/questions/7287088/ca-ssl-parameter-for-python-mysqldb-not-working-but-key-does和这里:http://bugs.mysql. COM/bug.php?ID = 62743 (3认同)

Dre*_*rew 7

必须为mysql客户端提供三个密钥:

CA证书客户端证书客户端密钥

有关创建这些密钥和设置服务器的说明,请参阅Mysql文档:http://dev.mysql.com/doc/refman/5.5/en/creating-ssl-certs.html

注意:有一个开放的问题似乎与使用openssl v1.0.1为mysql 5.5.x创建证书有关(http://bugs.mysql.com/bug.php?id=64870)

这是Django设置文件的示例条目:

DATABASES = {
'default': {
              'ENGINE': 'django.db.backends.mysql',  
              'NAME': '<DATABASE NAME>',                     
              'USER': '<USER NAME>',
              'PASSWORD': '<PASSWORD>',
              'HOST': '<HOST>', 
              'PORT': '3306'    
              'OPTIONS':  {
                        'ssl': {'ca': '<PATH TO CA CERT>',
                                'cert': '<PATH TO CLIENT CERT>',
                                'key': '<PATH TO CLIENT KEY>'
                                }
                          }
            }
}
Run Code Online (Sandbox Code Playgroud)

  • 我不完全确定第一句中的“必须是”是否正确,除非使用了 cert+key **authentication**(与仅加密网络流量相反)。 (2认同)