Jeg er ansvarlig for at vedligeholde to Debian-servere. Hver gang jeg skal gøre noget med sikkerhedscertifikater, søger jeg på Google efter vejledninger og slår løs, indtil det endelig virker.
I mine søgninger støder jeg dog ofte på forskellige filformater (.key
, .csr
, .pem
), men jeg har aldrig kunnet finde en god forklaring på, hvad hvert filformat har til formål.
Jeg tænkte på, om de gode folk her på ServerFault kunne give nogle afklaring på dette spørgsmål?
SSL har eksisteret længe nok til, at man skulle tro, at der ville være enighed om containerformater. Og det har du ret i, at der er det. Der er for mange standarder, som det er tilfældet. Så dette er hvad jeg ved, og jeg er sikker på at andre vil bidrage.
/etc/ssl/certs
), eller det kan indeholde en hel certifikatkæde, herunder offentlig nøgle, privat nøgle og rodcertifikater. Forvirrende nok kan det også kode en CSR (f.eks. som brugt her), da PKCS10-formatet kan oversættes til PEM. Navnet stammer fra Privacy Enhanced Mail (PEM), en fejlslagen metode til sikker e-mail, men det anvendte containerformat lever videre og er en base64-oversættelse af x509 ASN.1-nøglerne./etc/ssl/private
. Rettighederne på disse filer er meget vigtige, og nogle programmer vil nægte at indlæse disse certifikater, hvis de er indstillet forkert.openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes
Et par andre formater, der dukker op fra tid til anden:
openssl x509 -inform der -in to-convert.der -out converted.pem
). Windows ser disse som certifikatfiler. Som standard vil Windows eksportere certifikater som .DER-formaterede filer med en anden udvidelse. Som f.eks..keystore
som en udvidelse i stedet. I modsætning til .pem-certifikater har dette format en defineret måde at inkludere certifikater med certificeringssti på.Sammenfattende kan man sige, at der er fire forskellige måder at præsentere certifikater og deres komponenter på:
Jeg håber, at dette hjælper.
PEM er i sig selv ikke et certifikat, det er blot en måde at kode data på. X.509-certifikater er en type data, der almindeligvis er kodet med PEM.
PEM er et X.509-certifikat (hvis struktur er defineret ved hjælp af ASN.1), kodet ved hjælp af ASN.1 DER (Distinguished Encoding Rules), der derefter køres gennem Base64-kodning og sættes ind mellem ankerlinjer i almindelig tekst (BEGIN CERTIFICATE og END CERTIFICATE).
Du kan repræsentere de samme data ved hjælp af PKCS#7- eller PKCS#12-repræsentationerne, og openssl-kommandolinjeværktøjet kan bruges til dette formål.
De åbenlyse fordele ved PEM er, at det er sikkert at indsætte i kroppen af en e-mail, fordi det har ankerlinjer og er 7-bit rent.
[RFC1422] (https://tools.ietf.org/html/rfc1422) indeholder flere oplysninger om PEM-standarden i forbindelse med nøgler og certifikater.
Nogle gange er en .crt'-fil allerede en
.pem'-fil. Se: https://stackoverflow.com/questions/991758/openssl-pem-key