Jak opravit problém se SSL certifikátem: Nelze získat lokální certifikát vydavatele v Gitu

Neexistuje žádná smysluplná změna v roce 2026, která by z starého workaroundu „vypnout ověřování SSL“ učinila dobré řešení. Současná dokumentace Gitu stále nastavuje http.sslVerify ve výchozím nastavení na true a Git stále podporuje důvěru CA založenou na souborech i volitelné TLS backendy, jako jsou OpenSSL a Schannel. Trvalé řešení spočívá v tom, že Gitu umožníte důvěřovat správné certifikační autoritě, nebo v opravě neúplného řetězce certifikátů serveru – nikoli ve vypnutí ověřování.

Chyba SSL certificate problem: unable to get local issuer certificate znamená, že knihovna TLS používaná Gitem nedokázala sestavit důvěryhodný řetězec certifikátů od certifikátu serveru ke certifikační autoritě, které důvěřuje. K tomu může dojít, protože lokální úložiště CA neobsahuje vydávající CA, firemní proxy pro inspekci HTTPS přepisuje provoz s interní CA, Git čte nesprávný svazek CA, nebo samosprávný server Git nepředkládá požadované mezilehlé certifikáty.

Windows PowerShell zobrazující selhání git clone s problémem SSL certifikátu: nelze získat lokální certifikát vydavatele

Typické selhání Git HTTPS: vzdálený server je dosažitelný, ale ověřování řetězce certifikátů nemůže najít důvěryhodného vydavatele.

Začněte nejbezpečnější odpovědí

Použijte toto pořadí:

  1. Ověřte, která nastavení SSL Gitu a TLS backend jsou aktivní.
  2. Rozhodněte, zda chybějící důvěra patří do úložiště důvěry operačního systému, nebo do svazku CA Gitu.
  3. Pokud mnoho klientů selhává proti stejnému samostatně hostovanému serveru, opravte řetězec certifikátů serveru místo patchování každého klienta.
  4. Znovu otestujte s povoleným ověřováním SSL a odstraňte jakékoli dočasné nebo zastaralé konfigurace pro obcházení.

Aktuální dokumentace git-config definuje http.sslVerify, http.sslCAInfo, http.sslCAPath, http.sslBackend a specifické chování Schannel používané ve Windows. Výchozí nastavení pro ověřování certifikátů zůstává povolené.

Modré vysvětlení řešení problémů, které vysvětluje, že Git musí důvěřovat vydavateli certifikátu nebo použít správný svazek certifikátů

Spolehlivá oprava spočívá v obnovení platného řetězce důvěry, nikoli v potlačení kontroly certifikátu.

Krok 1: Zjistěte, co Git skutečně používá

Než budete instalovat certifikáty nebo upravovat konfiguraci, zkontrolujte hodnoty a jejich původ:

git --version
git config --show-origin --get http.sslVerify
git config --show-origin --get http.sslCAInfo
git config --show-origin --get http.sslBackend
git config --show-origin --get http.proxy
git config --show-origin --get http.proxySSLCAInfo

Pokud příkaz nic nevypíše, tato možnost může jednoduše používat výchozí nastavení Gitu nebo libcurl. --show-origin je důležité, protože hodnota může pocházet ze systémových, globálních, lokálních repozitářových nebo zahrnutých konfiguračních souborů. Oprava nesprávné úrovně může nechat efektivní nastavení nezměněné.

Zkontrolujte také vzdálený repozitář, ke kterému se skutečně připojujete:

git remote -v
git ls-remote https://git.example.com/team/repo.git

Pokud Git selhává pouze pro jeden firemní nebo soukromý hostitel, zatímco veřejné HTTPS stránky fungují, problém je pravděpodobně specifický pro hostitele (důvěra nebo konfigurace serveru). Pokud Git selhává pro mnoho nesouvisejících vzdálených repozitářů HTTPS, nejprve zkontrolujte lokální instalaci Gitu, cestu ke svazku CA, proxy a konfiguraci důvěry systému.

Nepoužívejte tento příkaz jako první

git config --global http.sslVerify false

