ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] unable to get local issuer certificateError: unable to verify the first certificateUNABLE_TO_GET_ISSUER_CERT_LOCALLYrequests.exceptions.SSLError ... certificate verify failedFirmowe 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ź, 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.
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.