Delphi 7 и Indy 9.0 Ошибка подключения SSL - PullRequest
1 голос
/ 21 февраля 2020

Я использую компонент TIdHTTP для выполнения команды GET, в результате чего появляется сообщение об ошибке:

Request.ContentType := 'text/html';
Request.CustomHeader.Values['Authorization'] := 'Basic '+ TIdEncoderMIME.EncodeString(SPIAKey)+':'TIdEncoderMIME.EncodeString(SAPISecret);

TIdSSLIOHHandlerSocket

Метод - sslvSSLv2

Может кто-нибудь поможет мне в этом?

1 Ответ

3 голосов
/ 22 февраля 2020

NOBODY больше не использует SSL v2.0 или SSL v3.0, поскольку они больше не защищены. Вам нужно использовать TLS v1.0 как минимум 1 . Компонент Indy 9 TIdSSLIOHandlerSocket поддерживает до TLS v1.0 max . Для этого установите для свойства SSLOptions.Method значение sslvTLSv1.

1: имейте в виду, что веб-сайты постепенно прекращают поддержку TLS v1.0, а основные поставщики веб-браузеров прекращают поддержку TLS v1. 0 и v1.1 позже в этом году.

Чтобы использовать TLS v1.1 и выше, вам нужно перейти на Indy 10, где TIdSSLIOHandlerSocket был переименован в TIdSSLIOHandlerSocketOpenSSL, а его * Свойство 1020 * устарело в пользу нового свойства SSLOptions.SSLVersions, которое позволит вам одновременно включить TLS v1.0, v1.1 и v1.2.


Вкл примечание: вам не нужно использовать свойство TIdHTTP.Request.CustomHeader, чтобы использовать Basic аутентификацию. TIdHTTP имеет встроенную поддержку Basic. Просто установите для свойства TIdHTTP.Request.BasicAuthentication значение True, а затем используйте свойства TIdHTTP.Request.Username и TIdHTTP.Request.Password:

Request.ContentType := 'text/html';
Request.BasicAuthentication := True;
Request.Username := SPIAKey;
Request.Password := SAPISecret;

Это работает как в Indy 9, так и в 10.

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