vložil Radek Červinka
1. prosince 2020 18:27
Na github v projektu Indy se objevil PULL přidávající podporu OpenSSL 1.1.1 což mimo jiné znamená toužebně vyhlížené TLS 1.3, které bylo ještě před půl rokem v nedohlednu. Momentálně je ve stavu review, ale diskuze pod ním, a to co jsem zkoušel vypadá velmi funkčně - s podporou od D7, přes Lazarus až po Delphi 10.4.x (je to v komentářích uvedeno).
Jedná se pouze o minimální úpravy, opravdu přidává v podstatě pouze nový IO handler, přičemž původní pro 1.0.2 zůstává bez poskvrny, plus pár změn v konstantách, což ale může být problém, protože by to chtělo rekompilaci Indy. Ale naštěstí přímo v komentářích je zmíněna úprava s IdOpenSSL_IdCTypesEx.zip, která nově přidané typy vyčleňuje do samostatné jednotky (a stačí jen přidat do uses IO hadleru). Pak není třeba rekompilace, ale jedná se opravdu jen o nový IO handler pro stávající Indy z instalace Delphi (pro zajímavost podle screenshotu total commnandera v češtině bych možná dokázal i uhodnout zemi autora úpravy).
Minimální testovací program:
program testhttp;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, idhttp, IdOpenSSLIOHandlerClient ;
var
IdHTTP: TIdHTTP;
s: string;begin
try
IdHTTP:= TIdHTTP.Create(nil);
try
IdHTTP.IOHandler := TIdOpenSSLIOHandlerClient.Create(nil);
(idHttp.IOHandler as TIdOpenSSLIOHandlerClient).Options.VerifyServerCertificate := False;
s:=IdHTTP.Get('https://tls13.1d.pw/');
writeln(s);
// readln;
finally
IdHTTP.Free;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Všimněte si v kódu nového IO handleru a nastavování jeho parametrů přes Options pro případ, že je budete hledat. Jsou tam i další věci ohledně certifikátů.
V ukázkovém příkladě https://tls13.1d.pw/ je TLS 1.3 only web, který dává info o podpoře TLS u klienta. Já myslím, že je to od autora skvělá práce.