Certificates
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:
A public key certificate is a digital ID used in cryptography to prove someone owns a public key. It includes the key's details, the owner's identity (the subject), and a digital signature from a trusted authority (the issuer). If the software trusts the issuer and the signature is valid, secure communication with the key's owner is possible.
Certificates are mostly issued by certificate authorities (CAs) in a public-key infrastructure (PKI) setup. Another method is the web of trust, where users directly verify each other’s keys. The common format for certificates is X.509, which can be adapted for specific needs as outlined in RFC 5280.
In x509 certificates, several fields play critical roles in ensuring the certificate's validity and security. Here's a breakdown of these fields:
Version Number signifies the x509 format's version.
Serial Number uniquely identifies the certificate within a Certificate Authority's (CA) system, mainly for revocation tracking.
The Subject field represents the certificate's owner, which could be a machine, an individual, or an organization. It includes detailed identification such as:
Common Name (CN): Domains covered by the certificate.
Country (C), Locality (L), State or Province (ST, S, or P), Organization (O), and Organizational Unit (OU) provide geographical and organizational details.
Distinguished Name (DN) encapsulates the full subject identification.
Issuer details who verified and signed the certificate, including similar subfields as the Subject for the CA.
Validity Period is marked by Not Before and Not After timestamps, ensuring the certificate is not used before or after a certain date.
The Public Key section, crucial for the certificate's security, specifies the algorithm, size, and other technical details of the public key.
x509v3 extensions enhance the certificate's functionality, specifying Key Usage, Extended Key Usage, Subject Alternative Name, and other properties to fine-tune the certificate's application.
Key Usage identifies cryptographic applications of the public key, like digital signature or key encipherment.
Extended Key Usage further narrows down the certificate's use cases, e.g., for TLS server authentication.
Subject Alternative Name and Basic Constraint define additional host names covered by the certificate and whether it's a CA or end-entity certificate, respectively.
Identifiers like Subject Key Identifier and Authority Key Identifier ensure uniqueness and traceability of keys.
Authority Information Access and CRL Distribution Points provide paths to verify the issuing CA and check certificate revocation status.
CT Precertificate SCTs offer transparency logs, crucial for public trust in the certificate.
OCSP (RFC 2560) involves a client and a responder working together to check if a digital public-key certificate has been revoked, without needing to download the full CRL. This method is more efficient than the traditional CRL, which provides a list of revoked certificate serial numbers but requires downloading a potentially large file. CRLs can include up to 512 entries. More details are available here.
Certificate Transparency helps combat certificate-related threats by ensuring the issuance and existence of SSL certificates are visible to domain owners, CAs, and users. Its objectives are:
Preventing CAs from issuing SSL certificates for a domain without the domain owner's knowledge.
Establishing an open auditing system for tracking mistakenly or maliciously issued certificates.
Safeguarding users against fraudulent certificates.
Certificate logs are publicly auditable, append-only records of certificates, maintained by network services. These logs provide cryptographic proofs for auditing purposes. Both issuance authorities and the public can submit certificates to these logs or query them for verification. While the exact number of log servers is not fixed, it's expected to be less than a thousand globally. These servers can be independently managed by CAs, ISPs, or any interested entity.
To explore Certificate Transparency logs for any domain, visit https://crt.sh/.
Different formats exist for storing certificates, each with its own use cases and compatibility. This summary covers the main formats and provides guidance on converting between them.
Most widely used format for certificates.
Requires separate files for certificates and private keys, encoded in Base64 ASCII.
Common extensions: .cer, .crt, .pem, .key.
Primarily used by Apache and similar servers.
A binary format of certificates.
Lacks the "BEGIN/END CERTIFICATE" statements found in PEM files.
Common extensions: .cer, .der.
Often used with Java platforms.
Stored in Base64 ASCII, with extensions .p7b or .p7c.
Contains only certificates and chain certificates, excluding the private key.
Supported by Microsoft Windows and Java Tomcat.
A binary format that encapsulates server certificates, intermediate certificates, and private keys in one file.
Extensions: .pfx, .p12.
Mainly used on Windows for certificate import and export.
PEM conversions are essential for compatibility:
x509 to PEM
PEM to DER
DER to PEM
PEM to P7B
PKCS7 to PEM
PFX conversions are crucial for managing certificates on Windows:
PFX to PEM
PFX to PKCS#8 involves two steps:
Convert PFX to PEM
Convert PEM to PKCS8
P7B to PFX also requires two commands:
Convert P7B to CER
Convert CER and Private Key to PFX
ASN.1 (DER/PEM) editing (works with certificates or almost any other ASN.1 structure):
Clone asn1template
Convert DER/PEM to OpenSSL's generation format
Edit certificatename.tpl according to your requirements
Rebuild the modified certificate
Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)