2010-07-04 34 views
5

Configuré mi base de datos para requerir ssl. He confirmado que puedo conectarme a la base de datos mediante la línea de comando pasando la clave pública [y confirmé que no puedo conectar si no paso la clave pública]Python MySQLDB SSL Connection

Recibo el mismo error en mi aplicación django que cuando No paso una llave. Parece que no configuré mi settings.py correctamente para pasar la ruta a la clave pública.

¿Qué pasa con mi configuración? Estoy usando 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', 
    } 
} 
+0

¿Ha sido capaz de conectarse a través de 'desnudo MySQLdb'? –

+0

sí, me puedo conectar siguiendo estas instrucciones: http://riskable.com/?p=271 pero no puedo encontrar el equivalente de cómo expresar ssl_settings en las opciones de base de datos de django. –

Respuesta

8

Encontrado la respuesta. Las opciones deben tener este aspecto:

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

asegurarse de que mantener las comas, análisis parecía fallar de otra manera?

1

El cliente mysql debe estar provisto de tres teclas:

CA cert cliente cert cliente clave

Consulte la documentación de MySQL para las instrucciones para la creación de estas teclas y configurar el servidor: http://dev.mysql.com/doc/refman/5.5/en/creating-ssl-certs.html

NOTA: Hay un problema abierto que parece estar relacionado con el uso de openssl v1.0.1 para crear los certificados de mysql 5.5.x (http://bugs.mysql.com/bug.php?id=64870)

Ésta es una entrada de ejemplo para el archivo de configuración de 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>' 
           } 
          } 
      } 
}