Изградбата на Go, инсталацијата на Composer и клиентот на Python работат дома и сите не успеваат внатре во корпоративниот VPN. Овој образец ви кажува за патеката, а не за апликацијата. Нешто на тунелот ја промени синџирот на сертификати што го гледа вашиот процес, или го ресетираше ракувањето пред воопшто да пристигне синџир. Двете дефекти изгледаат слично во терминалот и бараат сосема различни одговори.

Три пораки, три механизми

Грешката x509 certificate signed by unknown authority значи дека бил изграден синџир и неговиот корен недостасува во складиштето за доверба што го користи тој процес. Грешката self-signed certificate in certificate chain обично значи дека инспекцискиот прокси одговорил со сопствен сертификат, што е синџир што вашата извршна околина не го препознава. SSL EOF за време на ракувањето значи дека врската била затворена пред да биде испратен кој било употреблив сертификат, и тоа е среден уред што го одбива ClientHello, а не проблем со доверба воопшто.

Додавањето знаменце за небезбеден режим ги прави сите три пораки да исчезнат, додека пресретнувањето останува на место, и ја отстранува проверката што би фатила вистински напаѓач.

Најдете го пакетот што процесот навистина го чита

Корпоративниот корен инсталиран во складиштето на Windows ги поправа прелистувачите и .NET апликациите што го консултираат системското складиште. Тој не прави ништо за изградба што работи во контејнер, кој носи сопствен CA пакет, ниту за процес на Python што користи certifi или процес на Node што користи своја вградена листа. Go го чита системскиот фонд на околината во која работи бинарната датотека, односно контејнерот, а не преносниот компјутер. Затоа една машина истовремено дава прелистувач што работи и алатка за изградба што не успева.

Прашајте ја алатката наместо да претпоставувате. python3 -c "import ssl; print(ssl.get_default_verify_paths())" ги печати датотеките што ќе ги консултира Python, а node -e "console.log(process.env.NODE_EXTRA_CA_CERTS)" покажува дали препишувањето е веќе поставено. За контејнер, извршете ја истата проверка внатре во сликата, бидејќи тоа е околината што изградбата навистина ја користи.

Инсталирајте еден корен таму каде што работи изградбата

Земете го инспекцискиот корен од IT како PEM датотека и пред да му верувате, проверете го неговиот отпечаток преку посебен канал. На сликите базирани на Debian, копирајте го во /usr/local/share/ca-certificates/ и извршете update-ca-certificates; сликите од семејството RHEL користат update-ca-trust откако датотеката ќе се стави во /etc/pki/ca-trust/source/anchors/. Во контејнерска изградба, додајте ги тие чекори пред командата што не успева за слојот да се кешира над инсталацијата на зависностите.

За локален devcontainer, монтирајте го PEM и извршете ја истата команда за ажурирање при стартување наместо да ја запечете во лична слика што никој друг не може да ја репродуцира. Алатките што носат сопствен пакет бараат сопствено документирано препишување: pip има поставка за сертификат, npm има поставка cafile, а повеќето други ги прифаќаат стандардните околински променливи.

Ова не е исто како да прифатите кој било сертификат. Додавате еден конкретен корен, добиен од страната што ја врши инспекцијата, во една околина, и проверката останува вклучена за секој друг синџир. Запишете која датотека е додадена и кога истекува, бидејќи инспекцискиот корен се обновува како секој друг CA.

Кога ракувањето умира пред сертификат

Ако ништо не се претстави, никаква промена на складиштето за доверба нема да помогне. Споредете го истото барање со тунелот вклучен и исклучен, па потоа прегледајте го синџирот директно со openssl s_client -connect host:443 -servername host -showcerts. Врската што се завршува надвор од VPN-от и се ресетира внатре во него е одлука за политика на средниот уред, а лекот е исклучок за тој домаќин, а не уште еден сертификат. Побарајте регистарот на пакети или API крајната точка да помине неизменета.

Поделбата на тунелот за алатката да го заобиколи VPN-от избегнува инспекција за тој сообраќај, што може да ја прекрши политиката и не ја прави алатката доверлива.

Запишете го резултатот за секоја алатка

Кратка белешка што ја наведува бинарната датотека, датотеката за доверба што ја чита, околинската променлива во игра и одобрениот исклучок му заштедува на следниот човек целата дијагноза. Чувајте ја белешката по алатка, а не по преносен компјутер, бидејќи преносниот компјутер ретко е тоа што се променило.

И чувајте две реченици одвоени во билетот: инсталиравме конкретен корпоративен корен, и ја исклучивме проверката. Само едно од тие е дејство за поддршка.

Поврзани статии