Павел Дорофеев
Павел Дорофеев29 мая 2022 г. 11:28

Как реализовать TLSv1.2 на Qt 4.8.1

Изначально QSsl в Qt 4.8.1 (выпущенный примерно 13 лет назад) использовал только максимум TLS v1.0.

Сегодня 2022г и Tls v1.0 и v1.1 блокируются почти всеми приличными сайтами в интернете.

Qt в QSsl использует открытую библиотеку openssl.


TLS v1.2 появляется в openssl версии 1.0.2.

Собрать библиотеки openssl 1.0.2 не проблема и динамически и статически (ssleay32.dll/lib, libeay32.dll/lib).

Но вот как использовать их в Qt 4.8.1, чтобы соединение происходило по Tlsv1.2 окпзывается задачкой не тривиальной (на первый взгляд).

Что же делать? Надо изучать исходники openssl, чтобы понять для начала как вызывается Tls1.2.

И оказывается, что все на самом деле не сложно, так как разработчики openssl не меняли общую логику работы исходников. Просто в нужном месте в файле qsslsocket_openssl.cpp надо создать контекст для соединения через соответствующий вариант функции:

switch (configuration.protocol) {
    case QSsl::SslV2:
#ifndef OPENSSL_NO_SSL2
        ctx = SSL_CTX_new(client ? SSLv2_client_method() : SSLv2_server_method());
#else
        ctx = 0; // SSL 2 not supported by the system, but chosen deliberately -> error
#endif
        break;
    case QSsl::SslV3:

#ifndef OPENSSL_NO_SSL3 //++
        ctx = SSL_CTX_new(client ? SSLv3_client_method() : SSLv3_server_method());
#else
        ctx = 0; // SSL 3 not supported by the system, but chosen deliberately -> error
#endif
        break;

    case QSsl::SecureProtocols: // SslV2 will be disabled below
    case QSsl::TlsV1SslV3: // SslV2 will be disabled below
    case QSsl::AnyProtocol:
    default:
        //--ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method());
        //--ctx = SSL_CTX_new(client ? SSLv23_client_method() : SSLv23_server_method());
        ctx = SSL_CTX_new(client ? TLSv1_2_client_method() : TLSv1_2_server_method());
        break; //++

    case QSsl::TlsV1:
        ctx = SSL_CTX_new(client ? TLSv1_client_method() : TLSv1_server_method());
        break;
    }

В общем-то и все что нужно.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

i
  • 7 ноября 2024 г. 21:38

order priligy online uk An association between fertility treatment and childhood epilepsy has previously been shown in a study of some 80, 000 singletons from the Danish National Birth Cohort 1997 to 2003 followed to a median age of 3

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
m
  • molni99
  • 26 октября 2024 г. 9:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80баллов,
  • Очки рейтинга4
m
  • molni99
  • 26 октября 2024 г. 9:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20баллов,
  • Очки рейтинга-10

C++ - Тест 003. Условия и циклы

  • Результат:42баллов,
  • Очки рейтинга-8
Последние комментарии
i
innorwall8 ноября 2024 г. 6:45
PyQt5 - Урок 001. QLineEdit IP Address priligy fda approval The second question is how successful is fertility treatment and that pertains
i
innorwall8 ноября 2024 г. 6:42
QML - Урок 004. Сигналы и слоты в Qt QML J Clin Endocrinol Metab 1977; 45 240 priligy buy Packer M, Rouleau J L, Swedberg K, et al
i
innorwall8 ноября 2024 г. 6:38
Как реализовать TLSv1.2 на Qt 4.8.1 order priligy online uk An association between fertility treatment and childhood epilepsy has previously been shown in a study of some 80, 000 singletons from the Danish National Birth …
i
innorwall8 ноября 2024 г. 6:14
Qt 5.8 released buy priligy 30mg In all girls gonadotropin levels rise in the newborns after delivery and remain elevated for up to 4 years of age
Сейчас обсуждают на форуме
i
innorwall8 ноября 2024 г. 6:00
добавить qlineseries в функции actigall metoprolol lek paralele HPV, which most often does not show symptoms for several years, can also cause vaginal and vulvar cancer in women and can lead to penile cancer in men buy …
9
9Anonim25 октября 2024 г. 17:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
ИМ
Игорь Максимов3 октября 2024 г. 12:05
Реализация навигации по разделам Спасибо Евгений!
F
Fynjy22 июля 2024 г. 12:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Следите за нами в социальных сетях