В Qt5 (вполоть до Qt 5.10) с некоторых пор появилась проблема: QNetworkAccessManager не может полноценно работать с openssl 1.1.0f-3+deb9u2, и поэтому не работает получение данных по HTTPS протоколу. Ошибки примерно такие:
13:03:19 [WRN] QSslSocket: cannot call unresolved function SSLv23_client_method
13:03:19 [WRN] QSslSocket: cannot call unresolved function SSL_CTX_new
13:03:19 [WRN] QSslSocket: cannot call unresolved function SSL_library_init
13:03:19 [WRN] QSslSocket: cannot call unresolved function ERR_get_error
13:03:19 [WRN] QSslSocket: cannot call unresolved function ERR_get_error
Проблема решается так: необходимо установить в систему более старую библиотеку libssl1.0.2. В Debian Linux 9 две эти версии библиотеки libSSL без проблем устанавливаются параллельно через менеджер пакетов. И нужно заставить программу использовать более старую версию libSSL.
Вот пример решения: https://www.linux.org.ru/forum/development/14233348
Цитата из обсуждения:
Хм, в моем случае из пакета libssl1.0.2 устанавливаются файлы:
/usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.2
/usr/lib/x86_64-linux-gnu/libssl.so.1.0.2
Есть еще каталог
/usr/lib/x86_64-linux-gnu/openssl-1.0.2
Но в нем линков нет, только подкаталог engines. Сделал в нем линки вручную:
ln -s ../libcrypto.so.1.0.2 libcrypto.so
ln -s ../libssl.so.1.0.2 libssl.so
Запускаю бинарь NetworkManagerDemo командой, в которой предварительно устанавливается переменная окружения LD_LIBRARY_PATH:
LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/openssl-1.0.2/:$LD_LIBRARY_PATH ./NetworkManagerDemo
В таком виде заработало, только в выхлопе появляются предупреждения:
qt.network.ssl: QSslSocket: cannot resolve SSLv3_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv3_server_method
Но хотя бы работает, благодарю.