Ik ben verantwoordelijk voor het onderhoud van twee Debian servers. Elke keer als ik iets met beveiligingscertificaten moet doen, Google ik naar tutorials en sla net zo lang tot het eindelijk werkt.
Echter, in mijn zoektochten kom ik vaak verschillende bestandsformaten tegen (.key
, .csr
, .pem
) maar ik'heb nooit een goede uitleg kunnen vinden over wat het doel is van elk bestandsformaat's.
Ik vroeg me af of de goede mensen hier op ServerFault wat opheldering zouden kunnen verschaffen over deze kwestie?
SSL bestaat al lang genoeg om te denken dat er overeengekomen containerformaten zouden zijn. En je hebt gelijk, die zijn er. Te veel normen, toevallig. Dus dit is wat ik weet, en ik weet zeker dat anderen mee zullen doen.
/etc/ssl/certs
), of het kan een volledige certificaatketen bevatten inclusief publieke sleutel, private sleutel, en root certificaten. Verwarrend genoeg kan het ook een CSR coderen (bv. zoals hier gebruikt hier) aangezien het PKCS10 formaat kan worden vertaald naar PEM. De naam komt van Privacy Enhanced Mail (PEM), een mislukte methode voor beveiligde e-mail, maar het gebruikte containerformaat leeft voort, en is een base64 vertaling van de x509 ASN.1 sleutels./etc/ssl/private
. De rechten op deze bestanden zijn erg belangrijk, en sommige programma's zullen weigeren om deze certificaten te laden als ze verkeerd zijn ingesteld.openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes
Een paar andere formaten die van tijd tot tijd opduiken:
openssl x509 -inform der -in to-convert.der -out converted.pem
). Windows ziet deze als Certificaat bestanden. Standaard exporteert Windows certificaten als .DER-geformatteerde bestanden met een andere extensie. Zoals....keystore
als extensie. In tegenstelling tot .pem-stijl certificaten, heeft dit formaat een gedefinieerde manier om certificatie-pad certificaten op te nemen.Samenvattend zijn er vier verschillende manieren om certificaten en hun componenten te presenteren:
Ik hoop dat dit helpt.
PEM op zich is geen certificaat, het is slechts een manier om gegevens te coderen. X.509-certificaten zijn een type gegevens dat gewoonlijk met PEM wordt gecodeerd.
PEM is een X.509-certificaat (waarvan de structuur is gedefinieerd met ASN.1), gecodeerd met de ASN.1 DER (distinguished encoding rules), dan door Base64-codering gehaald en tussen ankerregels in platte tekst geplakt (BEGIN CERTIFICATE en END CERTIFICATE).
Je kan dezelfde gegevens weergeven met de PKCS#7 of PKCS#12 representaties, en het openssl commandoregel hulpprogramma kan gebruikt worden om dit te doen.
De voor de hand liggende voordelen van PEM is dat het veilig in de body van een e-mailbericht kan worden geplakt omdat het ankerregels heeft en 7-bit schoon is.
RFC1422 bevat meer details over de PEM-standaard met betrekking tot sleutels en certificaten.
Soms is een .crt
bestand al een .pem
. Zie: https://stackoverflow.com/questions/991758/openssl-pem-key