Indy TIdhttp.Get не загружает правильную версию SSL - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь создать интерфейс для FreshDesk API

Вот мой исходный код для вызова:

procedure TForm1.Button1Click(Sender: TObject);
var
  IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocketOpenSSL;
  idhttp:  TIdHttp;
begin
  idhttp := TIdHttp.Create(self);
  idhttp.Request.ContentType := 'application/json';
  IdHTTP.Request.BasicAuthentication:= True;
  IdHTTP.Request.Username := 'marks@mytestcompany.com';
  IdHTTP.Request.Password := 'XYZ';
  idhttp.Request.Connection:='keep-alive';
  IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocketOpenSSL.create(nil);
  with IdSSLIOHandlerSocket1 do begin
    SSLOptions.Method := sslvTLSv1_2;
    SSLOptions.SSLVersions := [sslvTLSv1_2];
    SSLOptions.VerifyMode := [];
    SSLOptions.VerifyDepth := 2;
  end;
  idhttp.IOHandler := IdSSLIOHandlerSocket1;
  idhttp.Request.Accept := '*/*';

  idhttp.HandleRedirects := True;
  if usefiddler.checked then begin
    idhttp.ProxyParams.ProxyServer := '127.0.0.1';
    idhttp.ProxyParams.ProxyPort := 8888 ;
  end;
  showMessage(idhttp.get('https://mytestcompany.freshdesk.com/api/v2/contacts'));
end;

Когда я запускаю с помощью Fiddler, он показываетон использует Версия: 3.1 (TLS / 1.0) :

enter image description here

Вот успешный вызов curl (кажется, он использует Версия: 3.3 (TLS / 1.2) :

curl -v -u marks@mytestcompnay:XYZ -H "Content-Type: application/json" -X GET "https://mytestcompany.freshdesk.com/api/v2/contacts"

Вот результаты Fiddler при использовании curl:

enter image description here

Моя проблема в том, что я использую неправильную версию TLS?

1 Ответ

0 голосов
/ 19 февраля 2019

Вы используете устаревшую версию OpenSSL.

В комментариях вы говорите, что используете OpenSSL 1.0.0q.Этой версии уже несколько лет, и она не поддерживает TLS v1.2 (которая была добавлена ​​в OpenSSL в 1.0.1, которая все еще является старой версией).Indy молча возвращается к TLS v1.0, когда не может использовать TLS v1.1 или v1.2.

Вам необходимо обновить свой OpenSSL.Последняя версия OpenSSL, которую в настоящее время поддерживает Indy: 1.0.2.

...