Toto vypne ověřování certifikátů serveru pro požadavky Git HTTPS na globální uživatelské úrovni. Může způsobit, že chyba zmizí, ale zároveň odstraní ochranu, která ověřuje, že komunikujete se zamýšleným serverem. Git zdokumentoval, že ověřování je ve výchozím nastavení povoleno z dobrého důvodu.

Pokud objevíte staré globální obcházení, které již není vyžadováno, obnovte výchozí chování:

git config --global --unset http.sslVerify

nebo explicitně nastavte:

git config --global http.sslVerify true

Krok 2: Ve Windows si vyberte mezi úložištěm certifikátů Windows a PEM svazkem CA

Vývojáři ve Windows se s touto chybou často setkávají, když prohlížeč funguje, ale Git ne. To nutně neznamená, že je server rozbitý. Prohlížeč může důvěřovat firemnímu kořenovému certifikátu nainstalovanému ve Windows, zatímco Git nakonfigurovaný s backendem typu OpenSSL může používat samostatný svazek CA.

Git podporuje hodnoty http.sslBackend jako openssl a schannel. Oficiální dokumentace certifikátů TLS curl vysvětluje, že Schannel ve výchozím nastavení používá nativní úložiště CA Windows.

Možnost A: Použijte Schannel, když Windows již mají důvěryhodnou firemní CA

git config --global http.sslBackend schannel

To je často dobrá volba pro pracovní stanice pouze ve Windows spravované organizací, která distribuuje důvěryhodné kořenové a mezilehlé certifikáty prostřednictvím politik Windows. Umožňuje Gitu spoléhat na stejný systém důvěry certifikátů Windows, který mohou používat jiné nativní aplikace.

Existuje zde kompromis: změna backendu globálně změní chování HTTPS certifikátů Gitu pro tohoto uživatele. Pokud vaše organizace záměrně spravuje vyhrazený PEM svazek pro Git nebo automatizaci, zůstání u OpenSSL může být předvídatelnější.

Aktuální dokumentace Gitu také uvádí jemné chování Schannel: když je Schannel vybrán prostřednictvím http.sslBackend, Git obvykle neaplikuje http.sslCAInfo, protože dodaný svazek CA by mohl přepsat úložiště certifikátů Windows. Nastavení http.schannelUseSSLCAInfo existuje pro prostředí, která toto chování záměrně chtějí.

Možnost B: Ponechte OpenSSL a nasměrujte Git na schválený svazek CA

Pokud vám vaše organizace poskytne PEM svazek obsahující požadované interní kořenové a mezilehlé certifikáty, nakonfigurujte Git, aby používal tento soubor:

git config --global http.sslCAInfo "C:/certs/company-ca-bundle.pem"

Git definuje http.sslCAInfo jako soubor obsahující certifikáty používané k ověření protistrany. Můžete také omezit konfiguraci HTTP na odpovídající URL místo změny každého cíle HTTPS. Konfigurace Gitu http.<url>.* podporuje specifické párování URL podle schématu, hostitele, portu a cesty.

Například:

git config --global http."https://git.example.com/".sslCAInfo "C:/certs/company-ca-bundle.pem"

Toto užší nastavení je užitečné, když pouze interní server Git potřebuje soukromou CA, zatímco veřejní hostitelé Gitu by měli pokračovat v používání normálního svazku důvěry.

Krok 3: Na macOS, Linuxu, CI a v kontejnerech opravte zdroj CA, který proces skutečně používá

Princip je mimo Windows stejný: proces Git musí mít přístup k certifikátu CA, který vydal certifikát serveru nebo proxy. Přesné příkazy pro úložiště důvěry systému se liší podle operačního systému a distribuce Linuxu, takže používejte oficiální mechanismus správy certifikátů platformy nebo explicitní svazek CA Gitu dodaný správcem.

Vysvětlení ověřování vydavatele SSL Gitu a požadavků na důvěryhodné kořenové certifikáty

Git musí být schopen propojit předložený certifikát serveru přes jeho mezilehlé vydavatele s lokálně důvěryhodnou CA.

