Russian Qt Forum

Qt => Общие вопросы => Тема начата: 8Observer8 от Июнь 19, 2014, 10:09



Название: [Решено] QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: 8Observer8 от Июнь 19, 2014, 10:09
Привет!

Выдаются такие сообщения:
Цитировать
QSslSocket: cannot resolve TLSv1_1_client_method
QSslSocket: cannot resolve TLSv1_2_client_method
QSslSocket: cannot resolve TLSv1_1_server_method
QSslSocket: cannot resolve TLSv1_2_server_method
QSslSocket: cannot resolve SSL_select_next_proto
QSslSocket: cannot resolve SSL_CTX_set_next_proto_select_cb
QSslSocket: cannot resolve SSL_get0_next_proto_negotiated
QSslSocket: cannot call unresolved function SSL_get0_next_proto_negotiated

Не понимаю, что они означают. И в сети не нашёл простого решения, как от них избавиться. А вообще нужно ли от них избавляться? Это ничем не чревато?

Я подозреваю, что они выдаются при выполнении запроса get():
Код
C++ (Qt)
m_reply.reset(m_manager->get( QNetworkRequest( QUrl( url ) ) ) );
 

Вот весь код модуля:

Downloader.h
Код
C++ (Qt)
#ifndef DOWNLOADER_H
#define DOWNLOADER_H
 
#include <memory>
 
#include <QObject>
#include <QString>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QNetWorkAccessManager>
 
class Downloader : public QObject
{
   Q_OBJECT
 
public:
 
   void fetch( const QString &url )
   {
       m_reply.reset(m_manager->get( QNetworkRequest( QUrl( url ) ) ) );
       connect( m_reply.get( ), SIGNAL( finished( ) ),
                this, SLOT( replyFinished( ) ) );
       connect( m_reply.get( ), SIGNAL( downloadProgress( qint64, qint64 ) ),
                this, SLOT( slotDownloadProgress(qint64, qint64 ) ) );
   }
 
signals:
   void signalWithContent( QString * );
   void downloadProgress(qint64 bytesReceived, qint64 bytesTotal);
 
private slots:
   void replyFinished( )
   {
       QByteArray data = m_reply->readAll( );
       QString content( data );
       emit signalWithContent( &content );
   }
 
   void slotDownloadProgress( qint64 bytesReceived, qint64 bytesTotal )
   {
       emit downloadProgress( bytesReceived, bytesTotal );
   }
 
private:
   std::shared_ptr<QNetworkAccessManager> m_manager =
           std::make_shared<QNetworkAccessManager>( this );
 
   std::shared_ptr<QNetworkReply> m_reply;
};
 
#endif // DOWNLOADER_H
 


Название: Re: QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: Serr500 от Июнь 19, 2014, 10:28
OpenSSL в системе установлен?


Название: Re: QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: 8Observer8 от Июнь 19, 2014, 10:38
Скорее всего, нет. А какую версию посоветуете? Прям отсюда качать? http://www.openssl.org/source/ Или я в исходники залез? Там есть нормальный установщик?


Название: Re: QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: carrygun от Июнь 19, 2014, 10:54
Можно найти библиотеки и положить их просто рядом с приложением. Или установить в систему. Все находится в гугле.


Название: Re: QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: Serr500 от Июнь 19, 2014, 11:36
Там есть нормальный установщик?
Есть. http://slproweb.com/products/Win32OpenSSL.html Выбираем 1.0.1h Light, соответствующую разрядности Qt. Не забудьте поставить MSVC Redist, иначе работать не будет.

Можно найти библиотеки и положить их просто рядом с приложением.
Положить нужно будет ssleay32.dll, libeay32.dll и msvcr90.dll.


Название: Re: QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: 8Observer8 от Июнь 20, 2014, 09:49
Парни, спасибо за ответы! Пока устанавливать OpenSSL не стал. Решил обойтись библиотеками. Скачал указанные вами .dll с сайта www.dll-files.com:
- libeay32.dll - http://www.dll-files.com/dllindex/dll-files.shtml?libeay32
- ssleay32.dll - http://www.dll-files.com/dllindex/dll-files.shtml?ssleay32
- msvcr90.dll - http://www.dll-files.com/dllindex/dll-files.shtml?msvcr90

И положил в папку:
- build-ParserHtmlRGB-Desktop_Qt_5_3_0_MinGW_32bit-Debug/debug

Сообщения по-прежнему выдаются :(


Название: Re: QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: Serr500 от Июнь 20, 2014, 09:58
Вот ведь лезут на идиотские сайты... Вирусню оттуда ещё не схватили? Поставьте последний OpenSSL в систему и проверьте.

P.S. А то древнее дерьмо, что лежит на dll-files вообще от msvcr80 зависит...


Название: Re: QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: 8Observer8 от Июнь 20, 2014, 10:33
Я позже скачаю, поставлю и попробую, так как у меня usb-модем билайн. Скорость не выше 80-300 КБит/c. Скачивать могу только очень рано утром, до 7.00-8.00, когда скорость: 1.5-2.5 МБит/c. Местность, видимо, такая.

Напишите, пожалуйста, кратко: чем чревато отсутствие OpenSSL на машине пользователя?

Правильным ли будет решение не заставлять пользователей устанавливать OpenSSL, а просто располагать dll рядом с exe и так передавать пользователям?

Если у Вас есть эти dll под рукой, Вы могли бы прикрепить их к сообщению?

Вот ведь лезут на идиотские сайты... Вирусню оттуда ещё не схватили? Поставьте последний OpenSSL в систему и проверьте.
Я думал, что если этот сайт в top'е Google-поиска, то ему можно доверять... Может поэтому меня Norton замучил такими сообщениями (справа-внизу экрана), которые появляются через каждые 15 секунд, и я не знаю, как их отключить:
http://i6.pixs.ru/storage/4/2/1/224png_2366229_12633421.png
Если кто-нибудь подскажет, буду очень рад. А то они бесят. Хочется антивирус отключить, но страшно.


Название: Re: QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: Bepec от Июнь 20, 2014, 10:44
Отформатируй диск :D :D
Сайт в топе лишь потому, что он хорошо прорекламирован :)

