Я пытаюсь подключиться к своей MariaDB с включенным SSL. На моей старой установке (Kubuntu 19.10) это работало. При новой установке (также новый ПК: Xubuntu 20.04) я получаю это сообщение об ошибке:
ssl.SSLError: [SSL: UNSUPPORTED_PROTOCOL] неподдерживаемый протокол (_ssl.c:1108)
Вот подробности моей установки:
Старая установка: python 3.7.5, pymysql 0.9.3, ssl.OPENSSL_VERSION = 1.1.1c 28 мая 2019 г.
Новая установка: python 3.8.2, pymysql 0.9.3, ssl. OPENSSL_VERSION = 1.1.1f 31 марта 2020 г.
Я скомпилировал python 3.7.5 на своем новом ПК –› я все еще получаю сообщение об ошибке.
Я скомпилировал python с другой версией SSL:
это работает: python 3.7.5, ssl.OPENSSL_VERSION = OpenSSL 1.1 .0m-dev xx XXX xxxx
это работает: python 3.7.5, ssl.OPENSSL_VERSION = OpenSSL 1.1.1h-dev xx XXX xxxx
это работает: python 3.8.2, ssl.OPENSSL_VERSION = OpenSSL 1.1.1h -dev хх ххх хххх
Это мой тестовый скрипт:
import os
import pymysql
#pymysql.connections.DEBUG = True
#pymysql._auth.DEBUG = True
host = "127.0.0.1"
port = 3306
ca = os.path.expanduser("~/ca-cert.pem")
ssl = {'ca': ca, 'check_hostname': False}
user = 'user'
passwd = 'passwd'
def test_ssl():
con = pymysql.connect(user=user, password=passwd, host=host, port=port, ssl=ssl)
con.close()
test_ssl()
CA-сертификат, который я создал следующим образом:
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca-cert.pem
Похоже, что одна конкретная версия openSSL не работает вместе с PyMySQL. Это может быть ошибка компиляции Xubuntu. Или это может быть конкретная версия (1.1.1f). Но я не знаю, как самому собрать эту версию.