Pro kontrolovanou úlohu CI nebo kontejner, kde nechcete upravovat globální úložiště důvěry hostitele, může být svazek CA explicitní:

git config --global http.sslCAInfo /etc/company/git-ca-bundle.pem

nebo pro jednotlivý proces Git také rozpoznává proměnnou prostředí GIT_SSL_CAINFO. Aktuální dokumentace Gitu uvádí, že tato proměnná prostředí může přepsat http.sslCAInfo.

Nekopírujte náhodný soubor cacert.pem z fóra. Pokud chybějícím certifikátem je firemní CA, získejte ji od týmu IT nebo PKI. Pokud je vzdálený repozitář veřejná služba a váš svazek CA je jednoduše zastaralý, aktualizujte operační systém, distribuci Gitu, základní obraz kontejneru nebo balíček důvěryhodných CA prostřednictvím běžného kanálu aktualizací.

Firemní inspekce TLS je speciální případ

>Některé enterprise proxy inspekují HTTPS a předkládají náhradní certifikát podepsaný interní firemní CA. V takové situaci může prohlížeč uspět, protože firemní CA je nainstalována v úložišti důvěry OS, zatímco samostatný svazek CA Gitu ji neobsahuje.

Správná oprava spočívá v důvěře CA organizace prostřednictvím příslušného úložiště důvěry nebo svazku Gitu. Neexportujte aktuální listový certifikát a trvale mu nedůvěřujte jako náhradě za vydávající firemní CA.

>Rozlišujte také dva samostatné případy proxy:
  • Intercepce TLS spojení serveru Git: Firemní CA, která podepisuje náhradní certifikát serveru, musí být důvěryhodná prostřednictvím normální cesty certifikátu serveru, jako je Windows Schannel nebo http.sslCAInfo.
  • HTTPS proxy, jejíž vlastní spojení proxy používá TLS: Git poskytuje http.proxySSLCAInfo specificky pro svazek CA používaný k ověření tohoto spojení HTTPS proxy.

Git dokumentuje http.proxy a http.proxySSLCAInfo odděleně, takže použijte nastavení, které odpovídá spojení, které selhává.

Krok 4: Pokud je řetězec serveru neúplný, opravte server, pokud můžete

Pokud mnoho uživatelů nebo nových strojů selhává proti stejnému samostatně hostovanému serveru Git, problém může být na straně serveru, nikoli sbírka rozbitých klientů. Server by měl předkládat řetězec certifikátů potřebný pro klienty k propojení listového certifikátu s důvěryhodným vydavatelem.

Seznam běžných příčin problémů se SSL certifikáty Gitu, včetně zastaralých kořenových certifikátů, certifikátů firemní proxy, vlastních CA, špatné konfigurace SSL Gitu a problémů se systémovými hodinami

Když mnoho klientů selhává proti jednomu soukromému hostiteli Gitu, zkontrolujte řetězec serveru a cestu proxy před distribucí workaroundů na straně klienta.

Oficiální dokumentace řešení problémů se SSL GitLabu specificky popisuje unable to get local issuer certificate jako případ, kdy klient nemůže získat požadovaného vydavatele, a doporučuje buď důvěřovat příslušné CA na klientovi, nebo opravit server tak, aby předkládal kompletní řetězec certifikátů.

Pokud spravujete server, opravte nakonfigurovaný certifikát plného řetězce a znovu otestujte z čistého klienta. To je upřednostňováno před žádostí každému vývojáři, aby přidával ad hoc výjimky.

Ověřte opravu bez oslabení TLS

Po opravě konfigurace důvěry opakujte stejnou operaci Gitu:

git ls-remote https://git.example.com/team/repo.git

Pokud to uspěje, zkuste znovu původní clone, fetch, pull nebo push.

Poté zkontrolujte konečnou konfiguraci související se zabezpečením:

git config --show-origin --get http.sslVerify
git config --show-origin --get http.sslBackend
git config --show-origin --get http.sslCAInfo

Očekávaný stav je, že ověřování certifikátů zůstává povolené a Git dokáže sestavit platný řetězec prostřednictvím zamýšleného zdroje důvěry.

