Go kompiliavimas, Composer diegimas ir Python klientas namie visi veikia, o įmonės VPN viduje visi nepavyksta. Šis modelis pasakoja apie kelią, o ne apie programą. Kažkas tunelyje pakeitė sertifikatų grandinę, kurią mato jūsų procesas, arba atstatė rankos paspaudimą, kol grandinė apskritai neatėjo. Abi gedimai terminale atrodo panašiai ir reikalauja visiškai skirtingų reakcijų.

Trys pranešimai, trys mechanizmai

Klaida x509 certificate signed by unknown authority reiškia, kad grandinė buvo sukurta, o jos šaknies trūksta toje sertifikatų saugykloje, kurią naudoja tas procesas. Klaida self-signed certificate in certificate chain paprastai reiškia, kad kontrolės tarpinė serveris atsakė savo sertifikatu, o tai yra grandinė, kurios jūsų vykdymo aplinka neatpažįsta. SSL EOF rankos paspaudimo metu reiškia, kad ryšys buvo uždarytas anksčiau, nei buvo išsiųstas koks nors naudingas sertifikatas, ir tai yra tarpinė įranga, kuri atmeta ClientHello, o ne jokia pasitikėjimo problema.

Pridėjus nesaugaus režimo požymį, visi trys pranešimai dingsta, o perėmimas lieka vietoje, ir tai pašalina patikrą, kuri sugautų tikrą užpuoliką.

Raskite paketą, kurį procesas iš tikrųjų skaito

Windows saugykloje įdiegta įmonės šaknis sutvarko naršykles ir .NET programas, kurios kreipiasi į sistemos saugyklą. Ji nieko nedaro kompiliavimui, vykstančiam konteinerio viduje, kuris neša savo CA paketą, ir nieko Python procesui su certifi ar Node procesui su jo įtrauktu sąrašu. Go skaito tos aplinkos, kurioje veikia dvejetainis failas, sistemos telkinį, tai yra konteinerio, o ne nešiojamojo kompiuterio. Todėl viena mašina vienu metu duoda veikiančią naršyklę ir nepavykstantį kompiliavimo įrankį.

Klauskite įrankio, o ne darykite prielaidų. python3 -c "import ssl; print(ssl.get_default_verify_paths())" išspausdina failus, kuriuos Python konsultuos, o node -e "console.log(process.env.NODE_EXTRA_CA_CERTS)" parodo, ar perrašymas jau nustatytas. Konteineriui tą pačią patikrą paleiskite atvaizdo viduje, nes tai yra aplinka, kurią kompiliavimas iš tikrųjų naudoja.

Įdiekite vieną šaknį ten, kur vyksta kompiliavimas

Gaukite kontrolės šaknį iš IT kaip PEM failą ir prieš ja pasitikėdami patikrinkite jos piršto atspaudą atskiru kanalu. Debian pagrindu sukurtuose atvaizduose nukopijuokite ją į /usr/local/share/ca-certificates/ ir paleiskite update-ca-certificates; RHEL šeimos atvaizdai naudoja update-ca-trust po to, kai failas įdedamas į /etc/pki/ca-trust/source/anchors/. Konteinerio kompiliavime pridėkite šiuos veiksmus prieš nepavykstančią komandą, kad sluoksnis būtų podėlyje virš priklausomybių diegimo.

Vietiniam devcontainer prijunkite PEM ir paleiskite tą pačią atnaujinimo komandą paleidimo metu, o ne įrašykite ją į asmeninį atvaizdą, kurio niekas kitas negali atkartoti. Įrankiai, kurie atsineša savo paketą, turi savo dokumentuotą perrašymą: pip turi sertifikato nustatymą, npm turi cafile nustatymą, o dauguma kitų priima standartinius aplinkos kintamuosius.

Tai nėra tas pats, kas priimti bet kokį sertifikatą. Jūs pridedate vieną konkretų šaknį, gautą iš šalies, kuri atlieka kontrolę, į vieną aplinką, o patikra lieka įjungta visoms kitoms grandinėms. Užsirašykite, kuris failas buvo pridėtas ir kada jis baigsis, nes kontrolės šaknis atnaujinama kaip ir bet kuri kita CA.

Kai rankos paspaudimas miršta prieš sertifikatą

Jei nieko nepateikiama, joks sertifikatų saugyklos pakeitimas nepadės. Palyginkite tą pačią užklausą su tuneliu įjungtu ir išjungtu, tada patikrinkite grandinę tiesiogiai su openssl s_client -connect host:443 -servername host -showcerts. Ryšys, kuris užbaigiamas už VPN ribų ir atstatomas jo viduje, yra tarpinės įrangos politikos sprendimas, o vaistas yra išimtis tam prieglobos serveriui, o ne dar vienas sertifikatas. Paprašykite, kad paketų registras ar API galutinis taškas būtų praleistas nepakeistas.

Tunelio skaidymas, kad įrankis apeitų VPN, išvengia to srauto kontrolės, o tai gali pažeisti politiką ir nepadaro įrankio patikimo.

Užsirašykite rezultatą kiekvienam įrankiui

Trumpa pastaba, kurioje išvardytas dvejetainis failas, jo skaitomas pasitikėjimo failas, žaidime esantis aplinkos kintamasis ir patvirtinta išimtis, sutaupo kitam žmogui visą diagnostiką. Laikykite pastabą pagal įrankį, o ne pagal nešiojamąjį kompiuterį, nes nešiojamasis kompiuteris retai būna tai, kas pasikeitė.

Ir laikykite du sakinius atskirai biliete: mes įdiegėme konkretų įmonės šaknį, ir mes išjungėme patikrą. Tik vienas iš jų yra palaikymo veiksmas.

Susiję straipsniai