А вот такое красочное окошко как раз и говорит об отражении атаки. Правда я нодом не пользуюсь - он дырявый.

PS вообще антивирусом не пользуюсь. Раньше было, сейчас проще посмотреть процессы/загрузку сети и вырубить вирусняк :)


Название: Re: QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: Old от Июнь 20, 2014, 10:45
Если кто-нибудь подскажет, буду очень рад. А то они бесят. Хочется антивирус отключить, но страшно.
Конечно, с троянами веселей. Сразу чувствуешь себя членом большой дружной семьи bot-net. :)


Название: Re: QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: Serr500 от Июнь 20, 2014, 11:15
Напишите, пожалуйста, кратко: чем чревато отсутствие OpenSSL на машине пользователя?
Тем, что Qt-приложения не смогут работать через SSL.

Правильным ли будет решение не заставлять пользователей устанавливать OpenSSL, а просто располагать dll рядом с exe и так передавать пользователям?
Это решение будет работающим. Правильным или нет - сложно сказать. Здесь возможны споры. А пользователя вовсе не обязательно заставлять устанавливать, эту работу вполне может выполнить инсталлятор вашего приложения.

Если у Вас есть эти dll под рукой, Вы могли бы прикрепить их к сообщению?
К сожалению, нет...

Я думал, что если этот сайт в top'е Google-поиска, то ему можно доверять...
Топу нельзя доверять. В топе всегда проплаченные.


Название: Re: QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: 8Observer8 от Июнь 20, 2014, 12:37
Ещё не разбирался, как создавать свой инсталятор. Может на этом примере попробую когда-нибудь. У меня тут две мысли возникли:
- либо инсталятор копирует нужные dll в нужное место. Тогда это тоже самое, что и если бы я просто положил эти dll к exe, залил в архив и отдал пользователям
- либо инсталятор лезет в инет и устаналивает "MSVC Redist" и "OpenSSL" сам


Название: Re: QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: Zerkin от Июнь 20, 2014, 12:52
Если у Вас есть эти dll под рукой, Вы могли бы прикрепить их к сообщению?

Держи. К соощению не прикрепляю - сплошные проблемы, то файлы меньше 500 кб, то формат не тот :)   https://drive.google.com/folderview?id=0Bx0tUxTiRS9AaHlkZ1RuTTRjOFU&usp=sharing

Топу нельзя доверять. В топе всегда проплаченные.

Всё куплено  ;D


Название: Re: QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: Zerkin от Июнь 20, 2014, 12:57
Ещё не разбирался, как создавать свой инсталятор. Может на этом примере попробую когда-нибудь.

bitrock какой-нибудь посмотри


Название: Re: QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: 8Observer8 от Июнь 20, 2014, 13:13
Zerkin, спасибо! Проблема решена :)

По поводу инсталятора. Если мне необходим будет OpenSSL для работы приложения, то инсталятор сам скачивает "MSVC Redist" и "OpenSSL" и устанавливает их?

Всё же, что касается этих трёх библиотек, то получается, что для моего приложения, которое скачивает контент html-страницы, они вообще не нужны? Их даже кидать к exe не надо и тем более писать инсталятор? Пользователь же эти сообщения не увидит?


Название: Re: [Решено] QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: Fregloin от Июль 08, 2014, 18:00
Приветствую. После установки 5.3.1 вылезла эта же проблема.
А проблема еще и в том, что файлы mcvcredist x64 не хотят устанавливаться на моем компе, просто говорит что failed to install и все. Винда семерка, 64 бита, лицензионная.


Название: Re: [Решено] QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: Bepec от Июль 08, 2014, 18:13
MSVC рантайм x64 уже у вас должен стоять как бы.  Это стандарт.
А вот почему failed хз - мб у вас покоцанный пак?


Название: Re: [Решено] QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: Hellraiser от Июль 09, 2014, 07:28
Студийный рантайм в свежеустановленной лицензионной винде (а не чудо-сборках от продвинутой школоты) никогда не присутствует - это совершенно точно. Но, другое дело, что практически любая программка считает своим долгом при установке его запихнуть. И не факт, что все ставят правильный и корректный рантайм. Но его можно совершенно спокойно удалить и поставить правильные с MS, не забывая, что для чистых версий студий и студий с SP рантаймы разные - ставить надо все.


Название: Re: [Решено] QSslSocket: cannot resolve TLSv1_1_client_method
Отправлено: 8Observer8 от Август 29, 2014, 15:45
Приветствую. После установки 5.3.1 вылезла эта же проблема.
Я поставил Qt 5.3.1, положил те dll, о которых выше писали рядом в exe. У меня сообщения не выдаются. Эту ссылку давали выше: https://drive.google.com/folderview?id=0Bx0tUxTiRS9AaHlkZ1RuTTRjOFU&usp=sharing