TLS-fouten alleen op het bedrijfs-VPN: herstel de juiste vertrouwensopslag
Dezelfde tool, dezelfde laptop, alleen de VPN breekt TLS. Lees de melding, vind de CA-bundel die het binary leest, en voeg één root toe in plaats van controles uit te zetten.
De Go-build, de Composer-installatie en de Python-client werken allemaal thuis en falen allemaal binnen het bedrijfs-VPN. Dat patroon zegt iets over het pad, niet over de toepassing. Iets op de tunnel heeft de certificaatketen veranderd die uw proces ziet, of heeft de handshake gereset voordat er überhaupt een keten aankwam. De twee fouten zien er in een terminal hetzelfde uit en vragen volledig verschillende reacties.
Drie meldingen, drie mechanismen
De fout x509 certificate signed by unknown authority betekent dat er een keten is opgebouwd en dat de root ontbreekt in de vertrouwensopslag die dat proces gebruikt. De fout self-signed certificate in certificate chain betekent meestal dat een inspectieproxy met zijn eigen certificaat antwoordde, en dat is een keten die uw runtime niet herkent. Een SSL EOF tijdens de handshake betekent dat de verbinding werd gesloten voordat er een bruikbaar certificaat werd gestuurd, en dat is een tussenbox die de ClientHello weigert, helemaal geen vertrouwensprobleem.
Een vlag voor onveilige verbindingen toevoegen laat alle drie de meldingen verdwijnen terwijl de onderschepping blijft staan, en het haalt de controle weg die een echte aanvaller zou vangen.
Vind de bundel die het proces werkelijk leest
De bedrijfsroot die in de Windows-opslag is geïnstalleerd, herstelt browsers en .NET-toepassingen die de systeemopslag raadplegen. Hij doet niets voor een build in een container, die zijn eigen CA-bundel meedraagt, en niets voor een Python-proces met certifi of een Node-proces met zijn meegeleverde lijst. Go leest de systeempool van de omgeving waarin het binary draait, dus de container en niet de laptop. Eén machine levert daardoor tegelijk een werkende browser en een falende buildtool.
Vraag het de tool in plaats van aan te nemen. python3 -c "import ssl; print(ssl.get_default_verify_paths())" print de bestanden die Python zal raadplegen, en node -e "console.log(process.env.NODE_EXTRA_CA_CERTS)" laat zien of er al een overschrijving is ingesteld. Draai voor een container dezelfde controle in de image, want dat is de omgeving die de build werkelijk gebruikt.
Installeer één root waar de build draait
Haal de inspectie-root bij IT op als PEM-bestand en verifieer de vingerafdruk via een apart kanaal voordat u erop vertrouwt. Kopieer hem op Debian-gebaseerde images naar /usr/local/share/ca-certificates/ en voer update-ca-certificates uit; images uit de RHEL-familie gebruiken update-ca-trust nadat het bestand in /etc/pki/ca-trust/source/anchors/ is geplaatst. Voeg in een containerbuild die stappen toe vóór het falende commando, zodat de laag boven de installatie van afhankelijkheden wordt gecachet.
Mount voor een lokale devcontainer het PEM-bestand en voer bij de start hetzelfde updatecommando uit, in plaats van het in een persoonlijke image te bakken die niemand anders kan reproduceren. Tools die hun eigen bundel meeleveren, hebben hun eigen gedocumenteerde overschrijving nodig: pip heeft een certificaatinstelling, npm heeft een cafile-instelling, en de meeste andere accepteren de standaard omgevingsvariabelen.
Dit is niet hetzelfde als elk certificaat accepteren. U voegt één specifieke root, verkregen van de partij die de inspectie uitvoert, toe aan één omgeving, en verificatie blijft aan voor elke andere keten. Noteer welk bestand is toegevoegd en wanneer het verloopt, want een inspectie-root wordt vernieuwd zoals elke andere CA.
Wanneer de handshake sterft vóór een certificaat
Als er niets wordt aangeboden, helpt geen enkele wijziging in de vertrouwensopslag. Vergelijk hetzelfde verzoek met de tunnel aan en uit, en bekijk daarna de keten rechtstreeks met openssl s_client -connect host:443 -servername host -showcerts. Een verbinding die buiten het VPN tot stand komt en erbinnen wordt gereset, is een beleidsbeslissing van de tussenbox, en het middel is een uitzondering voor die host, niet nog een certificaat. Vraag om de packageregistry of het API-eindpunt ongewijzigd door te laten.
De tunnel splitsen zodat de tool het VPN omzeilt, vermijdt inspectie voor dat verkeer, wat het beleid kan schenden en de tool niet vertrouwd maakt.
Noteer het resultaat per tool
Een korte notitie met het binary, het vertrouwensbestand dat het leest, de omgevingsvariabele die meespeelt en de goedgekeurde uitzondering bespaart de volgende persoon de hele diagnose. Houd de notitie per tool in plaats van per laptop, want de laptop is zelden wat er is veranderd.
En houd twee zinnen apart in het ticket: we hebben een specifieke bedrijfsroot geïnstalleerd, en we hebben verificatie uitgezet. Slechts één daarvan is een supportactie.