Aller au contenu

Certificats et mise en œuvre des clés PKCS12#


Introduction aux certificats et au format PKCS12#


PKCS12 : vue d'ensemble#

  • Format de fichier pour stocker clés privées et certificats
  • Protection des clés privées avec un mot de passe

Certificats numériques#

  • Objectif: documents numériques pour prouver l'identité et la clé publique d'une entité
  • Composants : clé publique, identité, informations de l'émetteur (CA), période de validité
  • Utilisation : authentification, chiffrement, signature numérique
  • Format standard : X.509
  • Exemple de visualisation d'un certificat avec OpenSSL : openssl x509 -in certificate.pem -text -noout

PKCS12#

  • PKCS12 : Personal Information Exchange Syntax Standard
  • Format binaire pour stocker clés privées et certificats
  • Chiffrement des clés privées avec un mot de passe pour la protection
  • Prise en charge de plusieurs certificats et clés dans un seul fichier
  • Utilisation courante : importation et exportation de clés et de certificats entre outils et serveurs
  • Exemple de visualisation d'un fichier PKCS12 avec OpenSSL : openssl pkcs12 -info -in keystore.p12

📘 https://fr.wikipedia.org/wiki/PKCS12


Protection des clés privées#

  • Importance : éviter l'accès non autorisé et les compromissions de sécurité
  • Utilisation de mots de passe pour protéger les clés privées
  • Méthodes de chiffrement pour PKCS12 : Triple-DES, AES
  • Exemple de chiffrement d'une clé privée RSA avec OpenSSL : openssl rsa -in privatekey.pem -out encrypted_key.pem -aes256

Interopérabilité#

  • PKCS12 largement supporté par les serveurs web, outils de sécurité et bibliothèques
  • Exemples : Apache, Nginx, OpenSSL, Java KeyStore, Microsoft IIS, GnuTLS
  • Convertir entre différents formats (par exemple, PEM vers PKCS12) avec OpenSSL : * openssl pkcs12 -export -in certificate.pem -inkey privatekey.pem -out keystore.p12

Création d'un certificat et d'une paire de clés#


Objectifs et enjeux#

  • Générer des clés cryptographiques et des certificats pour sécuriser les communications
  • Enjeux : assurer l'authentification, la confidentialité et l'intégrité des données échangées par cette clef

Utilisation d'OpenSSL pour générer une paire de clés RSA ou EC#

On veut:

  • créer une paire de clés pour sécuriser les communications
  • choisir un algorithme de clé adapté aux besoins de sécurité et de performance
  • openssl genrsa -out privatekey.pem 2048
  • openssl ecparam -name prime256v1 -genkey -out eckey.pem

Création d'une demande de certificat (CSR) avec OpenSSL#

On veut:

  • Générer une requête pour obtenir un certificat signé par une autorité de certification (CA)
  • Fournir les informations d'identification nécessaires pour le certificat
  • openssl req -new -key privatekey.pem -out csr.pem
    • Remplir les champs requis (pays, état, organisation, etc.)

Signature du certificat par une autorité de certification (CA) ou auto-signature#

  • Obtenir un certificat signé pour prouver l'identité et associer la clé publique à une entité
  • Choisir entre un certificat signé par une CA reconnue ou un certificat auto-signé en fonction des besoins
  • Exemple :
    • Pour cert signé par une CA tierce : envoyer le fichier CSR à une CA et recevoir un certificat signé
    • Pour cert auto-signat é: openssl x509 -req -in csr.pem -signkey privatekey.pem -out certificate.pem

Manipulation des fichiers PKCS12#


Exportation et importation de clés et de certificats au format PKCS12#

  • Création d'un fichier PKCS12 à partir d'une clé privée et d'un certificat avec OpenSSL
    • openssl pkcs12 -export -inkey privatekey.pem -in certificate.pem -out keystore.p12
  • Importation d'un fichier PKCS12 dans un autre outil ou un serveur
    • openssl pkcs12 -in keystore.p12 -out output.pem -nodes

Utilisation des clés et certificats PKCS12 avec OpenSSL et autres outils#

  • Configuration d'un serveur pour utiliser un fichier PKCS12 (par exemple, Apache ou Nginx)
    • Apache : SSLCertificateFile "/path/to/certificate.pem", SSLCertificateKeyFile "/path/to/privatekey.pem"
    • Nginx : ssl_certificate "/path/to/certificate.pem";, ssl_certificate_key "/path/to/privatekey.pem";
  • Vérification d'un fichier PKCS12 avec OpenSSL
    • openssl pkcs12 -info -in keystore.p12
  • Extraction d'un certificat ou d'une clé privée à partir d'un fichier PKCS12
    • openssl pkcs12 -in keystore.p12 -clcerts -nokeys -out cert.pem
    • openssl pkcs12 -in keystore.p12 -nocerts -out key.pem