Která oprava odpovídá vaší situaci?

SituaceNejlepší výchozí bodProč
Prohlížeč ve Windows funguje; Git selhává v firemní sítiZkontrolujte, zda je firemní CA v úložišti důvěry Windows; zvažte SchannelProhlížeč a důvěra Windows mohou být již správné, zatímco Git OpenSSL používá jiný svazek
Firma poskytuje PEM svazek CA pro vývojářské nástrojePoužijte http.sslCAInfo, pokud je to praktické, preferujte specifické pro hostiteleExplicitní a reprodukovatelné pro Git, CI a kontejnery
Nový kontejner Linuxu selhává, ale pracovní stanice fungujeNainstalujte/aktualizujte balíček CA nebo přidejte CA organizace do důvěry kontejneru/svazku GituKontejner má vlastní souborový systém a materiál důvěry
Pouze jedna samostatně hostovaná služba Git selhává pro mnoho uživatelůZkontrolujte a opravte řetězec certifikátů serveruOprava na straně serveru se vyhne patchům pro každého klienta
Sama HTTPS proxy má soukromý certifikátNakonfigurujte důvěryhodnou CA pro HTTPS proxy pomocí http.proxySSLCAInfo, pokud je to适用néOvěřování TLS proxy je oddělené od ověřování původního serveru
Někdo navrhuje http.sslVerify=falseNepoužívejte to jako trvalé řešeníObchází ověřování certifikátů, které chrání spojení HTTPS

Co přepnutí vzdáleného repozitáře Gitu na SSH?

SSH může být platnou alternativní transportní vrstvou, pokud vaše služba hostingu Gitu to podporuje a vaše organizace to povoluje. Změna ze vzdáleného repozitáře HTTPS na vzdálený repozitář SSH zcela vyhne řetězci certifikátů HTTPS, ale neopraví původní problém s důvěrou TLS. SSH má svůj vlastní model ověřování hostitelských klíčů a správy přihlašovacích údajů.

Používejte SSH, protože odpovídá vašemu designu autentizace a nasazení – nikoli pouze k zakrytí chyby konfigurace certifikátu, kterou budou jiné nástroje HTTPS stále Encounterovat.

Běžné chyby, kterým se vyhnout

  • Vypnutí ověřování SSL globálně. Toto odstraní ověřování certifikátů serveru pro budoucí spojení Git HTTPS.
  • Důvěra listovému certifikátu místo vydávající CA. Listové certifikáty expirují a rotují; důvěra by měla být obvykle ukotvena v schváleném řetězci CA.
  • Ruční úprava souboru CA zabaleného v Gitu bez zdokumentování. Aktualizace může nahradit soubor a změna může být nemožná pro spolužáky nebo CI k reprodukování.
  • Předpoklad, že úspěch prohlížeče dokazuje, že Git má stejný zdroj důvěry. Git může používat OpenSSL a samostatný PEM svazek, zatímco prohlížeč používá úložiště OS.
  • Použití http.proxySSLCAInfo pro nesprávné spojení. Toto nastavení je pro ověřování HTTPS proxy, nikoli pro obecnou náhradu konfigurace CA původního serveru.
  • Patchování každé vývojářské pracovní stanice, když server Git posílá neúplný řetězec. Opravte server, pokud ho kontrolujete.

Závěr

Chyba Gitu SSL certificate problem: unable to get local issuer certificate je problém s řetězcem důvěry, nikoli problém s autentizačním tokenem a není to něco, co by mělo být obvykle řešeno vypnutím ověřování certifikátů. Zjistěte, zda Git používá OpenSSL, Schannel, vlastní svazek CA nebo HTTPS proxy; poté umístěte schválenou vydávající CA do zdroje důvěry, který Git skutečně používá.

Ve Windows je Schannel praktickou možností, když je firemní CA již spravována v úložišti certifikátů Windows. V CI, kontejnerech nebo prostředích, která potřebují reprodukovatelnou důvěru založenou na souborech, je http.sslCAInfo často jasnější. A když mnoho klientů selhává proti jedné samostatně hostované službě, opravte řetězec certifikátů serveru místo distribuce nezabezpečených obcházení.

