Aller au contenu

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
  • 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
  • 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