Strona główna → Pomoc

SSL certificate verify failed przy wywołaniu API AI

Coś między tobą a dostawcą przerywa TLS i podpisuje go ponownie certyfikatem, któremu środowisko uruchomieniowe twojego języka nie ufa. Certyfikat dostawcy jest w porządku; w twoim magazynie zaufanych certyfikatów brakuje certyfikatu głównego pośrednika.

Co widzisz

Dlaczego tak się dzieje

Firmowe proxy, niektóre antywirusy i większość urządzeń inspekcji VPN odszyfrowują HTTPS, żeby zajrzeć do środka, a potem wystawiają własny certyfikat. Systemy operacyjne dostają ten certyfikat główny instalowany centralnie; Python, Node i Go często dostarczają lub używają własnego magazynu zaufania i nigdy go nie widzą. To dokładnie ta luka, w której curl działa, a twój kod nie.

Błąd pojawia się też zupełnie bez proxy, gdy dołączona do środowiska lista CA się zestarzała – typowo na starym obrazie kontenera albo długo działającej maszynie wirtualnej, której nigdy nie aktualizowano.

To nie jest problem uwierzytelnienia. Żądanie nigdy nie kończy uzgadniania połączenia, więc żaden klucz nie zostaje wysłany i nic nie trafia do logów dostawcy.

Sprawdź, czy to ta przyczyna

Sprawdź, kto podpisał certyfikat, który faktycznie otrzymujesz:

openssl s_client -connect YOUR_DOMAIN:443 -servername YOUR_DOMAIN </dev/null 2>/dev/null \
  | openssl x509 -noout -issuer -subject

Jeśli wystawcą jest publiczne CA, magazyn zaufania twojego środowiska jest nieaktualny. Jeśli widnieje tam nazwa twojej firmy, urządzenia bezpieczeństwa albo producenta antywirusa, ruch jest przechwytywany i musisz zainstalować ten certyfikat główny tam, gdzie szuka go twoje środowisko.

Jak to naprawić

  1. Wskaż środowisku właściwy pakiet CAWyeksportuj certyfikat główny pośrednika i ustaw REQUESTS_CA_BUNDLE albo SSL_CERT_FILE dla Pythona, NODE_EXTRA_CA_CERTS dla Node. Weryfikacja zostaje włączona – i o to chodzi.
  2. Zaktualizuj dołączone certyfikatyPrzeinstaluj lub zaktualizuj pakiet certifi albo przebuduj kontener na aktualnym obrazie bazowym. Stare pakiety zawodzą przy nowszych certyfikatach pośrednich.
  3. Nie wyłączaj weryfikacjiverify=False i NODE_TLS_REJECT_UNAUTHORIZED=0 usuwają błąd, akceptując dowolny certyfikat – także od kogokolwiek, kto jest w twojej sieci. A przez to połączenie wysyłasz klucz API.
To w całości problem po stronie klienta, więc w logu użycia APICLAN nie zobaczysz nieudanego uzgadniania – żądanie nigdy nie dotarło. Pusty log razem z błędem TLS to oczekiwane połączenie, a nie drugi problem.

Powiązane

Unexpected token '<' przy wywołaniu API zgodnego z OpenAI401 invalid API key – gdy klucz wygląda dobrze, a i tak nie działa

Ostatnio sprawdzono 2026-10-01. Napisane na podstawie problemów zdiagnozowanych na działającej bramce zgodnej z OpenAI, a nie zebrane z innych stron.