Vraag Wat is een Pem-bestand en hoe verschilt dit van andere door OpenSSL gegenereerde sleutelbestandsindelingen?


Ik ben verantwoordelijk voor het onderhoud van twee Debian-servers. Elke keer als ik iets met beveiligingscertificaten moet doen, gebruik ik Google voor tutorials en versla ik het totdat het uiteindelijk werkt.

In mijn zoekopdrachten kom ik echter vaak verschillende bestandsindelingen tegen (.key, .csr, .pem) maar ik heb nooit een goede uitleg kunnen vinden van wat het doel van elk bestandsformaat is.

Ik vroeg me af of de goede mensen hier bij ServerFault wat meer duidelijkheid kunnen geven over deze kwestie?


1173
2018-05-19 02:24


oorsprong


stackoverflow.com/a/45886431/1599699 - Andrew


antwoorden:


SSL bestaat al lang genoeg, je zou denken dat er overeengekomen containervormen zijn. En je hebt gelijk, dat zijn er. Te veel standaarden als het gebeurt. Dus dit is wat ik weet, en ik ben er zeker van dat anderen het zullen horen.

  • .CSR - Dit is een certificaatondertekeningsverzoek. Sommige applicaties kunnen deze genereren voor verzending naar certificaatautoriteiten. Het daadwerkelijke formaat is PKCS10 dat is gedefinieerd in RFC 2986. Het bevat enkele / alle van de belangrijkste details van het aangevraagde certificaat, zoals onderwerp, organisatie, staat, wat niet, evenals de publieke sleutel van het certificaat om ondertekend te worden. Deze worden ondertekend door de CA en er wordt een certificaat geretourneerd. Het geretourneerde certificaat is het publiek certificaat (inclusief de openbare sleutel maar niet de persoonlijke sleutel), die zelf in een aantal indelingen kan zijn.
  • .pem - Gedefinieerd in RFC's 1421 door 1424, dit is een containerindeling die alleen het openbare certificaat kan bevatten (zoals met Apache-installaties en CA-certificaatbestanden /etc/ssl/certs), of kan een volledige certificaatketen bevatten, waaronder een openbare sleutel, een privésleutel en rootcertificaten. Verwarrend kan het ook een CSR coderen (bijvoorbeeld zoals gebruikt hier) omdat het PKCS10-formaat kan worden vertaald in PEM. De naam is van Privacy Enhanced Mail (PEM), een mislukte methode voor veilige e-mail, maar het containertype dat werd gebruikt, leeft voort en is een base64-vertaling van de x509 ASN.1-sleutels.
  • .sleutel - Dit is een PEM-geformatteerd bestand dat alleen de privésleutel van een specifiek certificaat bevat en is slechts een conventionele naam en geen gestandaardiseerde naam. In Apache-installaties zit dit vaak in /etc/ssl/private. De rechten op deze bestanden zijn erg belangrijk en sommige programma's zullen weigeren deze certificaten te laden als ze verkeerd zijn ingesteld.
  • .pkcs12 .pfx .p12 - Oorspronkelijk gedefinieerd door RSA in de Public-Key Cryptography Standards (afgekorte PKCS), de "12" -variant oorspronkelijk werd verbeterd door Microsoft, en later ingediend als RFC 7292. Dit is een containerformaat met een wachtwoord dat zowel publieke als private certificaatparen bevat. In tegenstelling tot .pem-bestanden, is deze container volledig gecodeerd. Openssl kan dit veranderen in een .pem-bestand met zowel publieke als private sleutels: openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes 

Een paar andere formaten die van tijd tot tijd verschijnen:

  • .der - Een manier om ASN.1-syntaxis te coderen in binair, een .pem-bestand is slechts een Base64-gecodeerd .der-bestand. OpenSSL kan deze naar .pem converteren (openssl x509 -inform der -in to-convert.der -out converted.pem). Windows ziet deze als certificaatbestanden. Windows exporteert standaard certificaten als .DER-geformatteerde bestanden met een andere extensie. Net zoals...
  • .cert .cer .crt - Een .pem (of zelden .der) geformatteerd bestand met een andere extensie, een extensie die wordt herkend door Windows Verkenner als een certificaat, wat .pem niet is.
  • .p7b .keystore - Gedefinieerd in RFC 2315 als PKCS nummer 7 is dit een formaat dat door Windows wordt gebruikt voor het uitwisselen van certificaten. Java begrijpt deze native en gebruikt deze vaak .keystore als een extensie. In tegenstelling tot .pem-stijlcertificaten, heeft dit formaat een gedefinieerd manier om certificering-pad certificaten op te nemen.
  • .crl - Een certificaatintrekkingslijst. Certificaatautoriteiten produceren deze als een manier om certificaten vóór expiratie te de-autoriseren. Je kunt ze soms downloaden van CA-websites.

