2015-11-26 26 views
6

私はPythonを使用してMySQLデータベースに接続しようとしていますが、奇妙なエラーが発生しています。私はmysqlコンソールコマンドから同じ接続値を使用することができ、問題なく接続することができます。pymysqlがSSLで接続できない

 
Traceback (most recent call last): 
    File "/opt/datadog-agent/agent/checks/__init__.py", line 661, in run 
    self.check(copy.deepcopy(instance)) 
    File "/opt/datadog-agent/agent/checks.d/delayed_job.py", line 10, in check 
    connection = pymysql.connect(**instance) 
    File "/opt/datadog-agent/embedded/lib/python2.7/site-packages/pymysql/__init__.py", line 88, in Connect 
    return Connection(*args, **kwargs) 
    File "/opt/datadog-agent/embedded/lib/python2.7/site-packages/pymysql/connections.py", line 644, in __init__ 
    self._connect() 
    File "/opt/datadog-agent/embedded/lib/python2.7/site-packages/pymysql/connections.py", line 869, in _connect 
    raise exc 
OperationalError: (2003, u"Can't connect to MySQL server on '192.168.199.86' ([SSL: SSL_NEGATIVE_LENGTH] dh key too small (_ssl.c:590))") 

私が実行している:これは私が取得していますエラーです

class DelayedJobCheck(AgentCheck): 
    def check(self, instance): 
     self.log.info("testing connection") 
     self.log.info(instance) 

     connection = pymysql.connect(**instance) 

     cur = cnx.cursor(buffered=True) 
     cur.execute("SHOW STATUS LIKE 'Ssl_cipher'") 
     print(cur.fetchone()) 
     cur.close() 
     cnx.close() 

     self.gauge('hello.world', 1) 

AgentCheckをインポート

輸入pymysql チェックから:ここで

は、私が使用しています正確なコードですこのコードはUbuntuボックスにありますが、当初はSSL CAが自己生成証明書である可能性があります。だから私はステップを踏んだ hereしかし、それは何の違いもありませんでした。また、私は、このコードを実行しているプロセスがcertファイルへの完全なアクセスを持っていることを確認しました

それ以外の原因は何ですか?

+0

が見えます。 次のコマンドを実行して、以前のバージョンにあなたのOpenSSLパッケージをダウングレード: 須藤はapt-getをインストールのlibssl-devを= 1.0.1-4ubuntu3 のlibssl-docの= 1.0.1-4ubuntu3 libssl1.0.0 = 1.0.1-4ubuntu3 openssl = 1.0.1-4ubuntu3 これがうまくいかない場合は、ここでもっと長い手順を試してみてください。 https://groups.google.com/d/msg/security-onion/E7HdGGUuq6c/gqNBbT5TLw0J – Shahram

答えて

0

エラー情報として、dhキーが小さすぎると、大きなものが助けになることがあります。 dh4096.pemでデフォルトのdh512.pemファイルを置き換え

sudo wget "https://git.openssl.org/gitweb/?p=openssl.git;a=blob_plain;f=apps/dh4096.pem" -O dh4096.pem

参考:これはLinuxでの最新のOpenSSLパッケージのセキュリティ更新プログラムであるようにhttp://www.alexrhino.net/jekyll/update/2015/07/14/dh-params-test-fail.html

関連する問題