Certificats OpenSSL
Format de fichiers
Définitions
- PEM
- Ce fichier peut contenir des clés privées et publiques (RSA et DSA) ainsi que des certificats (x509). C'est le format de fichier par défaut pour OpenSSL. Les données sont stockées au format DER encodé en Base64, entourées de balises au format ASCII.
- DER
- Ce fichier peut contenir des clés privés et publiques (RSA et DSA) ainsi que des certificats (x509). Les données sont stockées au format ASN1 DER, sans être entouré de balises ASCII. Ce format est le format par défaut pour la plupart des navigateurs web. NOTE: Le fichier PEM est un fichier DER encodé en ASCII, entouré des balises de marquage.
- PKCS#12
- Egalement appelé fichier PFX. Ce fichier peut contenir des clés privées et publiques (RSA et DSA) ainsi que des certificats. Les données sont stockées dans un format binaire.
Conversion de format
Les commandes openssl permettent de convertir les fichiers d'un format à un autre. Exemples:
openssl pkcs12 -export -in fichier.PEM -out fichier.PKCS12 openssl pkcs12 -in fichier.PKCS12 -out fichier.PEM openssl dsa -inform PEM -outform DER -in fichier.PEM -out fichier.DER openssl rsa -inform DER -outform PEM -in fichier.DER -out fichier.PEM
Plusieurs certificats dans un seul fichier
Il est possible de stocker plusieurs certificats dans un seul fichier. La plupart du temps OpenSSL n'utilisera que le premier certificat trouvé dans un fichier, il faut donc vérifier que chaque fichier ne contient qu'un seul certificat. Cela peut se vérifier en inspectant les balises entourant chaque certificat si le fichier est au format PEM.
Le seul cas où vous pourriez souhaiter inclure plusieurs certificats dans un seul fichier, c'est lorsqu'il est nécessaire de créer une liste de tous les certificats, ou toutes les Certificate Authority auxquels vous faites confiance.
Creation de la Certificate Authority
Configuration des fichiers
/etc/ssl/openssl.cnf
Création du certificat maître
openssl req -nodes -new -x509 -days 3650 -keyout ca-cert.key -out ca-cert.crt chmod 600 ca-cert.key mv ca-cert.key /<path to CA>/private mv ca-cert.crt /<path to CA>/certs
Creation de Certificat
Etape 1 - Génération de la demande de certificat
Il faut tout d'abord générer une demande de certificat. La clé privée est générée dans la même étape, et sera stockée dans le fichier .key qu'il faut protéger de manière adéquate.
openssl req -nodes -new -keyout server-cert.key -out server-cert.csr chmod 600 server-cert.key mv server-cert.key /<path to CA>/private
Etape 2 - Signature du certificat
Ensuite, il faut demander à la Certificate Authority de signer la demande de certificat générée à l'étape 1. Après la signature, le fichier .crt sera disponible et peut être utilisé comme certificat de serveur.
openssl ca -out server-cert.crt -in server-crt.csr
Etape 3 - Organisation des fichiers
Tous les fichiers de demande de certificats (CSR) peuvent être supprimés puisqu'ils ne sont utilisés que de manière temporaire jusqu'à ce que le certificat final soit délivré.
Vérifier les certificats
Recevoir le certificat d'un serveur SSL
Il est possible de récupérer le certificat d'un serveur SSL (serveur IMAPS, serveur Web, ...) en ligne de commande. Il suffit d'utiliser une commande comme celle qui suit pour afficher le certificat utilisé par le serveur:
openssl s_client -showcerts -connect <serveur>:<port_ssl>
Vérifier les paramètres d'un certificat
Si vous disposez du fichier PEM du certificat, il est possible d'afficher en clair tous ses paramètres. Cette commande s'applique à n'importe quel type de certificat, qu'il s'agisse de celui de la Certificate Authority ou alors de celui d'un serveur ou encore d'un utilisateur.
openssl x509 -text -in server-cert.crt