簡體   English   中英

Python MySQLDB SSL連接

[英]Python MySQLDB SSL Connection

我將我的數據庫設置為要求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',
    }
}

找到了答案。 選項應如下所示:

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

確保你保留逗號,否則解析似乎失敗了?

必須為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>'
                                }
                          }
            }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM