Скачивание файла по HTTPS с сайта с самоподписанным сертификатомТестирую свой Downloader-виджет, использующий QNetworkAccessManager.
И обратил внимание, что он не может скачать файл по HTTPS с хабрастраджа, например, вот такой:
https://habrastorage.org/files/28a/a2f/a47/28aa2fa47fd5411c8bb615a381fd5e6a.jpgПри этом с ЛОРа по HTTPS скачивает нормально:
https://www.linux.org.ru/gallery/12279480-icon.jpgwget мне показал, что 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 сертификат".
Конечная задача - так изменить код примера, чтобы файл с хабрастрораджа начал скачиваться.