TLS-foute net op die korporatiewe VPN: herstel die regte sertifikaatbewaarplek
Dieselfde gereedskap, dieselfde skootrekenaar, net die VPN breek TLS. Lees die boodskap, vind die CA-bundel wat die program lees, en voeg een wortel by eerder as om kontroles af te skakel.
Die Go-bou, die Composer-instellasie en die Python-kliënt werk almal by die huis en misluk almal binne die maatskappy se VPN. Daardie patroon sê iets oor die pad, nie oor die toepassing nie. Iets op die tonnel het die sertifikaatketting verander wat jou proses sien, of dit het die handdruk herstel voordat ’n ketting enigsins opgedaag het. Die twee foute lyk in ’n terminaal dieselfde en vereis heeltemal verskillende reaksies.
Drie boodskappe, drie meganismes
’n x509-sertifikaat wat deur ’n onbekende owerheid onderteken is-fout beteken ’n ketting is gebou en sy wortel ontbreek in die bewaarplek wat daardie proses gebruik. ’n Selfondertekende sertifikaat in sertifikaatketting-fout beteken gewoonlik dat ’n inspeksie-volmagtigde met sy eie sertifikaat geantwoord het, wat ’n ketting is wat jou looptyd nie herken nie. ’n SSL EOF tydens die handdruk beteken die verbinding het gesluit voordat enige bruikbare sertifikaat gestuur is, en dit is ’n middelkas wat die ClientHello verwerp, eerder as ’n vertroueprobleem hoegenaamd.
Om ’n onveilige vlag by te voeg laat al drie boodskappe verdwyn terwyl die onderskepping bly staan, en dit beëindig die kontrole wat ’n werklike aanvaller sou vang.
Vind die bundel wat daardie proses werklik lees
Die korporatiewe wortel wat in die Windows-bewaarplek geïnstalleer is, regstel blaaiers en .NET-toepassings wat die stelselbewaarplek raadpleeg. Dit doen niks vir ’n bou wat in ’n houer loop nie, wat sy eie CA-bundel saamdra, en niks vir ’n Python-proses wat certifi gebruik of ’n Node-proses wat sy ingeslote lys gebruik nie. Go lees die stelselpoel van die omgewing waarin die program loop, dit is die houer, nie die skootrekenaar nie. Een masjien lewer dus terselfdertyd ’n werkende blaaier en ’n mislukkende bougereedskap.
Vra die gereedskap eerder as om aan te neem. python3 -c "import ssl; print(ssl.get_default_verify_paths())" druk die lêers wat Python sal raadpleeg, en node -e "console.log(process.env.NODE_EXTRA_CA_CERTS)" wys of ’n oorheersing reeds gestel is. Vir ’n houer, voer dieselfde kontrole binne die beeld uit, want dit is die omgewing wat die bou werklik gebruik.
Installeer een wortel waar die bou loop
Kry die inspeksiewortel by IT as ’n PEM-lêer en verifieer sy vingerafdruk deur ’n aparte kanaal voordat jy dit vertrou. Op Debian-afgeleide beelde, kopieer dit in /usr/local/share/ca-certificates/ en voer update-ca-certificates uit; RHEL-familie-beelde gebruik update-ca-trust nadat die lêer in /etc/pki/ca-trust/source/anchors/ gesit is. In ’n houerbou, voeg daardie stappe voor die mislukkende opdrag by sodat die laag bo die afhanklikheidsinstallasie gekas word.
Vir ’n plaaslike devcontainer, monteer die PEM en voer dieselfde opdateringsopdrag by die begin uit eerder as om dit in ’n persoonlike beeld in te bak wat niemand anders kan herproduseer nie. Gereedskap wat sy eie bundel saambring het sy eie gedokumenteerde oorheersing nodig: pip het ’n sertifikaatinstelling, npm het ’n cafile-instelling, en die meeste ander aanvaar die standaard omgewingsveranderlikes.
Dit is nie dieselfde as om enige sertifikaat te aanvaar nie. Jy voeg een spesifieke wortel, verkry van die party wat die inspeksie doen, by een omgewing, en verifikasie bly aan vir elke ander ketting. Teken aan watter lêer bygevoeg is en wanneer dit verval, want ’n inspeksiewortel word vernuwe soos enige ander CA.
Wanneer die handdruk voor ’n sertifikaat sterf
As niks aangebied word nie, sal geen bewaarplekverandering help nie. Vergelyk dieselfde versoek met die tonnel op en af, en ondersoek dan die ketting direk met openssl s_client -connect host:443 -servername host -showcerts. ’n Verbinding wat buite die VPN voltooi en binne dit herstel, is ’n beleidsbesluit van die middelkas, en die oplossing is ’n uitsondering vir daardie gasheer eerder as nog ’n sertifikaat. Vra dat die pakketregister of API-eindpunt onveranderd deurgelaat word.
Om die tonnel te splits sodat die gereedskap die VPN omseil, vermy inspeksie vir daardie verkeer, wat beleid kan oortree en die gereedskap nie betroubaar maak nie.
Skryf die uitkoms per gereedskap neer
’n Kort nota wat die program, die vertrouelêer wat dit lees, die omgewingsveranderlike wat ter sprake is en die goedgekeurde uitsondering lys, spaar die volgende persoon die hele diagnose. Hou die nota per gereedskap eerder as per skootrekenaar, want die skootrekenaar is selde die ding wat verander het.
En hou twee sinne apart in die kaartjie: ons het ’n spesifieke korporatiewe wortel geïnstalleer, en ons het verifikasie afgeskakel. Net een daarvan is ’n ondersteuningsaksie.