Een VPN-certificaat kopiëren kopieert de sleutel niet
Een certificaat bevat de openbare sleutel en de ondertekende identiteit; de bijbehorende privésleutel staat apart. Lees het exportpakket voordat u aanneemt dat een kopie kan authenticeren.
De wandeling begint bij de certificaatlijst van de client, waar de vermelding een naam, een uitgever en een vervaldatum toont en niets anders. Exporteer hem, importeer hem op het tweede apparaat, en de verbinding wordt geweigerd omdat de client niet kan bewijzen dat hij de privésleutel bezit. Het bestand is volledig gekopieerd; de fout is te verwachten dat een certificaat zijn eigen sleutel meedraagt. Lees de exportdialoog voordat u het formaat kiest en bekijk daarna het bestand dat u werkelijk hebt ontvangen.
Twee klikken, twee heel verschillende artefacten.
Lees de exportdialoog, niet de bestandsextensie
Een DER- of PEM-certificaatexport bevat een openbare sleutel en de ondertekende identiteitsclaims, dat is wat een server nodig heeft om u te vertrouwen en wat een client nodig heeft om een server te verifiëren. Een PKCS#12-pakket is een container die een certificaat, de keten en de bijbehorende privésleutel kan bevatten, beschermd met een wachtwoord, hoewel het ook zonder de sleutel kan worden gemaakt.
PEM is alleen een tekstcodering, geen belofte over de inhoud. Dezelfde extensie kan één certificaat beschrijven of een bestand met meerdere gelabelde blokken, en de exportopties bepalen welke.
De nuttige vraag is dus nooit welke extensie u kreeg, maar welke blokken het bestand bevat. Een pakket dat zonder zijn sleutel is geëxporteerd, blijft een pakket. Controleer de inhoud en niet de populariteit van het formaat.
Bekijk wat u werkelijk hebt gekregen
Zoek de labels voordat u iets importeert, en lees dan de certificaatvelden om te bevestigen welke identiteit u in handen hebt. Voer de controles uit op het bestand dat werkelijk wordt geïmporteerd. Herhaal ze na elke nieuwe export, omdat de opties kunnen verschillen.
grep -E 'BEGIN (CERTIFICATE|PRIVATE KEY|ENCRYPTED PRIVATE KEY)' bundle.pem openssl x509 -in client.crt -noout -subject -issuer -dates openssl pkey -in client.key -noout -text | head -5 openssl pkcs12 -info -in client.p12 -noout
Een export met alleen een certificaatblok is een openbaar object en kan niet authenticeren. Een sleutelblok zonder certificaat laat u achter zonder de keten die de server verwacht. De PKCS#12-informatie-uitvoer meldt ook of er een sleutel aanwezig is, wat de vraag voor dat formaat beslecht. Hij noemt ook het algoritme en de sleutellengte, en hij mislukt volledig wanneer er geen sleutel is.
Plak nooit een bestand met een privésleutel in een supportthread, een issuetracker of een chat, zelfs niet wanneer het lijkt op het certificaat dat u al deelde. Screenshots van een sleutelpaneel verdienen dezelfde voorzichtigheid.
De sleutel kan ergens staan waar u hem niet kunt kopiëren
Op beheerde apparaten kan de privésleutel in de sleutelhanger van het besturingssysteem, in een hardwaretoken of in een beveiligde enclave staan, met een beleid dat hem als niet-exporteerbaar markeert. De certificaatbeheerder toont dan het openbare object terwijl het geheim blijft waar het is, en geen enkel exportcommando levert een draagbare kopie. Inschrijving via beheer van mobiele apparaten werkt vaak juist zo.
Dat is een beheersmaatregel, geen obstakel om te omzeilen. Een privésleutel uit het openbare certificaat reconstrueren is niet mogelijk, en elk gereedschap dat dat beweert, doet iets anders.
Schrijf een nieuwe identiteit in in plaats van te kopiëren
De ondersteunde weg is meestal om een afzonderlijke identiteit voor het nieuwe apparaat in te schrijven en de oude in te trekken wanneer die buiten gebruik gaat, zodat elk apparaat onafhankelijk kan worden teruggetrokken. Waar een export met de sleutel echt is goedgekeurd, behandelt u het resulterende bestand en het wachtwoord als inloggegevens: versleuteld in rust, overgedragen via een vertrouwd kanaal en verwijderd wanneer de inschrijving klaar is.
Verifieer door te authenticeren met de geïmporteerde identiteit, niet door te kijken of de import lukt. Een client die een openbaar certificaat in zijn opslag accepteert, heeft niets over de sleutel bewezen.
Sluit af met de bevestiging dat de server de nieuwe identiteit accepteert en dat de oude zich nog steeds gedraagt zoals het beleid bedoelt. Daarmee eindigt de wandeling met bewijs, in plaats van met een bestand dat er correct uitziet.