📜 Certificats numériques et PKI
| Formation | BTS SIO option SISR — IRIS Mediaschool |
|---|---|
| Bloc | B3 — Cybersécurité des services informatiques |
| Module | M3.2 — Identité numérique et authentification |
| Durée | 3,5 heures |
| Prérequis | Notions de cryptographie (symétrique/asymétrique), protocole TLS |
🎯 Objectifs
- Comprendre les principes de la cryptographie asymétrique appliquée aux certificats
- Maîtriser la structure d'un certificat X.509
- Comprendre l'architecture d'une PKI (CA racine, CA intermédiaire, RA)
- Gérer le cycle de vie des certificats (émission, renouvellement, révocation)
- Déployer une PKI interne avec Windows Server (AD CS) ou OpenSSL
- Comprendre TLS/SSL et la chaîne de confiance
📖 Cryptographie asymétrique — rappel
La cryptographie asymétrique utilise une paire de clés mathématiquement liées :
- Clé publique : peut être distribuée librement, utilisée pour chiffrer ou vérifier une signature
- Clé privée : secrète, utilisée pour déchiffrer ou signer
Le problème fondamental : comment être sûr que la clé publique appartient bien à qui elle prétend ? → C'est là qu'intervient le certificat numérique.
📖 Le certificat X.509
Structure d'un certificat
Un certificat numérique (standard X.509 v3) est un fichier signé numériquement par une Autorité de Certification (CA) qui atteste qu'une clé publique appartient bien à une entité donnée :
| Champ | Description | Exemple |
|---|---|---|
| Version | Version X.509 | v3 |
| Serial Number | Numéro unique attribué par la CA | 0x4A2F... |
| Issuer | Identité de la CA émettrice | CN=IRIS-CA, O=IRIS, C=FR |
| Subject | Identité du titulaire | CN=www.iris.fr, O=IRIS Mediaschool |
| Validity | Période de validité (Not Before / Not After) | 2026-01-01 → 2027-01-01 |
| Public Key | Clé publique du titulaire | RSA 2048 bits ou EC P-256 |
| Extensions | SAN, Key Usage, Extended Key Usage, CDP, AIA… | DNS:www.iris.fr, IP:203.0.113.1 |
| Signature | Signature numérique de la CA | SHA-256 with RSA Encryption |
# Inspecter un certificat avec OpenSSL
openssl x509 -in certificat.crt -text -noout
# Exemple de sortie partielle :
# Subject: CN = www.iris.fr, O = IRIS Mediaschool, C = FR
# Validity
# Not Before: Jan 1 00:00:00 2026 GMT
# Not After : Jan 1 00:00:00 2027 GMT
# Subject Alternative Name:
# DNS:www.iris.fr, DNS:iris.fr, IP Address:203.0.113.1
# X509v3 Key Usage: Digital Signature, Key Encipherment
📖 Architecture PKI
Composants d'une PKI
- CA Racine (Root CA) : sommet de la chaîne de confiance, auto-signé, généralement hors ligne
- CA Intermédiaire (Issuing CA) : signée par la CA racine, émet les certificats utilisateurs/serveurs
- RA (Registration Authority) : vérifie l'identité des demandeurs avant soumission à la CA
- Dépôt de certificats : annuaire LDAP ou serveur HTTP publiant les certificats et LCR
- OCSP (Online Certificate Status Protocol) : vérification de révocation en temps réel
- LCR (Liste de Révocation de Certificats / CRL) : liste périodique des certificats révoqués
Chaîne de confiance
CA Racine IRIS (auto-signé, hors ligne)
└── CA Intermédiaire IRIS-Issuing (signée par Root CA)
├── Certificat serveur: www.iris.fr
├── Certificat serveur: vpn.iris.fr
└── Certificat utilisateur: jdupont@iris.fr
📖 Déploiement PKI — OpenSSL
# 1. Créer la CA Racine (à faire hors ligne)
openssl genrsa -aes256 -out ca-root.key 4096
openssl req -new -x509 -days 3650 -key ca-root.key -out ca-root.crt \
-subj "/CN=IRIS Root CA/O=IRIS Mediaschool/C=FR"
# 2. Créer la CA Intermédiaire
openssl genrsa -out ca-inter.key 4096
openssl req -new -key ca-inter.key -out ca-inter.csr \
-subj "/CN=IRIS Issuing CA/O=IRIS Mediaschool/C=FR"
# Signer avec la CA Racine
openssl x509 -req -days 1825 -in ca-inter.csr -CA ca-root.crt \
-CAkey ca-root.key -CAcreateserial -out ca-inter.crt \
-extensions v3_ca
# 3. Émettre un certificat serveur
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr \
-subj "/CN=www.iris.fr/O=IRIS Mediaschool/C=FR"
# Fichier d'extensions SAN
cat > san.ext <<EOF
[SAN]
subjectAltName=DNS:www.iris.fr,DNS:iris.fr
keyUsage=digitalSignature,keyEncipherment
extendedKeyUsage=serverAuth
EOF
# Signer avec la CA Intermédiaire
openssl x509 -req -days 365 -in server.csr -CA ca-inter.crt \
-CAkey ca-inter.key -CAcreateserial -out server.crt \
-extfile san.ext -extensions SAN
# 4. Vérifier la chaîne
openssl verify -CAfile ca-root.crt -untrusted ca-inter.crt server.crt
📖 Révocation de certificats
Pourquoi révoquer ?
Un certificat doit être révoqué lorsque sa clé privée est compromise, que le titulaire quitte l'organisation, ou que les informations du certificat sont incorrectes. La révocation doit être vérifiée avant d'utiliser un certificat.
CRL vs OCSP
| Mécanisme | Fonctionnement | Avantages | Inconvénients |
|---|---|---|---|
| CRL | Fichier téléchargé périodiquement listant les certificats révoqués | Simple, fonctionne hors ligne | Latence de mise à jour, taille croissante |
| OCSP | Requête en temps réel au serveur OCSP de la CA | Vérification instantanée | Dépendance réseau, vie privée (la CA sait quels certificats sont vérifiés) |
| OCSP Stapling | Le serveur TLS embarque la réponse OCSP signée dans la poignée de main TLS | Pas de requête du client vers la CA, performant | Le serveur doit renouveler régulièrement la réponse OCSP |
📖 PKI Windows — AD CS
Windows Server inclut les Active Directory Certificate Services (AD CS), permettant de déployer une PKI intégrée à l'AD :
# PowerShell — Installer AD CS
Install-WindowsFeature Adcs-Cert-Authority -IncludeManagementTools
# Configurer comme CA d'entreprise subordonnée
Install-AdcsCertificationAuthority `
-CAType EnterpriseSubordinateCa `
-CryptoProviderName "RSA#Microsoft Software Key Storage Provider" `
-KeyLength 2048 `
-HashAlgorithmName SHA256 `
-CACommonName "IRIS-Issuing-CA" `
-Force
# Émettre un certificat via le modèle "WebServer"
certreq -new -f request.inf request.csr
certreq -submit -config "srv-ca\IRIS-Issuing-CA" request.csr certificate.crt
🛠️ Outils / Ressources
- OpenSSL : outil incontournable pour gérer les certificats en ligne de commande
- AD CS (Windows Server) : PKI intégrée à Active Directory
- Let's Encrypt : CA publique gratuite, automatisation via ACME (certbot)
- HashiCorp Vault : gestion des secrets et PKI dynamique
- ssllabs.com : test de configuration TLS des serveurs web
- crt.sh : recherche dans la Certificate Transparency
📝 QCM — Testez vos connaissances
- Qu'est-ce qu'un certificat numérique X.509 et quel problème résout-il ?
- Pourquoi la CA Racine doit-elle être maintenue hors ligne ?
- Quelle est la différence entre CRL et OCSP ?
- Qu'est-ce que le SAN (Subject Alternative Name) dans un certificat ?
- Quelle est la différence entre une CA publique et une CA privée (interne) ?
- Qu'est-ce que l'OCSP Stapling et quel problème résout-il ?
📝 Afficher les corrections
- Un certificat numérique est un fichier signé par une CA attestant qu'une clé publique appartient à une entité. Il résout le problème de confiance : comment être sûr que la clé publique est authentique (et non substituée par un attaquant).
- Pour protéger la clé privée racine — Si la CA Racine est compromise, toute la PKI est compromise. La maintenir hors ligne (air-gap) dans un HSM protège la clé racine. Les CA intermédiaires gèrent le quotidien.
- CRL = liste téléchargée périodiquement des certificats révoqués (latence possible) ; OCSP = vérification en temps réel par une requête au serveur OCSP de la CA.
- Extension permettant de lister tous les noms de domaine et adresses IP couverts par le certificat (en plus du CN). Obligatoire dans les navigateurs modernes pour la validation du nom d'hôte.
- CA publique (ex : Let's Encrypt, DigiCert) : reconnue par les navigateurs et OS, utilisée pour les sites web publics. CA privée : interne à l'entreprise, doit être ajoutée manuellement aux stores de confiance, utilisée pour les services internes.
- Le serveur TLS embarque la réponse OCSP signée dans la poignée de main TLS, évitant au client d'interroger la CA (gain de performance, protection de la vie privée, pas de dépendance à la disponibilité du serveur OCSP).
