2015-11-26 30 views
6

Tôi đang cố gắng kết nối với cơ sở dữ liệu MySQL bằng python nhưng tôi gặp phải một lỗi lạ. Nó được kết hợp bởi thực tế là tôi có thể sử dụng cùng một giá trị kết nối từ lệnh điều khiển mysql và nó kết nối mà không có vấn đề gì.pymysql không thể kết nối với SSL

Đây là mã chính xác tôi đang sử dụng:

nhập khẩu pymysql từ kiểm tra nhập khẩu AgentCheck

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) 

Đây là lỗi mà tôi nhận được:

 
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))") 

Tôi đang chạy mã này trên một hộp Ubuntu và tôi mặc dù ban đầu rằng nó có thể là vì SSL CA là một cert tự tạo ra. Vì vậy, tôi đã làm theo các bước here Nhưng, nó không tạo ra bất kỳ sự khác biệt nào. Ngoài ra tôi đã xác minh rằng quá trình đang chạy mã này có quyền truy cập đầy đủ vào các tệp chứng nhận

Bất kỳ ý tưởng nào khác có thể gây ra điều này?

+0

Hình như đây là một bản cập nhật bảo mật cho gói openssl mới nhất trong Linux. Hạ cấp gói OpenSSL của bạn xuống phiên bản trước bằng cách chạy lệnh sau: sudo apt-get cài đặt libssl-dev = 1.0.1-4ubuntu3 libssl-doc = 1.0.1-4ubuntu3 libssl1.0.0 = 1.0.1-4ubuntu3 openssl = 1.0.1-4ubuntu3 Nếu điều đó không phù hợp với bạn, đây là một số bước dài hơn để thử. https://groups.google.com/d/msg/security-onion/E7HdGGUuq6c/gqNBbT5TLw0J – Shahram

Trả lời

Các vấn đề liên quan