【问题标题】:Python MySQLDB SSL ConnectionPython MySQLDB SSL 连接
【发布时间】:2011-03-11 13:27:03
【问题描述】:

我将我的数据库设置为需要 ssl。我已经确认我可以通过传递公钥通过命令行连接到数据库 [并确认如果我不传递公钥我无法连接]

我在 django 应用程序中遇到与未传递密钥时相同的错误。看来我没有正确设置我的 settings.py 以将路径传递给公钥。

我的设置有什么问题?我正在使用 python-mysqldb。

DATABASES['default'] = {
    'ENGINE': 'django.db.backends.mysql',
    'HOST': 'my-host-goes-here',
    'USER': 'my-user-goes-here',
    'NAME': 'my-db-name-goes-here',
    'PASSWORD': 'my-db-pass-goes-here',
    'OPTIONS': {
        'SSL': '/path/to/cert.pem',
    }
}

【问题讨论】:

  • 你能用裸MySQLdb连接吗?
  • 是的,我可以按照以下说明进行连接:riskable.com/?p=271 但我似乎无法在 django 的数据库选项中找到如何表达 ssl_settings 的等价物。

标签: python mysql database django ssl


【解决方案1】:

找到答案。选项应如下所示:

'OPTIONS': {'ssl': {'ca':'/path/to/cert.pem',},},

确保保留逗号,否则解析似乎会失败?

【讨论】:

    【解决方案2】:

    mysql客户端必须提供三个key:

    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>'
                                    }
                              }
                }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 2019-11-07
      • 2016-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多