簡體   English   中英

Indy TIdhttp.Get未加載正確版本的SSL

[英]Indy TIdhttp.Get is not loading proper version of SSL

我正在嘗試建立與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)

在此處輸入圖片說明

這是成功的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"

這是使用curl時的Fiddler結果:

在此處輸入圖片說明

我使用的是錯誤版本的TLS是我的問題嗎?

您正在使用過時的OpenSSL版本。

根據評論,您說您正在使用OpenSSL 1.0.0q。 該版本已有數年歷史,並且不支持TLS v1.2(在1.0.1中已添加到OpenSSL,該版本仍然是舊版本)。 當Indy無法使用TLS v1.1或v1.2時,它會默默地退回到TLS v1.0。

您需要更新您的OpenSSL。 Indy當前支持的最新版本的OpenSSL是1.0.2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM