Décodeur X.509

Décoder les certificats X.509

Comprendre Les certificats X.509
TL;DR

Les certificats X.509 sont des documents numeriques qui lient une cle publique a une identite. Ils sont le fondement de TLS/SSL -- chaque connexion HTTPS les utilise.

Qu’est-ce que X.509 ?

X.509 est une norme internationale (ITU-T X.509, egalement publiee sous la RFC 5280) qui definit le format des certificats a cle publique. Un certificat X.509 est un document signe numeriquement qui lie une cle publique a une identite — comme un nom de domaine, une organisation ou un individu. Les certificats sont les ancres de confiance d’Internet : chaque connexion HTTPS, chaque application signee numeriquement et chaque email S/MIME repose sur des certificats X.509.

Lorsque vous visitez un site web en HTTPS, votre navigateur recoit le certificat X.509 du serveur, verifie qu’il a ete emis par une autorite de certification (AC) de confiance, verifie qu’il n’a pas expire ou n’a pas ete revoque, et confirme que le nom de domaine correspond. Ce n’est qu’apres que toutes ces verifications sont reussies que le navigateur etablit une connexion chiffree.

La norme X.509 a ete publiee pour la premiere fois en 1988 dans le cadre de la specification des services d’annuaire X.500. La version actuelle (v3) a introduit les extensions, qui permettent aux certificats de transporter des metadonnees supplementaires telles que les Subject Alternative Names, les contraintes d’utilisation de cle et les informations de revocation. Les certificats version 3 sont universellement utilises aujourd’hui.

Structure d’un certificat

Chaque certificat X.509 v3 contient les champs suivants, encodes au format ASN.1 DER et generalement distribues sous forme PEM (Base64 avec en-tetes) :

ChampDescriptionExemple
VersionVersion du certificat (presque toujours v3)v3
Numero de serieIdentifiant unique attribue par l’AC03:A1:F2:...
Algorithme de signatureAlgorithme utilise par l’AC pour signerSHA256withRSA
EmetteurDistinguished Name de l’AC signataireCN=Let's Encrypt Authority X3, O=Let's Encrypt
Validite (Pas avant)Debut de la periode de validite du certificat2024-01-15T00:00:00Z
Validite (Pas apres)Fin de la periode de validite du certificat2024-04-14T23:59:59Z
SujetDistinguished Name du titulaire du certificatCN=example.com
Cle publiqueLa cle publique du sujet et son algorithmeRSA 2048-bit
ExtensionsExtensions v3 optionnelles (voir tableau ci-dessous)SAN, Key Usage, etc.

Extensions courantes

Les extensions conferent aux certificats X.509 v3 leur flexibilite. Certaines sont marquees comme critiques (le certificat doit etre rejete si l’extension n’est pas comprise) et d’autres sont non critiques.

ExtensionOIDObjectif
Subject Alternative Name (SAN)2.5.29.17Liste les identites supplementaires (noms DNS, IP, emails) pour lesquelles le certificat est valide
Key Usage2.5.29.15Restreint les operations cryptographiques que la cle peut effectuer (ex. : digitalSignature, keyEncipherment)
Extended Key Usage (EKU)2.5.29.37Specifie les usages comme l’authentification serveur TLS, l’authentification client TLS ou la signature de code
Authority Key Identifier (AKI)2.5.29.35Identifie la cle publique de l’AC qui a signe ce certificat
CRL Distribution Points2.5.29.31URL ou la liste de revocation de certificats (CRL) peut etre telechargee
Authority Information Access (OCSP)1.3.6.1.5.5.7.1.1URL pour les verifications OCSP (Online Certificate Status Protocol) et la recuperation du certificat de l’AC emettrice

Chaine de confiance

Les certificats X.509 n’existent pas de maniere isolee. Ils forment une chaine de confiance (egalement appelee chaine de certification ou chemin de certification) depuis le certificat d’entite finale jusqu’a une autorite de certification racine de confiance.

X.509 Chain of Trust Three stacked certificates representing the chain of trust. The Root CA (self-signed, stored in OS/browser trust store) signs the Intermediate CA certificate, which in turn signs the Leaf certificate for the end-entity domain. Arrows indicate the signing relationship. Root CA Certificate Self-signed | Stored in OS/browser trust store Issuer = Subject (self-signed) signs Intermediate CA Certificate Issued by Root CA | Issues end-entity certs Issuer = Root CA, Subject = Intermediate CA signs Leaf (End-Entity) Certificate Your domain: example.com Issuer = Intermediate CA, Subject = example.com Trust direction

La chaine fonctionne comme suit :

  1. AC racine : Un certificat auto-signe pre-installe dans le magasin de confiance de votre systeme d’exploitation ou navigateur. Les AC racines sont les ancres de confiance ultimes — elles sont approuvees car elles ont ete evaluees et explicitement incluses par les editeurs d’OS et de navigateurs (Apple, Microsoft, Mozilla, Google)

  2. AC intermediaire : Un certificat signe par l’AC racine (ou un autre intermediaire). Les AC racines signent rarement les certificats d’entite finale directement. Elles delegent plutot a des intermediaires, ce qui limite l’exposition — si un intermediaire est compromis, seul cet intermediaire doit etre revoque, pas la racine

  3. Certificat feuille (entite finale) : Le certificat presente par le serveur (votre site web). Il est signe par une AC intermediaire et contient la cle publique du serveur et le(s) nom(s) de domaine

Lors d’une poignee de main TLS, le serveur envoie le certificat feuille et les intermediaires. Le client construit la chaine jusqu’a une racine de confiance et verifie chaque signature dans le chemin. Si un maillon est rompu — expire, revoque ou signe par une AC non approuvee — la connexion echoue.

Certificate Transparency

Certificate Transparency (CT) est un systeme de journaux publics, en ajout seul, qui enregistrent chaque certificat emis par les AC participantes. CT permet aux proprietaires de domaines et au public de detecter les certificats emis par erreur ou frauduleusement. Depuis 2018, Google Chrome exige que tous les certificats de confiance publique soient enregistres dans au moins deux journaux CT.

Cas d’utilisation courants

  • HTTPS / TLS : Chaque site web securise utilise un certificat X.509 pour prouver son identite et permettre la communication chiffree. Le navigateur verifie la chaine de certificats avant d’etablir la connexion TLS
  • Signature de code : Les developpeurs de logiciels signent les executables, pilotes et paquets avec des certificats X.509 afin que les systemes d’exploitation et les utilisateurs puissent verifier que le code n’a pas ete altere et provient d’un editeur connu
  • Signature et chiffrement d’emails (S/MIME) : Les certificats X.509 permettent le chiffrement de bout en bout des emails et les signatures numeriques, prouvant l’identite de l’expediteur et garantissant l’integrite du message
  • TLS mutuel (mTLS) : Dans les architectures zero-trust, le client et le serveur presentent tous deux des certificats pour s’authentifier mutuellement. C’est courant dans la communication service-a-service au sein des architectures microservices
  • Authentification VPN : Les VPN d’entreprise utilisent des certificats X.509 pour l’authentification des clients, en remplacement ou en complement de l’authentification par nom d’utilisateur/mot de passe
  • Signature de documents : Les signatures numeriques PDF utilisent des certificats X.509 pour fournir la non-repudiation — la preuve que le signataire a signe le document et qu’il n’a pas ete modifie
  • Identite des appareils IoT : Les appareils connectes utilisent des certificats X.509 pour s’authentifier aupres des plateformes cloud (AWS IoT, Azure IoT Hub), garantissant que seuls les appareils autorises peuvent se connecter

Essayez ces exemples

Certificat PEM valide Valide

Un certificat X.509 encode en PEM, encadre par les marqueurs BEGIN/END. Le contenu Base64 entre les marqueurs encode la structure DER (binaire) du certificat contenant le sujet, l'emetteur, la cle publique, la periode de validite et les extensions.

-----BEGIN CERTIFICATE----- MIIBkTCB+wIUEjRW...base64...== -----END CERTIFICATE-----
Certificat expire Invalide

Un certificat PEM structurellement valide dont la date notAfter est depassee. Le decodeur analysera le certificat mais le signalera comme expire. Les navigateurs et clients TLS rejettent les certificats expires pour empecher l'utilisation de cles potentiellement compromises.

-----BEGIN CERTIFICATE----- MIIC...expired...== -----END CERTIFICATE-----