Зборка 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)" паказвае, ці ўжо ўсталявана перавызначэнне. Для кантэйнера запусціце тую ж праверку ўнутры вобраза, бо менавіта гэта асяроддзе выкарыстоўвае зборка.

Усталюйце адзін корань там, дзе ідзе зборка

Атрымайце корань інспекцыі ў ІТ як файл 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, пазбягае інспекцыі для гэтага трафіку, што можа парушаць палітыку і не робіць інструмент надзейным.

Запішыце вынік па кожным інструменце

Кароткая нататка са спісам бінарніка, файла даверу, які ён чытае, зменнай асяроддзя ў гульні і зацверджанага выключэння зэканоміць наступнаму чалавеку ўсю дыягностыку. Трымайце нататку па інструменце, а не па ноўтбуку, бо ноўтбук рэдка бывае тым, што змянілася.

І трымайце два сказы асобна ў заяўцы: мы ўсталявалі канкрэтны карпаратыўны корань, і мы адключылі праверку. Толькі адно з гэтага — дзеянне падтрымкі.

Падобныя артыкулы