Czy ktoś z szanownych kolegów stał przed sytuacją, w której należy połączyć się z serwisem obsługującym certyfikat Tls 1.3 ?
Jak obecnie szukam Indy nie zostało zaktualizowane o tę wersję ssl. Znalazłem jednak taką stronę, [https://www.esegece.com/indy] czy któś z tego pobierał ?
- Rejestracja:ponad 13 lat
- Ostatnio:8 miesięcy
- Lokalizacja:Warszawa
- Postów:62
- Rejestracja:ponad 19 lat
- Ostatnio:3 minuty
- Lokalizacja:Gorlice
Najnowsza wersja źródeł Indy jest zawsze https://github.com/IndySockets/Indy tamte co podałeś to skompilowane biblioteki dla różnych wersji Delphi i BCB ale szybkie sprawdzenie w źródłach i wychodzi na to że Indy (jeszcze?) nie obsługuje TLS 1.3 co jest dość dziwne, bo to już ponad 2 lata od wprowadzenia.
- Rejestracja:ponad 13 lat
- Ostatnio:8 miesięcy
- Lokalizacja:Warszawa
- Postów:62
Mam pewne api, do której próbuję się połączyć i używam właśnie tls 1.2. Za pierwszym razem udaje mi się nawiązać połączenie, wysłać żądanie i odbieram odpowiedź. Jednak jak wykonuję próbę połączenie ponownie dostaje socket error 10060 connection timed out i nawet nie mogę wejść później na stronę firmy udostępniającej api do momentu aż moje ip ulegnie zmianie (zmiana co 24h). Wiem, że obsługują Tls 1.3 i zastanawiam się gdzie leży problem
- Rejestracja:prawie 7 lat
- Ostatnio:około 3 godziny
- Postów:98
Niektóre firmy/serwisy nie lubią, jak korzysta im się za często z ich nie udostępnionego szerokiemu gronu API.
Częstą praktyką jest blokada IP po np. kilkudziesięciu zapytaniach w ciągu 1h czy zbyt częstych zapytań, typu 5 zapytań/sekundę. Drugą metodą "odstraszenia" jest captcha.
Czasami udaje się "oszukać" przez dodanie w nagłówku parametrów dla: Host, Referer oraz Origin.
Połączenie przy użyciu TLS1.2 czy TLS1.3 nie ma znaczenia :)
Zrób test przez dostępne narzędzia do testowania API. Jest wiele stron, dodatków do przeglądarek, aplikacji np. dla Windows. Nawet w Delphi czy Codetyphon są takie narzędzia.
Wg mnie napotkasz na ten sam problem :)
- Rejestracja:ponad 13 lat
- Ostatnio:8 miesięcy
- Lokalizacja:Warszawa
- Postów:62
Przez pierwszą lepszą stronę do testowania api udaje mi się za każdym razem uzyskać połączenie i odpowiedź, jednak co ciekawsze napisałem do supportu tego serwisu i otrzymałem odpowiedź , że muszą blokować INDY LIBRARY gdyż jest masowo wykorzystywane przez chińskie boty. No i pozamiatane :)
Całe szczęście , że mam jeszcze komponenty secureblackbox
- Rejestracja:ponad 2 lata
- Ostatnio:2 dni
- Postów:7
Minęło sporo czasu od oryginalnego wątku, a ja dziś przychodzę z podobnym problemem jak wtedy. U mnie do jakiegoś czasu wszystko w kodzie działało, natomiast ostatnio coś się popsuło mimo braku zmian w kodzie. Używam TLS 1.2 i też łączę się przez API. Dodałem User-Agent jak wyżej, a mimo to błąd nadal występuje. Jakiś pomysł na co mogę spojrzeć? Planowałem podnieść się na TLS 1.3, ale patrząc na dokumentację API chyba 1.2 też jest wciąż wspierane.
- screenshot-20240620103708.png (37 KB) - ściągnięć: 35
- Rejestracja:prawie 7 lat
- Ostatnio:około 3 godziny
- Postów:98
@awyduba W parametrach Indy wyłącz protokół SSL3 i TLS1.0.
- Rejestracja:ponad 2 lata
- Ostatnio:2 dni
- Postów:7
try
IdHttp := nil;
IdHttp := TIdHTTP.Create(nil);
Response := TMemoryStream.Create;
try
IdSSL := TIdSSLIOHandlerSocketOpenSSL.Create(IdHttp);
IdSSL.SSLOptions.Method := sslvTLSv1_2;
IdSSL.SSLOptions.SSLVersions := [sslvSSLv2, sslvTLSv1_2];
IdSSL.Intercept := TMyIdLogEvent.Create(IdSSL);
IdHttp.IOHandler := IdSSL;
IdHttp.CookieManager := TIdCookieManager.Create(IdHttp);
IdHttp.HandleRedirects := True;
IdHttp.ReadTimeout := 60000;
IdHttp.ConnectTimeout := 60000;
IdHttp.Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36';
try
sUrl := csWykazPodatnikowProdUrl;
if bTest then
sUrl := csWykazPodatnikowTestUrl;
try
IdHttp.Get(sUrl + '/api/search/nip/'+ sNIP +'?date='+ FormatDateISO(dtDate), Response);
...
- Rejestracja:ponad 22 lata
- Ostatnio:3 minuty
- jak w komentarzu powyżej napisał @skrzat - zaktualizuj
INDY
do najnowszej wersji - więcej info: API (wl-api.mf.gov.pl) i błąd 403 Forbidden. - w konfiguracji
SSL
usuń wersję:sslvSSLv2
- sprawdź czy w systemie masz odpowiednią wersję
OpenSSL
- najnowsza jaką obsługujeIndy
to1.0.2u
libeay32.dll
i ssleay32.dll
. Bibliioteki możesz pobrać stąd: https://wiki.overbyte.eu/arch/openssl-1.0.2u-win32.zip (wersja 32-bit) lub stąd: https://wiki.overbyte.eu/arch/openssl-1.0.2u-win64.zip (64-bit)
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0
lub Chrome:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36