Я установил Sql Server 2019 Developer Edition и mssql-tools на моем минимальном Ubuntu 20.04. Я могу подключиться к своему локальному хосту без проблем, но когда я хочу удаленно подключиться к другому серверу sql:
sqlcmd -S <server> -U <username> -P <password>
Я сталкиваюсь с этой ошибкой:
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol].
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Client unable to establish connection.
У меня есть эта проблема один раз в Debian 10, и я также ищу решение в сети, поэтому после этого я вручную меняю свой openssl.conf
(требуется разрешение su):
nano /etc/ssl/openssl.cnf
и добавляю их в свой файл:
ess_cert_id_alg = sha1
под [tsa_config1]
заголовок
openssl_conf = default_conf
вверху
следующий в конце:
[default_conf]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
MinProtocol = TLSv1.0
CipherString = DEFAULT @ SECLEVEL = 1
Я знаю, что MinProtocol
и CipherString
обычно имеют значение TLSv1.2
и DEFAULT @ SECLEVEL = 2
, но, как я однажды упоминал в моем Debian 10, я отредактировал свой openssl.conf и изменил TLSv1.2
на TLSv1.0
и DEFAULT @ SECLEVEL = 2
до DEFAULT @ SECLEVEL = 1
и мое соединение исправлено, но в Ubuntu 20.04 минимальный не только не было этих строк, но и когда я снова вставлял их вручную, я сталкивался с той же ошибкой:
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol].
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Client unable to establish connection.
моя версия opnessl:
OpenSSL 1.1.1f 31 Mar 2020
Я также однажды понизил свой openssl до 1.0, но это не сработало либо!
Я не мог найти ничего другого, поэтому я пришел сюда, чтобы попросить о помощи, ценю вашу помощь.
Причина может заключаться в том, что ваш текущий openssl не поддерживает/отключил некоторые шифры (поддерживаемые вашей предыдущей установкой) и они требуются серверу. Просто сравните результат:
nmap --script ssl-enum-ciphers localhost
nmap --script ssl-enum-ciphers <DB SERVER IP>
Решение: попробуйте установить новую версию openssl (> 1.1.1f) вручную. Я обновился с 1.1.1f до 1.1.1h, и это решило мои проблемы, дополнительная настройка не требуется. Я также читал подобные случаи с 18.04 -> 20.04 и 1.1.1f, которые затронули других парней.
Ручная установка выглядит следующим образом:
wget https://www.openssl.org/source/latest.tar.gz -O openssl-1.1.1h.tar.gz
tar -zxvf openssl-1.1.1h.tar.gz
cd openssl-1.1.1h
./config
make
sudo make install
openssl version
sudo ldconfig
Надеюсь, это поможет
Обратите внимание, если после загрузки и распаковки tar директория выглядит примерно так: openssl-3.0.0
, тогда измените ее на эту вместо этого выполните описанные выше шаги, но если версия openssl завершается ошибкой
error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
, вам нужно скопировать еще несколько файлов:
sudo cp /usr/local/lib64/libcrypto.so.3 /usr/lib
sudo cp /usr/local/lib64/libssl.so.3 /usr/lib
sudo cp /usr/local/lib64/libssl.so /usr/lib