URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10069
[ Назад ]

Исходное сообщение
"Qt QNetworkAccessManager скачивание по HTTPS не всегда работает"

Отправлено xintrea , 20-Янв-16 00:47 
QNetworkAccessManager: скачивание файла по HTTPS с сайта с самоподписанным сертификатом

Тестирую свой Downloader-виджет, использующий QNetworkAccessManager.

И обратил внимание, что он не может скачать файл по HTTPS с хабрастраджа, например, вот такой:

https://habrastorage.org/files/28a/a2f/a47/28aa2fa47fd5411c8...

При этом с ЛОРа по HTTPS скачивает нормально:

https://www.linux.org.ru/gallery/12279480-icon.jpg

wget мне показал, что habrastorage.org имеет самоподписанный сертификат.

Во время работы с любым из вышеприведенных линков, виджет выдает такую ошибку в консоль:


qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv2_server_method

Но в случае ЛОРа файл скачивается, а в случае хабрастораджа приходит ткой ответ:


<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

Для отладки я сделал небольшой пример:

http://rghost.ru/8gxlBNYzz (4.3 Кб)

К сожалению, я плохо разбираюсь в этих HTTPS и сертификатах. Подозреваю, что нужно настроить экземпляр QNetworkRequest в методе startNextDownload() путем установки setSslConfiguration().

Может быть поможет тот факт, что, например, в Windows wget с дефолтными настройками не может загрузить файл с хабрастораджа. И помогает опция --no-check-certificate. В Linux wget молча скачивает файл.

Но в методах класса QSslConfiguration не нашел, как устанавливать режим "не проверять SSL сертификат".

Конечная задача - так изменить код примера, чтобы файл с хабрастрораджа начал скачиваться.


Содержание

Сообщения в этом обсуждении
"Qt QNetworkAccessManager скачивание по HTTPS не всегда работает"
Отправлено Аноним , 22-Янв-16 13:04 
Впиши user-agent браузера.