⭕File Extensions
Quick reference to the various file extension types.
Last updated
Quick reference to the various file extension types.
Last updated
.csr
.req
.p10
Certificate Signing Request. Applications can generate these for submission to certificate-authorities (CA). The actual format is PKCS10 which is defined in . It includes some/all of the key details of the requested certificate such as subject, organization, state, etc, as well as the public key of the certificate to get signed.
These get signed by the CA and a certificate is returned. The returned certificate is the public certificate (which includes the public key but not the private key), which itself can be in a couple of formats.
Contains information such as the public key and common name required by a Certificate Authority to create and sign a certificate for the requester, the encoding could be PEM or DER (which is a binary encoding of an ASN.1 specified structure).
.pem
Defined in RFC (part of a series from through ) Usually the public key
Is a container format that may include just the public certificate (such as with Apache installs, and CA certificate files /etc/ssl/certs
), or may include an entire certificate chain including public key, private key, and root certificates.
Confusingly, it may also encode a CSR (e.g. as used ) as the PKCS10 format can be translated into PEM.
The name is from , a failed method for secure email but the container format it used lives on, and is a base64 translation of the x509 ASN.1 keys.
It simply indicates a base64 encoding with header and footer lines. Mail traditionally only handles text, not binary which most cryptographic data is, so some kind of encoding is required to make the contents part of a mail message itself (rather than an encoded attachment).
The contents of the PEM are detailed in the header and footer line - .pem
itself doesn't specify a data type - just like .xml
and .html
do not specify the contents of a file, they just specify a specific encoding.
.key
Usually the private key This is a (usually) PEM formatted file containing just the private-key of a specific certificate and is merely a conventional name and not a standardized one. Can be any kind of key, but usually it is the private key - OpenSSL can wrap private keys for all algorithms (RSA, DSA, EC) in a generic and standard PKCS#8 structure, but it also supports a separate 'legacy' structure for each algorithm, and both are still widely used even though the documentation has marked PKCS#8 as superior for almost 20 years; both can be stored as DER (binary) or PEM encoded, and both PEM and PKCS#8 DER can protect the key with password-based encryption or be left unencrypted.
.crt
.cer
Stands simply for certificate, usually an certificate. The encoding could be PEM or DER; a certificate contains the public key, but it contains much more information (most importantly the signature by the Certificate Authority over the data and public key, of course).
.pkcs12
.pfx
.p12
Originally defined by RSA in the (abbreviated PKCS), the "12" variant was originally enhanced by Microsoft, and later submitted as . This is a password-protected container format that contains both public and private certificate pairs. Unlike .pem files, this container is fully encrypted. Openssl can turn this into a .pem file with both public and private keys: openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes