PKCS12, PEM oder DER: wat e VPN-Client wierklech brauch
D'Verpackung entscheet, ob Äre Client d'Identitéit importéiert, net ob se vertraut gëtt. Vergläicht PKCS12, PEM an DER, a verifizéiert duerno.
An den Zertifikatsdiskussioune ginn zwou Behauptungen ëm. Déi éischt ass, datt eng .p12 déi staark Optioun ass an eng .pem déi lass; déi zweet, datt eng Textdatei sécher misst ze schécke sinn, well een se liese kann. Keng vun deenen hält eng Minutt Inspektioun aus.
PKCS12, PEM an DER beschreiwen, wéi Zertifikatobjeten gepackt a kodéiert ginn. Si entscheeden net, wien de Géigendeel ass, ob den Aussteller vertraut gëtt oder ob d'Datei e Passwuert brauch.
Wat de Client akzeptéiert, ass eng Kompatibilitéitsfro. Wat an der Datei ass, ass eng Identitéitsfro. Halt déi zwou auserneen, an déi meescht Importfeeler hale op mysteriéis ze sinn.
Dräi Containeren, ee Objektmodell
Fänkt mat deem un, wat Dir wierklech hutt. En Zertifikat ass eng ënnerschriwwen Ausso iwwer e öffentleche Schlëssel. De private Schlëssel ass separat Material, dat beweist, datt Dir dee Schlëssel kontrolléiert. Eng Kette ass de Set vun Aussteller, déi Ären Zertifikat mat enger Root verbannen, déi de Client vertraut. All dräi existéieren onofhängeg vun der Verpackung.
Eng PKCS12-Datei, meeschtens .p12 oder .pfx, ass en Container, deen an RFC 7292 definéiert ass, an deen e private Schlëssel, een oder méi Zertifikater an d'Kette an engem eenzegen passwuertgeschützte Block ka droen, mat engem Alias, deen d'Identitéit nennt. Eng PEM-Datei ass en Textkader no RFC 7468: e base64-Kierper tëscht BEGIN- an END-Zeilen, an eng Datei kann e puer Blocken hannereneen halen. DER ass déi binär Kodéierung vun deene selwechte ASN.1-Strukturen, an de PEM-Kierper ass wuertwiertlech DER mat base64 ronderëm.
Dee leschte Saz ass et wäert ze behalen. PEM an DER ëmwandelen schreift de Kader ëm, net den Inhalt, an d'Ëmwandlung zréck gëtt déi ursprénglech Bytes.
| Container | Can hold | Does not decide |
|---|---|---|
| PKCS12 (.p12, .pfx) | Key, leaf certificate, chain, alias, password | Which root the client trusts |
| PEM (.pem, .crt, .cer) | Any number of base64 blocks | Whether the private key is present |
| DER (.der, .cer) | One binary structure | The object type, whatever the extension says |
Kodéierung ass keng Verschlësselung
base64 ass en Transportalphabeet. Et verstoppt näischt, a jiddwereen kann e PEM-Block an enger Shell dekodéieren. Eng DER-Datei ass binär an genau esou ëffentlech. Keng vun den zwou Eegenschafte ass Schutz, a keng implizéiert, datt et e Passwuert gëtt.
Richtegen Schutz läit am Schlësselmaterial. E PKCS12-Bündel kann säin Inhalt ënner engem Schlëssel verschlësselen, deen aus engem Passwuert ofgeleet ass. E private PEM-Schlëssel kann mat engem ale Kappblock verschlësselt ginn oder an PKCS#8 EncryptedPrivateKeyInfo gehal ginn. En Zertifikat eleng hält näischt Geheimes, dofir léisst en Export, deen nëmmen en Zertifikat ergëtt, de Client net authentifizéieren, a wéi engem Format Dir en och ëmpackt.
D'Extensioun ass en Hiweis, kee Kontrakt. Dateien, déi mat .cer an .crt ophalen, erschéngen an allebéi Kodéierungen, an Apparater exportéieren DER-Zertifikater ënner .pem-Nimm dacks genuch, datt d'Roden unhand vum Suffix en Nomëtteg kascht. Liest amplaz déi éischt Bytes: eng PEM-Datei fänkt mat enger BEGIN-Zeil un, wärend DER mat 0x30 ufänkt, well d'baussenstruktur eng SEQUENCE ass.
Firwat den Import tatsächlech feelt
D'Fehlermeldunge vum Client drécken e puer verschidde Probleemer an ee Saz iwwer en ongültegen Zertifikat, also trennt se no Ursaach. Déi heefegst ass eng Kodéierungsdifferenz: e Client, deen PEM parst, gëtt bei enger DER-Datei e Parsefehler zréck, an d'Léisung ass eng Ëmwandlung, keen neien Zertifikat. Déi zweet ass e fehlende Schlëssel, wou den Zertifikat an der Rei ass an d'Identitéit net bewisen ka ginn. Déi drëtt ass d'Kette, wou e Bündel ouni säin Tëschezertifikat am Importdialog richteg ausgesäit an am Handshake feelt.
Verschlësselungsparameter verursaachen eng véiert, an et gesäit genee aus wéi e falscht Passwuert. Méi al Apparater hunn PKCS12-Dateien mat RC2-40 an 3DES exportéiert, déi OpenSSL 3 refuséiert, wann de Legacy-Provider net gelueden ass. Nei exportéieren aus dem Apparat mat AES-256-CBC a PBKDF2 ass déi dauerhaft Léisung. Al Chifferen dauerhaft op enger Clientmaschinn unzeloossen, fir eng eenzeg Datei ze déngen, ass e schlechten Deal.
Déi fënneft ass Ambiguitéit. En Container mat zwee Schlësselen an zwee Zertifikater, oder eng PEM-Datei mat dräi CERTIFICATE-Blocken, zwéngt de Client ze wielen, an seng Wiel ass dacks einfach dat éischt Element. Wann en Tunnel mat der falscher Identitéit opkënnt, ass dat meeschtens de Grond.
Inspektéiert ier Dir ëmwandelt
Liest d'Struktur, ouni Geheimnisser ze drécken. openssl pkcs12 -in bundle.p12 -info -noout mellt d'Verschlësselungsalgorithmen an d'Aliassen a suppriméiert de Schlëssel- an Zertifikatsausgang, an de openssl-pkcs12-Handbuch dokumentéiert d'Fahnen. -noout ewechhuelen an -nodes derbäisetzen ass fir Dateien ze produzéieren, déi Dir wëllt behalen, net fir e séiere Bléck, well et de private Schlëssel am Kloertext schreift.
Fir en Zertifikat beäntwert openssl x509 -in cert.pem -noout -subject -issuer -dates, wat en Importdialog net beäntwert, an -ext subjectAltName derbäigesat weist d'Nimm, fir déi den Zertifikat wierklech gülteg ass. Ass d'Datei DER, füügt -inform DER derbäi; déi eng eenzeg Fahne léist déi meescht unable-to-load-Feeler.
E Schlëssel mat engem Zertifikat ze matchingen ass mechanesch, an et ass et wäert virun all Import:
openssl x509 -in cert.pem -noout -pubkey | openssl sha256openssl pkey -in key.pem -pubout | openssl sha256
Identesch Digeste bedeiten, datt d'Paar zesummen ass. Verschidde Digeste bedeiten, datt Dir de falsche Schlëssel hutt, an keng Formatëmwandlung ännert dat.
Wat d'Format ni ännert
Vertrauensentscheedunge geschéien iwwer dem Container. De Client geet d'Kette bis op eng Root a sengem Späicher, préift d'Gültegkeetsfenster, préift d'erweidert Schlësselnutzung fir Clientauthentifikatioun, an op der Serversäit préift en, ob den Numm, deen en ugefaangen huet, am Zertifikat steet. Kee vun dëse Schrëtt liest eng Dateiextensioun.
Dofir ass eng Datei ëmbenennen, bis e Feeler verschwënnt, esou eng zouverlässeg Manéier Zäit ze verléieren. Den Import geléngt, d'Identitéit ass nach ëmmer falsch, an de Feeler kënnt am Handshake zréck, wou d'Message manner hëlleft. Dofir och gëtt e Bündel, dee virun zwee Joer exportéiert gouf, propper importéiert an trotzdem refuséiert: den Ofleesdatum ass am Zertifikat gereest, net am Dateinumm.
Eng Rei, déi Ëmaarbecht vermeit
Frot d'Dokumentatioun vum Client, wéi eng Kodéierungen en akzeptéiert a wéi en Container en fir eng Clientidentitéit erwaart, a kuckt dann, wat Dir kritt hutt. Wëll de Client eng eenzeg importéierbar Identitéit an Dir hutt getrennte PEM-Dateien, baut de Bündel eng Kéier mat engem Passwuert, dat Dir kontrolléiert, a behält d'Quellen. Wëll en PEM, extrahéiert de Schlëssel an d'Kette, a läscht duerno d'Tëschendateien iwwer de Prozess fir d'Ëmgang mat Umeldungsinformatiounen, deen Ären Team schonn benotzt.
No dem Import verifizéiert d'Identitéit an net den Dialog: Subjekt, Aussteller, Ofleef an den Numm, deen de Client présentéiert. En frëndlechen Numm an enger Lëscht ass en Etikett, keng verifizéiert Identitéit. Fellt den Tunnel duerno, debuggt Dir Authentifikatioun oder Routing amplaz Verpackung, wat e vill méi kuerze Gespréich ass.