Samenvattend zijn er vier verschillende manieren om certificaten en hun componenten te presenteren:

  • PEM - Beheer door RFC's, het wordt bij voorkeur gebruikt door open-source software. Het kan verschillende extensies hebben (.pem, .key, .cer, .cert, meer)
  • PKCS7 - Een open standaard die wordt gebruikt door Java en wordt ondersteund door Windows. Bevat geen privésleutelmateriaal.
  • PKCS12 - Een Microsoft-privaatstandaard die later werd gedefinieerd in een RFC die verbeterde beveiliging biedt ten opzichte van de PEM-indeling in platte tekst. Dit kan privésleutelmateriaal bevatten. Het wordt bij voorkeur gebruikt door Windows-systemen en kan vrij worden geconverteerd naar PEM-indeling via openssl.
  • DER - Het bovenliggende formaat van PEM. Het is handig om het te zien als een binaire versie van het base64-gecodeerde PEM-bestand. Niet routinematig veel buiten Windows gebruikt.

Ik hoop dat dit helpt.


1449
2018-05-19 02:49



Het mooie van normen is dat er zoveel zijn om uit te kiezen ... - squillman
.crt is een andere veel voorkomende extensie voor .cert en .cer - David Pashley
PEM is een bestandsindeling die kan bestaan ​​uit een certificaat (ook wel openbare sleutel genoemd), een persoonlijke sleutel of beide samengevoegd. Besteed niet zoveel aandacht aan de bestandsextensie; het betekent Privacy Enhanced Mail, een gebruik waar het niet veel gebruik van zag, maar het bestandsformaat bleef hangen. - Dan Carley
Zeer bruikbaar antwoord, maar ik denk niet dat je de .pub-indeling hebt gebruikt die is gemaakt door ssh-keygen. Het zou nuttig zijn om te weten hoe dat aansluit bij de rest. - Jez
Het kan niet nalaten te merken dat "Privacy Enhanced Email" het acroniem "PEE" zou geven in tegenstelling tot "PEM". De RFC's gebruiken de zin "Privacy Enhanced Mail" - aidan


PEM op zich is geen certificaat, het is gewoon een manier om gegevens te coderen. X.509-certificaten zijn een type gegevens dat gewoonlijk wordt gecodeerd met PEM.

PEM is een X.509-certificaat (waarvan de structuur is gedefinieerd met ASN.1), gecodeerd met de ASN.1 DER (DNC-coderingsregels), vervolgens de Base64-codering doorlopen en vastzitten tussen ankertekenregels (BEGIN CERTIFICAAT en EINDCERTIFICAAT) ).

U kunt dezelfde gegevens representeren met de PKCS # 7- of PKCS # 12-representaties, en het openssl-opdrachtregelhulpprogramma kan hiervoor worden gebruikt.

De voor de hand liggende voordelen van PEM zijn dat het veilig is om in de body van een e-mailbericht te plakken omdat het ankerlijnen heeft en 7-bits schoon is.

RFC1422 heeft meer details over de PEM-standaard omdat deze betrekking heeft op sleutels en certificaten.


123
2018-06-06 15:19



Hoe doe je dit "met behulp van openssl command line"? - Samik R
Om een ​​DER-bestand (.crt .cer .der) naar PEM te converteren: openssl x509 -inform der -in cert.cer -out cert.pem. Om een ​​PEM-bestand naar DER te converteren: openssl x509 -outform der -in cert.pem -out certi.der. Een PKCS # 12-bestand (.pfx .p12) met een persoonlijke sleutel en certificaten naar PEM converteren: openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes. Een PEM-certificaatbestand en een persoonlijke sleutel converteren naar PKCS # 12 (.pfx .p12): openssl pkcs12 -export -out cert.pfx -inkey privateKey.key -in cert.crt -certfile CACert.crt Van hier - mpeac


Soms een .crt bestand is al een .pem. Zien: https://stackoverflow.com/questions/991758/openssl-pem-key


51
2018-03-15 00:24



Inderdaad waar, ik heb dit vandaag net opgemerkt. Ik moest een PEM-certificaat invoeren in rackspace-loadbalancer en ik vroeg me af of het gegenereerde crt in dat formaat was. Maar zo werkte het, dus dat was ook mijn conclusie, de meeste van deze .crt's zijn er in het PEM-formaat. - Glenn Plas