Python MySQLDB SSL-соединение
Я установил в своей базе данных требование 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',
}
}
2 ответов
нашел ответ. Параметры должны выглядеть следующим образом:
'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.икс (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>'
}
}
}
}