Zanechat komentář

Jak opravit chybu „ENOSPC: Dosažen systémový limit pro hlídače souborů“ v Linuxu

Jak opravit chybu „ENOSPC: Dosažen systémový limit pro hlídače souborů“ v Linuxu

Opravte chyby hlídače souborů ENOSPC v systému Linux kontrolou limitů inotify, nalezením procesů s vysokou mírou zátěže hlídače, bezpečným zvýšením limitů a trvalým uložením změn.

How to Fix "Tailwind CSS Styles Not Updating" in a Vite React App

How to Fix "Tailwind CSS Styles Not Updating" in a Vite React App

Fix Tailwind CSS styles not updating in Vite React by checking Tailwind v4 setup, CSS imports, source detection, dynamic classes, HMR, and stale caches.

Jak opravit ModuleNotFoundError: V Pythonu 3 neexistuje modul s názvem 'pip'

Jak opravit ModuleNotFoundError: V Pythonu 3 neexistuje modul s názvem 'pip'

Oprava chyby ModuleNotFoundError v Pythonu 3 pro PIP na Windows, macOS a Linuxu pomocí ensurepip, balíčků operačního systému, virtuálních prostředí a kontrol interpretů.

Jak opravit chybu „Oprávnění odepřeno (veřejný klíč)“ v GitHub SSH

Jak opravit chybu „Oprávnění odepřeno (veřejný klíč)“ v GitHub SSH

Opravte chybu „Oprávnění GitHub SSH odepřeno (veřejný klíč)“ kontrolou hostitele, aktivního klíče SSH, účtu GitHub, autorizace SSO, vzdálené adresy URL a přístupu na port 22.

Jak opravit chybu „Git Push Rejected: Non-FastForward“ bez ztráty změn

Jak opravit chybu „Git Push Rejected: Non-FastForward“ bez ztráty změn

Bezpečně opravte push chybu v Gitu, která neumožňuje rychlé přehrávání. Chraňte lokální práci, načítejte vzdálené commity, vyberte sloučení nebo rebase, vyřešte konflikty a pushujte bez ztráty změn.

Jak opravit chybu „Nginx 502 Bad Gateway“ při proxyování k Node.js

Jak opravit chybu „Nginx 502 Bad Gateway“ při proxyování k Node.js

Opravte chyby Nginx 502 Bad Gateway s upstreamem Node.js kontrolou portu aplikace, protokolů NGINX, adresy proxy_pass, sítě kontejnerů, časových limitů a opětovného načtení.

Jak opravit chybu „Typ 'null' nelze přiřadit typu“ v TypeScriptu

Jak opravit chybu „Typ 'null' nelze přiřadit typu“ v TypeScriptu

Oprava chyby „Typ 'null' nelze přiřadit typu“ v TypeScriptu u sjednocovacích typů, zúžení, výchozích hodnot a bezpečných asercí v rámci strictNullChecks.

Jak opravit chybu „Prisma Client Has Not Been Generated Yet“

Jak opravit chybu „Prisma Client Has Not Been Generated Yet“

Opravte chybu nevygenerovaného Prisma Client kontrolou generátoru, schématu, výstupní cesty, importů, verzí, nastavení monorepa a kroků sestavení při nasazení.

Jak opravit chybu „ERR_MODULE_NOT_FOUND“ v importech Node.js ESM

Jak opravit chybu „ERR_MODULE_NOT_FOUND“ v importech Node.js ESM

Opravte chybu Node.js ERR_MODULE_NOT_FOUND v ESM kontrolou cest importu, přípon souborů, instalace balíčků, exportů, režimu ESM a čistých instalací.

Jak opravit problém se SSL certifikátem: Nelze získat lokální certifikát vydavatele v Gitu

Jak opravit problém se SSL certifikátem: Nelze získat lokální certifikát vydavatele v Gitu

Opravte chybu Gitu 'nelze získat lokální certifikát vydavatele' identifikací důvěryhodného backendu, instalací správného řetězce CA a ponecháním ověřování SSL zapnutého.