X.509
- X.509 is a standard that defines the structure of the certificate using a formal language called Abstract Syntax Notation One (ASN.1)
- There are different formats of X.509 certificates such as PEM, DER, PKCS#7 and PKCS#12. PEM and PKCS#7 formats use Base64 ASCII encoding while DER and PKCS#12 use binary encoding
- An X.509 certificate contains information about the identity(organization or individual) to which a certificate is issued and the identity that issued it.
- It can self signed or can be signed by a certificate authority
CSR (Certificate Signing Request)
- CSR is a block of encoded message meant for signing by Certificate Authority to generate a Digital Certificate (which includes the public key but not the private key) for the requesting entity
- CSR can be encoded in PKCS#10 binary format as defined in RFC2986 that can be used with X.509
- It can also be represented as a base64 encoded PKCS#10
- A certification request consists of three main parts
- certification request information
- entity’s distinguished name
- the entity’s public key
- set of attributes providing other information
- signature algorithm identifier
- digital signature on the certification request
- certification request information
PEM (Privacy-Enhanced Mail)
- Container file format for storing and sending cryptographic keys, certificates or entire chain, and other data
- PEM format formalized by the IETF in RFC 7468
- It is a base64 encoded x509 ASN.1
- PEM data is commonly stored in files with a “.pem”, “.cert”, “.cer” or “.crt” suffix (for certificates), or a “.key” suffix (for public or private keys)
- A PEM file may contain multiple instances (e.g. chain of certificates)
KEY (suffix)
- A PEM formatted file containing just the private-key
- It is just a convention way of naming and there are no standardization
- File permissions on these file can be very important as some programs might refuse to load these keys
CERT, CER, CRT (suffix)
- A PEM formatted file with a different extension that is recognized by Windows as a certificate while a file with .pem is not recognized
- Usually contains a single certificate without any wrapping (NO private key, NO password )
- CERT file as usually in X509 format
PFX (suffix)
- PFX stands Personal Exchange Format
- A .pfx file is a PKCS#12 archive
- A .pfx file can contain Private Key and hence should NOT be distributed outside the organization
- It can be used for TLS/SSL on web site, for digitally signing messages or authorization tokens, or for authenticating to a partner system
- PFX files are password protected (usually)
CRL (Certificate Revocation List)
- A certificate revocation list (CRL) provides a list of certificates that have been revoked
- Certificate Authorities produce these as a way to de-authorize certificate(s) before expiration.
- The list can sometimes download them from CA websites.
- States of revocation
- Revoked: A certificate is irreversibly revoked.
- Hold: Temporary revocation and can be reinstated
PKCS12, P12
- PKCS#12 define an archive format which is a bag that can contain a lot of objects with optional password protection in a single file.
- It is commonly used to bundle a private key with its X.509 certificate or to bundle all the members of a chain of trust.
- A PKCS #12 file may be encrypted and signed.
- The internal storage containers, called “SafeBags”, may also be encrypted and signed.
- A few SafeBags are predefined to store certificates, private keys and CRLs.
- Another SafeBag is provided to store any other data at individual implementer’s choice.
- PKCS #12 is the successor to Microsoft’s “PFX” however, the terms “PKCS #12 file” and “PFX file” are sometimes used interchangeably
- A simpler, alternative format to PKCS #12 is PEM which just lists the certificates and possibly private keys as Base 64 strings in a text file
- The filename extension for PKCS #12 files is .p12 or .pfx
PKCS7, P7B, KEYSTORE
- The PKCS#7 format is a Cryptographic Message Syntax Standard defined in RFC 2315 as PKCS number 7
- The PKCS#7 certificate uses Base64 ASCII encoding with file extension .p7b or .p7c.
- Only certificates can be stored in this format, NOT private keys.
- This is a format used by Windows for certificate interchange.
- Java understands these natively, and often uses .keystore as an extension instead.
- Unlike .pem style certificates, this format has a defined way to include certification-path certificates.
DER (Distinguished Encoding Rules)
- DER is the method of encoding the data that makes up the certificate.
- The structure of a certificate is described using the ASN.1 data representation language. BER and DER are binary encoding methods for data described by ASN.1
- A file with DER extension is simply a binary encoded ASN.1 file.
- These files may also bear the CER or the CRT extension
Summary
References