Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Отслеживание TLS-протокола в WinInet для HTTPS в Delphi

Delphi , ОС и Железо , Windows

При работе с HTTPS в среде Delphi и использовании компонентов WinInet может возникнуть необходимость узнать, какой протокол TLS используется в текущей сессии. Вопрос о том, существует ли функция в WinInet, которая возвращает информацию о протоколе TLS, актуален для разработчиков, стремящихся обеспечить безопасность и соответствие стандартам.

Проблема

Рассмотрим задачу, когда мы используем WinInet и Delphi для общения по протоколу HTTPS. Нам необходимо узнать, какой протокол TLS был использован при установлении сессии, например TLS 1.1, TLS 1.2 и т.д.

Исследование WinInet

После изучения документации WinInet, ближайшей функцией, которая может быть полезна для получения информации о протоколе, является InternetQueryOption с параметром INTERNET_OPTION_SECURITY_CERTIFICATE или INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT. В структуре INTERNET_CERTIFICATE_INFO есть поле lpszProtocolName, которое теоретически должно содержать имя протокола, использованного для обеспечения безопасного соединения.

Результаты тестирования

При тестировании на Windows 7 с Internet Explorer 11 было обнаружено, что поле lpszProtocolName возвращает пустую строку. Это означает, что WinInet не предоставляет прямой возможности узнать, какой протокол TLS используется в сессии.

Пример кода

Далее представлен пример кода на Object Pascal (Delphi), который демонстрирует попытку получения информации о сертификате, включая протокол TLS:

program test_wininet;
{$APPTYPE CONSOLE}
{$R *.res}
uses
  System.SysUtils,
  Winapi.Windows,
  Winapi.Wininet;

type
  // ... типы и процедуры для работы с сертификатами ...

procedure Main;
var
  H, H2: HINTERNET;
  Info: TInternetCertificateInfo;
  SysTime: TSystemTime;
begin
  // ... инициализация и открытие соединения ...

  try
    H2 := InternetOpenUrl(H, 'https://www.microsoft.com', nil, 0, INTERNET_FLAG_NO_UI or INTERNET_FLAG_SECURE, 0);
    try
      // ... получение информации о сертификате ...
      Writeln('Subject:');
      Writeln(Info.lpszSubjectInfo);
      Writeln('Issuer:');
      Writeln(Info.lpszIssuerInfo);
      Writeln(Format('Security Protocol: %s', [Info.lpszProtocolName]));
      // ... дополнительные данные о сертификате ...
    finally
      // ... освобождение ресурсов ...
    end;
  finally
    InternetCloseHandle(H2);
  end;
end;

// ... основной блок программы ...

Выводы

На основе тестирования можно сделать вывод, что WinInet не предоставляет функциональности для получения информации о протоколе TLS, который используется в сессии. Поле lpszProtocolName в структуре INTERNET_CERTIFICATE_INFO не содержит необходимых данных, возвращая пустую строку.

Альтернативные подходы

Если вам необходимо узнать информацию о протоколе TLS, возможно, стоит рассмотреть использование других библиотек и инструментов, которые предоставляют более детальную информацию о сетевых соединениях, например, OpenSSL или SChannel.

Заключение

В данной статье был рассмотрен вопрос отслеживания TLS-протокола в WinInet для HTTPS в Delphi. На основе анализа документации и примеров кода был сделан вывод о том, что WinInet не предоставляет прямой возможности для получения такой информации. Разработчикам рекомендуется искать альтернативные решения для получения данных о протоколе TLS.

Создано по материалам из источника по ссылке.

Вопрос связан с необходимостью отслеживания информации о протоколе TLS при использовании WinInet для работы с HTTPS в среде Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 11:19:14/0.0036780834197998/0