[英]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.