EIdOSSLUnderlyingCryptoError - SSL3_GET_RECORD: неправильный номер версии (TLS 1.2) - PullRequest
0 голосов
/ 05 мая 2019

Я использую Delphi 2010, новейшую Indy 10.6.2 (5498) и OpenSSL 1.0.2r (с indy.fulgan.com), и я не могу заставить его использовать TLS 1.2. Когда я открываю страницу, упомянутую позже, она возвращает EIdOSSLUnderlyingCryptoError:

Ошибка подключения по SSL. Ошибка: 1408F10B: SSL подпрограммы: SSL3_GET_RECORD: неправильный номер версии

Вот код, который я использую, чтобы открыть веб

var
  IdHTTP: TIdHTTP;
begin
  IdHTTP:=TIdHTTP.Create;
  try
    IdHTTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
    TIdSSLIOHandlerSocketOpenSSL(IdHTTP.IOHandler).SSLOptions.Method := sslvTLSv1_2;
    TIdSSLIOHandlerSocketOpenSSL(IdHTTP.IOHandler).SSLOptions.SSLVersions := [sslvTLSv1_2];

    IdHTTP.Get('https://...');
  finally
    IdHTTP.Free;
  end;
end;

Когда я открываю https: // www.google.com, тогда он правильно использует TLS 1.2, вот подробности из Wireshark

Secure Sockets Layer
    TLSv1.2 Record Layer: Handshake Protocol: Client Hello
        Content Type: Handshake (22)
        Version: TLS 1.0 (0x0301)
        Length: 512
        Handshake Protocol: Client Hello
            Handshake Type: Client Hello (1)
            Length: 508
            Version: TLS 1.2 (0x0303)

Но когда я открываю эту страницу https: // www.downloadtb.com, Indy использует TLS 1.0. Сайт использует только TLS 1.2 и этот шифр: ECDHE-RSA-AES256-GCM-SHA384.

Secure Sockets Layer
    TLSv1 Record Layer: Handshake Protocol: Client Hello
        Content Type: Handshake (22)
        Version: TLS 1.0 (0x0301)
        Length: 329
        Handshake Protocol: Client Hello
            Handshake Type: Client Hello (1)
            Length: 325
            Version: TLS 1.2 (0x0303)

Кажется, он смешивает TLS 1.0 и 1.2. Это какой-то запасной вариант? Как мне это исправить?

РЕДАКТИРОВАТЬ: Что-то изменилось на сайте, и Indy теперь правильно использует TLS 1.2

Secure Sockets Layer
    TLSv1.2 Record Layer: Handshake Protocol: Client Hello
        Content Type: Handshake (22)
        Version: TLS 1.0 (0x0301)
        Length: 512
        Handshake Protocol: Client Hello
            Handshake Type: Client Hello (1)
            Length: 508
            Version: TLS 1.2 (0x0303)
...