Profils de certificats pour TLS#
Rôles des certificats dans TLS#
Enjeux : l'identité des parties#
- Établir l'identité du serveur et du client
- Les certificats contiennent des informations d'identité telles que le nom de l'organisation et le nom de domaine
- Exemple :
CN=www.example.com, O=Example Company, C=US
- Fournir la clé publique pour échanger les clés de chiffrement
- Les certificats incluent la clé publique utilisée pour établir une connexion sécurisée
- Lors de la phase d'échange des clés, les clés de chiffrement sont échangées en utilisant la clé publique du certificat
Enjeux : l'identité des parties
- Authentifier l'émetteur du certificat (autorité de certification)
- Les certificats sont signés numériquement par l'autorité de certification (CA)
- La signature permet de vérifier que le certificat n'a pas été falsifié et provient d'une source fiable
- Exemple de commande pour vérifier la signature :
openssl x509 -in certificat.pem -text -noout
- Assurer la confiance entre les parties en présence
- Les certificats servent de lien de confiance entre le client et le serveur
- Le client vérifie le certificat du serveur pour s'assurer qu'il communique avec le bon serveur
- Exemple de commande pour vérifier la chaîne de confiance :
openssl verify -CAfile ca.pem certificat.pem
Les différents profils de certificats (serveur, client, autorité de certification)#
Certificat serveur#
- Role : authentifie le serveur auprès des clients
- Domaine et informations d'organisation
- Clé publique pour échange de clés
- Extensions et contraintes spécifiques (Key Usage, Extended Key Usage, etc.)
- Key Usage :
digitalSignature
,keyEncipherment
- Extended Key Usage :
serverAuth
- Key Usage :
- Exemple de commande OpenSSL pour générer un certificat serveur :
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca.key -set_serial 01 -out server.crt -extensions v3_req -extfile extfile.cnf
Certificat client#
- Role : authentifie le client auprès du serveur (optionnel)
- Informations d'identité du client
- Clé publique pour échange de clés
- Extensions et contraintes spécifiques (Key Usage, Extended Key Usage, etc.)
- Key Usage :
digitalSignature
,keyEncipherment
- Extended Key Usage :
clientAuth
- Key Usage :
- Exemple de commande OpenSSL pour générer un certificat client :
openssl req -new -newkey rsa:2048 -nodes -keyout client.key -out client.csr
openssl x509 -req -days 365 -in client.csr -CA ca.pem -CAkey ca.key -set_serial 02 -out client.crt -extensions v3_req -extfile extfile.cnf
Autorité de certification (CA)#
- Role : émet les certificats et garantit leur validité
- Signature numérique de la CA sur les certificats émis
- Gestion de la liste des certificats révoqués (CRL) ou du protocole OCSP
-
Exemple de commande OpenSSL pour créer une autorité de certification :
openssl genrsa -out ca.key 2048
openssl req -new -x509 -days 3650 -key ca.key -out ca.pem
Contraintes et extensions des profils de certificats pour TLS#
Contraintes d'utilisation de la clé (KeyUsage)#
- Role : détermine les actions autorisées avec la clé
- signature numérique : digitalSignature
- chiffrement de clé : keyEncipherment
- signature de certificat : keyCertSign
- Commande OpenSSL pour créer une clé avec KeyUsage spécifique :
openssl req -new -keyusage "digitalSignature,keyEncipherment" -key clé_privee.pem -out certificat.csr
Extension "Extended Key Usage" (EKU)#
- Role : précise les cas d'utilisation spécifiques
- Exemples :
- serveur authentifié SSL/TLS (serverAuth)
- client authentifié SSL/TLS (clientAuth)
- signature de code (codeSigning)
- Commande OpenSSL pour créer un certificat avec EKU spécifique :
openssl req -new -extfile <(echo "extendedKeyUsage = serverAuth,clientAuth") -key clé_privee.pem -out certificat.csr
Contraintes d'identité (Subject Alternative Name)#
- Role : liste des IP et domaines couverts par le certificat
- Permet de sécuriser plusieurs noms de domaine et adresses IP avec un seul certificat
- Commande OpenSSL pour afficher les contraintes et extensions :
openssl x509 -in certificat.pem -text -noout
- Exemple de configuration SAN dans un fichier de configuration OpenSSL :
[ req ]
...
req_extensions = v3_req
sql
[ v3_req ]
...
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = example.com
DNS.2 = www.example.com
IP.1 = 192.168.1.1
Vérification de la conformité d'un certificat avec un profil TLS spécifique#
Chaîne de confiance#
- Vérification de l'authenticité et de la validité du certificat en remontant jusqu'à l'autorité de certification racine
- Commande OpenSSL : openssl verify -CAfile ca.pem certificat.pem
- Exemple : vérification de la chaîne de confiance d'un certificat SSL/TLS pour un serveur
Révocation avec CRL (Liste de révocation des certificats)#
- Permet de s'assurer qu'un certificat n'a pas été révoqué par l'autorité de certification
- Commande OpenSSL :
openssl crl -inform PEM -text -in crl.pem
- Exemple : vérification de la révocation d'un certificat SSL/TLS pour un client en utilisant une liste de révocation des certificats fournie par l'autorité de certification
Révocation avec OCSP (Online Certificate Status Protocol)#
- Protocole en ligne pour vérifier l'état de révocation d'un certificat en temps réel
- Commande OpenSSL : openssl ocsp -issuer ca.pem -cert certificat.pem -url http://ocsp.example.com
- Exemple : vérification de la révocation d'un certificat SSL/TLS pour un client en utilisant un serveur OCSP de l'autorité de certification
Validation des exigences du profil TLS#
- Vérifier si le certificat respecte les contraintes d'utilisation de clé (KeyUsage) et les extensions de clé étendues (EKU) pour un profil TLS spécifique
- Exemple : vérifier que le certificat serveur permet la signature numérique et le chiffrement de clé, et qu'il possède l'extension EKU pour le serveur authentifié SSL/TLS