Eksporter certifikaterne fra en P12 uden den private nøgle
En PKCS12-bundle indeholder nøgler og certifikater sammen. Læs strukturen først, og vælg derefter certifikater med -nokeys i stedet for at fjerne beskyttelsen.
Supportbilaget spørger, hvilket certifikat der ligger i VPN-bundlen, og den første indskydelse er at eksportere alt og vedhæfte det. En P12-fil pakker certifikater og privat nøglemateriale i én container, så at eksportere alt er netop det, du ikke bør sende. Kommandoen, der besvarer spørgsmålet, er et udvalgsproblem, ikke et konverteringsproblem. Fire flag afgør, hvilken halvdel af containeren du får, og to af dem lyder sikrere, end de er.
Begynd med at læse containeren i stedet for at tømme den.
Hvad en PKCS12-fil faktisk indeholder
En PKCS12-container indeholder et eller flere certifikater, muligvis en privat nøgle og en message authentication code over indholdet. Certifikaterne kan omfatte leaf-certifikatet for din klientidentitet og de mellemliggende certifikater, der kæder det til en CA. Nøglen, når den er til stede, er det, der gør filen til en hemmelighed i stedet for et dokument.
Den forskel er grunden til, at -nokeys findes, og til at det er det flag, denne opgave har brug for.
Læs bundlen uden at skrive nøglen ud
Inspektionsformen udskriver struktur- og algoritmedetaljer og skriver intet: openssl pkcs12 -in client.p12 -info -noout. Den spørger efter importadgangskoden, som er det rigtige sted for den værdi, og den fortæller dig, om filen overhovedet indeholder en nøgle. Brug -passin env:PKCS12_PASS, når adgangskoden ikke kan indtastes, for en adgangskode i en shell-kommando er en adgangskode i proceslisten. Dette trin eksporterer intet, og det er netop pointen.
Læs outputtet for tre ting: hvor mange certifikater, om en nøgle er til stede, og hvilke algoritmer der beskytter den.
Brug -nokeys, og forveksl det ikke med -nocerts
-nokeys udelukker private nøgler og efterlader certifikaterne. -clcerts indsnævrer det til klientcertifikater, -cacerts indsnævrer det til CA-certifikater, og de to er filtre snarere end alternativer. -nocerts lyder som den sikre stavemåde af samme idé og betyder det modsatte: ingen certifikater, hvilket kun efterlader nøgler. At blande det ind i en certifikateksport er, hvordan en privat nøgle ender på disken.
Den tolinjede form, der frembringer en certifikatfil og en CA-fil og intet andet, er:
openssl pkcs12 -in client.p12 -nokeys -clcerts -out client-certificates.pem
openssl pkcs12 -in client.p12 -nokeys -cacerts -out ca-certificates.pemLegacy-bundler har brug for -legacy på OpenSSL 3 for at læse deres ældre kryptering, og det flag ændrer, hvad parseren accepterer, ikke hvad den udsender. Hvis parsing fejler med en fejl om en ikke-understøttet algoritme, er det korrekte første skridt at tilføje -legacy, og at springe MAC-kontrollen over er det ikke.
Kontroller outputtet, ikke exitkoden
En exitstatus på nul siger, at kommandoen kørte, ikke at filen indeholder det, du forventer. Tæl certifikaterne i outputtet, og læs subject og datoer: openssl x509 -in client-certificates.pem -noout -subject -dates -fingerprint. Sammenlign fingeraftrykket med det, supportteamet forventer, for en bundle med to klientcertifikater giver en fil med to blokke, og de fleste værktøjer læser kun den første. Formål, tillid og nøgleoverensstemmelse er igen separate tests.
Et certifikat, der kan parses, er et certifikat, der kan parses. Det er ikke et certifikat, som VPN'en accepterer.
Afgør, om du overhovedet har brug for filer
Hvis den modtagende klient importerer PKCS12 direkte, er det enklere at sende den originale bundle gennem en godkendt kanal med adgangskoden holdt adskilt, og beskyttelsen bevares. Ekstraktion er til inspektion, til en klient der har brug for PEM, eller til en supportsag, der bad om en bestemt artefakt. Hver ekstraktion fjerner et lag og bør have en grund.
Offentlige certifikater indeholder ikke den private nøgle, men de indeholder navne og organisationsoplysninger. Del de felter, bilaget bad om, i stedet for filen, medmindre det er filen, der blev anmodet om.