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 resetovalo rukovanje prije nego što je lanac uopšte stigao. Dvije greške u terminalu izgledaju slično i traže potpuno različite reakcije.

Tri poruke, tri mehanizma

Greška x509 certificate signed by unknown authority znači da je lanac izgrađen i da njegov korijen nedostaje u skladištu povjerenja koje taj proces koristi. Greš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 tokom rukovanja znači da je veza zatvorena prije nego što je poslan ijedan upotrebljiv certifikat, i to je posredni uređaj koji odbija ClientHello, a ne problem s povjerenjem uopšte.

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 zaista čita

Korporativni korijen instaliran u Windows skladištu popravlja pretraživače i .NET aplikacije koje pregledaju sistemsko skladište. Ne radi ništa za build koji se izvršava u kontejneru, koji nosi vlastiti CA paket, niti za Python proces koji koristi certifi ili Node proces koji koristi svoj ugrađeni spisak. Go čita sistemski skup okruženja u kojem binarni fajl radi, dakle kontejner, a ne laptop. Zato jedan računar istovremeno daje ispravan pretraživač 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 zaista 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 zasnovanim na Debianu kopirajte ga u /usr/local/share/ca-certificates/ i pokrenite update-ca-certificates; slike iz RHEL porodice 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 sloj bio keširan iznad instalacije zavisnosti.

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

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

Kada rukovanje umre prije certifikata

Ako se ništa ne predstavi, nikakva promjena skladišta povjerenja neće pomoći. Uporedite isti zahtjev s uključenim i isključenim tunelom, pa pregledajte lanac direktno pomoću openssl s_client -connect host:443 -servername host -showcerts. Veza koja se završi izvan VPN-a i resetuje unutar njega je politička odluka posrednog uređaja, a lijek je izuzetak za taj host, a ne još jedan certifikat. Zatražite da se registar paketa ili API krajnja točka propuste bez izmjena.

Dijeljenje tunela tako da alat zaobiđe VPN izbjegava inspekciju za taj saobraćaj, što može kršiti politiku i ne čini alat pouzdanim.

Zapišite ishod za svaki alat

Kratka bilješka koja navodi binarni fajl, datoteku povjerenja koju čita, varijablu okruženja u igri i odobreni izuzetak poštedi sljedeću osobu cijele dijagnostike. Držite bilješku po alatu, a ne po laptopu, jer laptop je rijetko ono što se promijenilo.

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

Povezani članci