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";
- Apache :
- 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