2010-07-04 5 views
5

ssl을 요구하도록 데이터베이스를 설정했습니다. 공개 키를 전달하여 명령 줄을 통해 db에 연결할 수 있는지 확인했습니다 [공개 키를 전달하지 않으면 연결할 수 없음을 확인했습니다]Python MySQLDB SSL 연결

내 장고 응용 프로그램에서 같은 오류가 발생하는 경우 나는 열쇠를 전달하지 않는다. 그것은 내 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', 
    } 
} 
+0

당신이 베어'MySQLdb'를 사용하여 연결 할 수 있었나요? –

+0

그래, 내가 다음 지침에 따라 연결할 수 있습니다 : http://homekable.com/?p=271 하지만 나는 django의 데이터베이스 옵션에서 ssl_settings를 표현하는 것과 동일한 방법을 찾을 수없는 것 같습니다. –

답변

8

답을 찾았습니다. 옵션은 다음과 같이 표시되어야합니다.

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

쉼표를 사용하면 구문 분석이 실패한 것으로 보입니까?

1

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)의 인증서를 만드는 것과 관련된 것으로 보이는 공개 문제가 있습니다.

이것은 장고의 설정 파일에 대한 예제 항목 :

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