Как заставить QSslSocket поддерживать SSL с помощью установки OpenSSL? - PullRequest
1 голос
/ 05 мая 2019

Я пытаюсь запустить простой клиент / сервер для реализации связи с использованием QSslSocket.Я работаю в Windows (к сожалению) и использую QtCreator для большего удобства.

Когда я пытаюсь со стороны клиента подключиться к серверу, используя MyQSslSocket->connectToHostEncrypted(ip, port), я получаю следующее сообщение:

qt.network.ssl: QSslSocket :: connectToHostEncrypted: сбой инициализации TLS

Когда я печатаю выданную ошибку, я получаю следующее:

QAbstractSocket :: SocketError (20)

В документации мы можем обнаружить, что этот код ошибки соответствует QAbstractSocket::SslInternalError, описание которого:

"Библиотека SSLused сообщил о внутренней ошибке. Это, вероятно, является результатом неправильной установки или неправильной конфигурации библиотеки. "

После некоторых исследований я обнаружил, что Qt не предоставляет OpenSSL сам по себе, поэтому я установил его (двоичные файлы, для 32- и 64-разрядных версий, чтобы быть уверенным) отсюда https://slproweb.com/products/Win32OpenSSL.html.
Во время установки dll была скопирована в C: \ Windows \ System32 (для 64-разрядных).Затем я проверил, что переменная окружения PATH действительно содержит эту папку.

В этот момент я попытался снова, но у меня все еще была та же проблема, как будто установка OpenSSL все еще не найдена.

Когда я печатаю вывод следующих вызовов (в основной функции моего клиента):

qDebug() << QSslSocket::supportsSsl();
qDebug() << QSslSocket::sslLibraryVersionString();

я получаю следующие выходные данные:

false""

Мой вопрос: как заставить QSslSocket::supportsSsl() вернуть истину?

Если кто-нибудь может научить меня тому, что я пропустил, что я делаю неправильно и сказать мне, что я долженсделать, чтобы это SSL-соединение работало правильно, я был бы очень признателен.

Fareanor.

PS: Извините за длинный вопрос, но я думаю, что важно четко выявить проблемуи контекст, чтобы помочь вам легко понять проблему и дать мне более актуальные ответы.

1 Ответ

0 голосов
/ 07 мая 2019

Хорошо, благодаря советам @AlienPenguin и @Macias, моя версия OpenSSL была слишком свежей.

Наконец я установил ближайшую доступную версию той, которая использовалась для сборки Qt (котораяимеет смысл, я должен был подумать об этом), который можно найти, выполнив следующий вызов:

qDebug() << QSslSocket::sslLibraryBuildVersionString();

Проблема решена.

Еще раз спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...