Eksporter sertifikatene fra en P12 uten den private nøkkelen
En PKCS12-bundle inneholder nøkler og sertifikater sammen. Les strukturen først, og velg deretter sertifikater med -nokeys i stedet for å fjerne beskyttelsen.
Supportbilaget spør hvilket sertifikat som ligger i VPN-bundlen, og den første innskytelsen er å eksportere alt og legge det ved. En P12-fil pakker sertifikater og privat nøkkelmateriale i én container, så å eksportere alt er nettopp det du ikke vil sende. Kommandoen som svarer på spørsmålet, er et utvalgsproblem, ikke et konverteringsproblem. Fire flagg avgjør hvilken halvdel av containeren du får, og to av dem høres sikrere ut enn de er.
Begynn med å lese containeren i stedet for å tømme den.
Hva en PKCS12-fil faktisk inneholder
En PKCS12-container inneholder ett eller flere sertifikater, muligens en privat nøkkel og en message authentication code over innholdet. Sertifikatene kan omfatte leaf-sertifikatet for klientidentiteten din og mellomsertifikatene som kjedet det til en CA. Nøkkelen, når den finnes, er det som gjør filen til en hemmelighet i stedet for et dokument.
Den forskjellen er grunnen til at -nokeys finnes, og til at det er flagget denne oppgaven trenger.
Les bundlen uten å skrive ut nøkkelen
Inspeksjonsformen skriver ut struktur og algoritmedetaljer og skriver ingenting: openssl pkcs12 -in client.p12 -info -noout. Den spør etter importpassordet, som er det riktige stedet for den verdien, og den forteller deg om filen i det hele tatt inneholder en nøkkel. Bruk -passin env:PKCS12_PASS når passordet ikke kan skrives inn, for et passord i en shell-kommando er et passord i prosesslisten. Dette trinnet eksporterer ingenting, og det er nettopp poenget.
Les utdataene etter tre ting: hvor mange sertifikater, om en nøkkel er til stede, og hvilke algoritmer som beskytter den.
Bruk -nokeys, og ikke forveksle det med -nocerts
-nokeys utelukker private nøkler og lar sertifikatene være igjen. -clcerts begrenser det til klientsertifikater, -cacerts begrenser det til CA-sertifikater, og de to er filtre snarere enn alternativer. -nocerts høres ut som den trygge stavemåten av samme idé og betyr det motsatte: ingen sertifikater, noe som bare lar nøkler være igjen. Å blande det inn i en sertifikateksport er hvordan en privat nøkkel havner på disken.
Den tolinjede formen som gir en sertifikatfil og en CA-fil, og ingenting annet, er:
openssl pkcs12 -in client.p12 -nokeys -clcerts -out client-certificates.pem
openssl pkcs12 -in client.p12 -nokeys -cacerts -out ca-certificates.pemEldre bundler trenger -legacy på OpenSSL 3 for å lese den eldre krypteringen sin, og det flagget endrer hva parseren godtar, ikke hva den sender ut. Hvis parsing mislykkes med en feil om en algoritme som ikke støttes, er det riktige første trekket å legge til -legacy, og å hoppe over MAC-kontrollen er det ikke.
Kontroller utdataene, ikke exitkoden
En exitstatus på null sier at kommandoen kjørte, ikke at filen inneholder det du forventer. Tell sertifikatene i utdataene og les subject og datoer: openssl x509 -in client-certificates.pem -noout -subject -dates -fingerprint. Sammenlign fingeravtrykket med det supportteamet forventer, for en bundle med to klientsertifikater gir en fil med to blokker, og de fleste verktøy leser bare den første. Formål, tillit og nøkkeloverensstemmelse er igjen separate tester.
Et sertifikat som lar seg parse, er et sertifikat som lar seg parse. Det er ikke et sertifikat som VPN-en godtar.
Avgjør om du i det hele tatt trenger filer
Hvis klienten som mottar det, importerer PKCS12 direkte, er det enklere å sende den opprinnelige bundlen gjennom en godkjent kanal med passordet holdt atskilt, og beskyttelsen bevares. Ekstrahering er for inspeksjon, for en klient som trenger PEM, eller for en supportssak som ba om en bestemt artefakt. Hver ekstrahering fjerner ett lag og bør ha en grunn.
Offentlige sertifikater inneholder ikke den private nøkkelen, men de inneholder navn og organisasjonsdetaljer. Del feltene bilaget ba om i stedet for filen, med mindre det er filen som ble bedt om.