Go build, Composer instalacija i Python klijent rade kod kuće i svi padaju unutar korporativne VPN mreže. Taj obrazac govori o putu, a ne o aplikaciji. Nešto na tunelu promijenilo je lanac certifikata koji vaš proces vidi ili je poništilo rukovanje prije nego što je lanac uopće stigao. Dvije pogreške u terminalu izgledaju slično i traže posve različite reakcije.

Tri poruke, tri mehanizma

Pogreška x509 certificate signed by unknown authority znači da je lanac izgrađen i da njegov korijen nedostaje u spremištu povjerenja koje taj proces koristi. Pogreška self-signed certificate in certificate chain obično znači da je inspekcijski proxy odgovorio vlastitim certifikatom, a to je lanac koji vaše okruženje ne prepoznaje. SSL EOF tijekom rukovanja znači da je veza zatvorena prije nego što je poslan ijedan upotrebljiv certifikat, i to je posrednički uređaj koji odbija ClientHello, a ne problem s povjerenjem uopće.

Dodavanje zastavice za nesiguran rad čini da sve tri poruke nestanu, a presretanje ostaje na mjestu, i uklanja provjeru koja bi uhvatila stvarnog napadača.

Pronađite paket koji proces doista čita

Korporativni korijen instaliran u Windows spremištu popravlja preglednike i .NET aplikacije koje pregledavaju sistemsko spremište. Ne čini ništa za build koji se izvodi u kontejneru, koji nosi vlastiti CA paket, niti za Python proces koji koristi certifi ili Node proces koji koristi svoj ugrađeni popis. Go čita sistemski skup okruženja u kojem binarna datoteka radi, dakle kontejner, a ne prijenosno računalo. Zato jedno računalo istodobno daje ispravan preglednik i neispravan alat za build.

Pitajte alat umjesto da pretpostavljate. python3 -c "import ssl; print(ssl.get_default_verify_paths())" ispisuje datoteke koje će Python pregledati, a node -e "console.log(process.env.NODE_EXTRA_CA_CERTS)" pokazuje je li neko nadjačavanje već postavljeno. Za kontejner pokrenite istu provjeru unutar slike, jer je to okruženje koje build doista koristi.

Instalirajte jedan korijen tamo gdje build radi

Nabavite inspekcijski korijen od IT-a kao PEM datoteku i provjerite njegov otisak kroz odvojeni kanal prije nego što mu vjerujete. Na slikama zasnovanima na Debianu kopirajte ga u /usr/local/share/ca-certificates/ i pokrenite update-ca-certificates; slike iz obitelji RHEL koriste update-ca-trust nakon što datoteku smjeste u /etc/pki/ca-trust/source/anchors/. U kontejnerskom buildu dodajte te korake prije naredbe koja pada, da bi se sloj keširao iznad instalacije zavisnosti.

Za lokalni devcontainer montirajte PEM i pokrenite istu naredbu za ažuriranje pri pokretanju, umjesto da je zapečete u osobnu sliku koju nitko drugi ne može reproducirati. Alati koji nose vlastiti paket trebaju vlastito dokumentirano nadjačavanje: pip ima postavku za certifikat, npm ima postavku cafile, a većina ostalih prihvaća standardne varijable okruženja.

To nije isto kao prihvaćanje bilo kojeg certifikata. Dodajete jedan određeni korijen, dobiven od strane koja obavlja inspekciju, u jedno okruženje, a provjera ostaje uključena za svaki drugi lanac. Zapišite koja je datoteka dodana i kada istječe, jer se inspekcijski korijen obnavlja kao i svaki drugi CA.

Kada rukovanje umre prije certifikata

Ako se ništa ne predstavi, nikakva promjena spremišta povjerenja neće pomoći. Usporedite isti zahtjev s uključenim i isključenim tunelom, pa pregledajte lanac izravno pomoću openssl s_client -connect host:443 -servername host -showcerts. Veza koja se dovrši izvan VPN-a i poništi unutar njega politička je odluka posredničkog uređaja, a lijek je iznimka za tog hosta, a ne još jedan certifikat. Zatražite da se registar paketa ili API završna točka propuste bez izmjena.

Dijeljenje tunela tako da alat zaobiđe VPN izbjegava inspekciju tog prometa, što može kršiti politiku i ne čini alat pouzdanim.

Zapišite ishod za svaki alat

Kratka bilješka koja navodi binarnu datoteku, datoteku povjerenja koju čita, varijablu okruženja u igri i odobrenu iznimku poštedjet će sljedeću osobu cijele dijagnostike. Držite bilješku po alatu, a ne po prijenosnom računalu, jer je prijenosno računalo rijetko ono što se promijenilo.

I držite dvije rečenice odvojeno u kartici: instalirali smo određeni korporativni korijen i isključili smo provjeru. Samo je jedna od toga radnja podrške.

Povezani članci