Zostavenie Go, inštalácia Composera aj klient Pythonu doma fungujú a všetky zlyhávajú vnútri firemnej VPN. Ten vzorec hovorí o ceste, nie o aplikácii. Niečo na tuneli zmenilo reťaz certifikátov, ktorý váš proces vidí, alebo resetovalo podanie ruky skôr, než vôbec nejaký reťaz prišiel. Obe poruchy vyzerajú v termináli rovnako a vyžadujú úplne iné reakcie.

Tri správy, tri mechanizmy

Chyba x509 certificate signed by unknown authority znamená, že reťaz bol zostavený a jeho koreň chýba v úložisku dôvery, ktoré ten proces používa. Chyba self-signed certificate in certificate chain zvyčajne znamená, že inspekčná proxy odpovedala vlastným certifikátom, a to je reťaz, ktorý vaše runtime nepozná. SSL EOF počas podania ruky znamená, že spojenie bolo zatvorené skôr, než bol odoslaný akýkoľvek použiteľný certifikát, a to je prostredné zariadenie, ktoré odmieta ClientHello, a vôbec nie problém dôvery.

Pridanie prepínača pre nezabezpečený režim spôsobí, že všetky tri správy zmiznú, kým odpočúvanie zostane na mieste, a odstráni kontrolu, ktorá by odhalila skutočného útočníka.

Nájdite zväzok, ktorý proces skutočne číta

Firemný koreň nainštalovaný v úložisku Windows opraví prehliadače a aplikácie .NET, ktoré sa dopytujú systémového úložiska. Nič neurobí pre zostavenie bežiace v kontajneri, ktorý si nesie vlastný CA zväzok, ani pre proces Pythonu s certifi či proces Node s vlastným vstavaným zoznamom. Go číta systémový fond prostredia, v ktorom binárka beží, teda kontajnera, nie notebooku. Jeden stroj tak súčasne dáva fungujúci prehliadač a zlyhávajúci nástroj na zostavenie.

Pýtajte sa nástroja, namiesto aby ste predpokladali. python3 -c "import ssl; print(ssl.get_default_verify_paths())" vypíše súbory, ktoré Python prejde, a node -e "console.log(process.env.NODE_EXTRA_CA_CERTS)" ukáže, či už je nastavené nejaké prepísanie. Pri kontajneri spustite rovnakú kontrolu vnútri obrazu, pretože to je prostredie, ktoré zostavenie skutočne používa.

Nainštalujte jeden koreň tam, kde zostavenie beží

Získajte inspekčný koreň od IT ako súbor PEM a overte jeho odtlačok cez oddelený kanál, skôr než mu začnete dôverovať. Na obrazoch odvodených z Debianu ho skopírujte do /usr/local/share/ca-certificates/ a spustite update-ca-certificates; obrazy z rodiny RHEL používajú update-ca-trust po umiestnení súboru do /etc/pki/ca-trust/source/anchors/. Pri zostavovaní kontajnera pridajte tieto kroky pred zlyhávajúci príkaz, aby sa vrstva ukladala do vyrovnávacej pamäte nad inštaláciou závislostí.

Pre lokálny devcontainer pripojte PEM a spúšťajte rovnaký aktualizačný príkaz pri štarte, namiesto toho, aby ste ho zapekli do osobného obrazu, ktorý nikto iný nezreprodukuje. Nástroje, ktoré si nesú vlastný zväzok, potrebujú vlastné zdokumentované prepísanie: pip má nastavenie certifikátu, npm má nastavenie cafile a väčšina ostatných prijíma štandardné premenné prostredia.

To nie je to isté ako prijímať akýkoľvek certifikát. Pridávate jeden konkrétny koreň, získaný od strany, ktorá vykonáva inspekciu, do jedného prostredia, a overovanie zostáva zapnuté pre každý iný reťaz. Poznamenajte, ktorý súbor bol pridaný a kedy mu vyprší platnosť, pretože inspekčný koreň sa obnovuje ako každý iný CA.

Keď podanie ruky zomrie skôr než certifikát

Ak sa nič nepredloží, žiadna zmena úložiska dôvery nepomôže. Porovnajte tú istú požiadavku s tunelom zapnutým a vypnutým, potom prezrite reťaz priamo pomocou openssl s_client -connect host:443 -servername host -showcerts. Spojenie, ktoré sa mimo VPN dokončí a vnútri nej sa zruší, je politickým rozhodnutím prostredného zariadenia a liekom je výnimka pre tohto hostiteľa, nie ďalší certifikát. Požiadajte, aby registrácia balíkov alebo koncový bod API prechádzal bez úprav.

Rozdelenie tunela tak, aby nástroj obchádzal VPN, sa vyhýba inspekcii tejto prevádzky, čo môže porušovať politiku a nástroj nerobí dôveryhodným.

Zapíšte výsledok pre každý nástroj

Krátka poznámka so zoznamom binárky, súboru dôvery, ktorý číta, premennej prostredia v hre a schválenej výnimky ušetrí ďalšiemu človeku celú diagnostiku. Veďte poznámku pre každý nástroj, nie pre každý notebook, pretože notebook je málokedy to, čo sa zmenilo.

A v tikete držte dve vety oddelene: nainštalovali sme konkrétny firemný koreň a vypnuli sme overovanie. Len jedna z tých vecí je podporná akcia.

Súvisiace články