Python: Ошибка с mysql.connector и SSL, но работает с pymysql.connect

#python #mysql #ssl #pymysql

Вопрос:

Для проекта мне нужно внести изменения в существующий код для поддержки подключения MySQL с использованием SSL-сертификатов. Реализованный пакет является mysql.connector и в значительной степени интегрирован в другие части исходного кода, поэтому его замена pymysql не является вариантом.

Используя следующую конфигурацию:

 config = {  'user': 'ssl-username',  'password': 'password',  'host': '4.1.3.2',  'ssl_ca': '/path/to/ca.pem',  'ssl_cert': '/path/to/cert.pem',  'ssl_key': '/path/to/key.pem' }  

Следующие попытки завершаются неудачей:

 mysql.connector.connect(**config, client_flags=[ClientFlag.SSL])  
 mysql.connector.connect(**config, client_flags=[ClientFlag.SSL], use_pure=True)  

Следующие работы:

 pymysql.connect(**config)  

Трассировка неудачных попыток предоставляет следующую информацию:

 Traceback (most recent call last):  File "/home/user/.local/lib/python3.8/site-packages/mysql/connector/network.py", line 421, in switch_to_ssl  self.sock.do_handshake()  File "/usr/lib/python3.8/ssl.py", line 1309, in do_handshake  self._sslobj.do_handshake() ssl.SSLError: [SSL] internal error (_ssl.c:1123)  During handling of the above exception, another exception occurred:  Traceback (most recent call last):  File "lt;stdingt;", line 1, in lt;modulegt;  File "/home/user/.local/lib/python3.8/site-packages/mysql/connector/__init__.py", line 179, in connect  return MySQLConnection(*args, **kwargs)  File "/home/user/.local/lib/python3.8/site-packages/mysql/connector/connection.py", line 95, in __init__  self.connect(**kwargs)  File "/home/user/.local/lib/python3.8/site-packages/mysql/connector/abstracts.py", line 716, in connect  self._open_connection()  File "/home/user/.local/lib/python3.8/site-packages/mysql/connector/connection.py", line 208, in _open_connection  self._do_auth(self._user, self._password,  File "/home/user/.local/lib/python3.8/site-packages/mysql/connector/connection.py", line 134, in _do_auth  self._socket.switch_to_ssl(**ssl_options)  File "/home/user/.local/lib/python3.8/site-packages/mysql/connector/network.py", line 426, in switch_to_ssl  raise errors.InterfaceError( mysql.connector.errors.InterfaceError: 2055: Lost connection to MySQL server at '34.91.73.12:3306', system error: 1 [SSL] internal error (_ssl.c:1123) gt;gt;gt; del conn_args["client_flags"] gt;gt;gt; mysql.connector.connect(**conn_args) Traceback (most recent call last):  File "/home/user/.local/lib/python3.8/site-packages/mysql/connector/network.py", line 421, in switch_to_ssl  self.sock.do_handshake()  File "/usr/lib/python3.8/ssl.py", line 1309, in do_handshake  self._sslobj.do_handshake() ssl.SSLError: [SSL] internal error (_ssl.c:1123)  

Что может быть не так, так как сообщение об ошибке не очень описательно.