2010-12-01 88 views
6

私はssl接続でアクセスできるmysqlデータベースにDjangoを接続しようとしています。これを設定するには?ssl接続でDjangoをmysqlデータベースに接続するには?

私の最初の推測は、データベース定義の 'OPTIONS'プロパティを設定することです。しかし、私は使用可能なオプションについての情報を見つけることができません。オプション 'ssl': '/map/to/ca-cert.pem'は機能しません。

mysql -h url.to.host -u lizard -p --ssl-ca=./ca-cert.pem 

編集:

次のコマンドが動作しているようです[OK]を私のpython-のMySQLdbのドキュメントを見ていますが...多分私はそこに答えを見つけることができます。

答えて

12

Djangoは、Python MySQLdbライブラリを使用してMySQLとのインタフェースをとります。 the MySQLdb connection documentationを見ると、sslオプションに辞書の引数が必要なようです。だから、これはうまくいくかもしれない:

CA証明書 クライアントキー、クライアント 証明書

これらのキーを作成するための手順については、MySQLのドキュメントを参照してください:

'OPTIONS': {'ssl': {'key': '/map/to/ca-cert.pem'}} 
+0

ありがとうございました。また、 'key'ではなく 'ca'で動作します。その答えはこのページにあります:http://dev.mysql.com/doc/refman/5.5/en/mysql-ssl-set.html –

+2

「ca」は正しいオプションです。「key」はそれ自身ですMySQLは内容を検証しませんでした。ここでそれについてもっと読む:http://stackoverflow.com/questions/7287088/ca-ssl-parameter-for-python-mysqldb-not-working-but-key-doesそしてこちら:http://bugs.mysql。 com/bug.php?id = 62743 –

6

のmysqlクライアントは、3つのキーを備えていなければなりませんサーバーを設定する: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>' 
           } 
          } 
      } 
} 
+1

cert + key **認証**が使用されていない限り(ネットワークトラフィックの暗号化とは対照的に)、最初の文の「必須」は正しいとは思えません。 – jblaine

0

私は、「SSL接続エラーを得ていた:SSL_CTX_set_default_verify_pathsに失敗しました。 ') "実行時のエラーpython manage.py migrate

私はpipを使ってdjango-mysql-sslパッケージをインストールしました。それはまだ動作していませんでした。私は "ca"を "ssl-ca"に変更しなければなりませんでした。

'OPTIONS': { 
        'ssl': {'ssl-ca': '<PATH TO CA CERT>', 

          } 
         } 

実際に暗号化を使用しているのかどうかはわかりませんが、もはやエラーをスローしません。 AWS mariaDBインスタンスに接続されたローカルのdjangoアプリを実行しています。

関連する問題