1. DLL надо класть рядом с EXE.
2. Вот такой код на Delphi XE3 работает с github:
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
url = 'https://github.com/';
var
IdHTTP : TIdHTTP;
IdSSLIOHandlerSocketOpenSSL : TIdSSLIOHandlerSocketOpenSSL;
Response : String;
begin
IdHTTP:=TIdHTTP.Create(nil);
IdSSLIOHandlerSocketOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
Try
IdHTTP.Request.BasicAuthentication := false;
IdHTTP.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
IdSSLIOHandlerSocketOpenSSL.SSLOptions.Mode := sslmClient;
IdSSLIOHandlerSocketOpenSSL.SSLOptions.Method := sslvTLSv1;//sslvSSLv2;
IdSSLIOHandlerSocketOpenSSL.SSLOptions.SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
IdHTTP.IOHandler:=IdSSLIOHandlerSocketOpenSSL;
response:=IdHTTP.Get(url);
memo1.Lines.add(response);
Finally
IdSSLIOHandlerSocketOpenSSL.Free;
IdHTTP.Free;
End;
end;
3. Этот код работает с версией OpenSSL 1.0.2u (скачать здесь:
https://github.com/IndySockets/OpenS...es/tree/master)
4. На некоторых сайтах не работает. Либо надо подбирать рабочую комбинацию Method и SSLVersion, либо вообще надо более позднюю версию OpenSSL для поддержки TLS v1.3, но текущая версия Indy такие не поддерживает, т.к. там поменялся API, тогда надо искать и ставить другую версию самой Indy и я не уверен, что такая вообще существует в стабильном варианте.
Вот как-то так.