Retour au blog

L'essentiel d'OpenSSL : travailler avec les clés privées, les demandes de signature de certificat et les certificats SSL

L'essentiel d'OpenSSL : travailler avec les clés privées, les demandes de signature de certificat et les certificats SSL

OpenSSL est une bibliothèque de cryptographie open-source qui comprend une variété de commandes utilisées dans le protocole TLS et la Infrastructure à clés publiques. OpenSSL a été publié en 1998 et est disponible pour les systèmes Windows, Linux, macOS et BSD. La commande OpenSSL vous aidera à effectuer diverses tâches, notamment la demande de signature de certificat (CSR), la génération de clés privées et la certification SSL.

OpenSSL est important car il garantit une mise en œuvre correcte de SSL. Obtenir SSL de la bonne manière est crucial pour la sécurité de votre site Web. De plus, Google, qui est un moteur de recherche de premier plan, donne la priorité aux sites Web sur lesquels des certificats SSL sont implémentés. Certains navigateurs comme Chrome et Firefox peuvent marquer votre site Web comme Non sécurisé si vous ne disposez pas d'un certificat SSL approprié. Ainsi, il est primordial de diffuser le trafic de votre site Web via le protocole chiffré HTTPS.

Avant toute chose

Ce tutoriel est un guide de type pense-bête, incluant certaines mais probablement pas toutes les commandes OpenSSL que vous pourriez utiliser dans des scénarios quotidiens.

La première partie explique tout ce que vous devez savoir sur les demandes de signature de certificat (CSR). Cependant, si vous les connaissez déjà, vous pouvez passer à toute autre section correspondant à ce que vous essayez de réaliser. Chaque section contient un extrait de ligne de commande pour accomplir ce que le sous-titre indique.

Commençons !

Section 1 : Comprendre les demandes de signature de certificat (CSR)

Une demande de signature de certificat est un prérequis lors de l'obtention d'un certificat SSL auprès d'une autorité de certification (CA). La CSR comprend la clé publique d'une paire de clés et quelques informations supplémentaires. Vous devez les insérer dans le certificat lors du processus de signature.

Lors de la génération de la CSR, vous êtes invité à fournir des informations d'identification appelées Distinguished Name (DN). Le DN contient des champs nécessaires au certificat tels que le Common Name (CN), qui est le nom de domaine complet (FQDN) exact de l'hôte qui utilisera le certificat. Les autres champs du DN concernent des informations supplémentaires telles que le pays, l'État, le nom de la localité et le nom de l'organisation ou de l'entreprise si vous générez des certificats spécifiques à votre entreprise. Vous pouvez choisir d'ignorer les invites en fournissant les informations à partir d'un fichier ou via la ligne de commande.

Jetez un œil à un exemple d'invite d'informations CSR dans la capture d'écran ci-dessous :

Vous pouvez fournir les informations dans une commande sur une seule ligne pour éviter les invites en ajoutant l'option -subj comme indiqué ci-dessous, et en fournissant les informations pour les champs :

La commande ci-dessus prend les mêmes informations affichées dans l'exemple de bloc de code des invites d'informations CSR.

Section 2 : Génération de demandes de signature de certificat

Dans cette section, nous aborderons les commandes OpenSSL que vous pouvez utiliser pour générer des CSR et des clés privées. Les CSR sont nécessaires pour demander des certificats SSL auprès d'une autorité de certification (CA).

Générer une clé privée et une demande de signature de certificat

Vous pouvez utiliser cette méthode si vous souhaitez qu'une autorité de certification émette un certificat SSL pour sécuriser votre Apache ou Nginx serveur pour acheminer le trafic via HTTPS, c'est-à-dire HTTP avec TLS. Le CSR généré avec la commande peut être envoyé à une AC pour demander un certificat SSL signé par une AC. Vous pouvez suivre nos guides détaillés sur la configuration de vos Apache ou Nginx serveurs sur Ubuntu.

Saisissez la commande suivante dans votre terminal pour générer une clé privée de 2048 bits (domain.key) et un CSR (domain.csr) à partir de zéro :

Répondez aux invites avec vos informations de CSR spécifiques. En option, vous pouvez ajouter le drapeau -subj à la commande pour éviter les invites :

Le -newkey rsa:2048 drapeau spécifie que la clé doit être générée à l'aide de l'algorithme RSA de 2048 bits. Le -nodes drapeau indique qu'il n'y a pas de chiffrement par phrase de passe pour la clé privée. Il y a une -new option non incluse mais implicite pour indiquer qu'un nouveau CSR est généré.

Génération d'une demande de signature de certificat (CSR) à partir d'une clé privée existante

Si vous disposez déjà d'une clé privée, vous pouvez utiliser cette méthode pour générer un CSR. Vous l'utiliserez ensuite pour demander un certificat SSL auprès d'une AC. Saisissez la commande suivante pour générer un nouveau CSR (domain.csr) en utilisant une clé privée existante (domain.key):

Répondez aux invites avec vos informations de CSR spécifiques. En option, vous pouvez ajouter le drapeau -subj à la commande pour éviter les invites :

Le drapeau -key spécifie la clé privée existante (domain.key) à utiliser pour générer un nouveau CSR. Le -new drapeau indique qu'un nouveau CSR est en cours de génération.

Génération d'une demande de signature de certificat (CSR) à partir d'un certificat et d'une clé privée existants

Si vous disposez déjà d'un certificat existant que vous souhaitez utiliser pour générer un CSR, vous pouvez utiliser cette méthode. Cette méthode peut être utile si vous ou votre AC perdez le CSR d'origine et que vous devez le générer à l'aide des informations de CSR précédemment saisies sans avoir à les saisir à nouveau. La commande extrait les informations du certificat existant. Saisissez la commande suivante dans votre terminal pour créer un nouveau CSR (domain.csr) en utilisant un certificat existant (domain.crt) et une clé privée existante (domain.key):

L'option -x509toreq indique que vous utilisez le certificat X509 pour générer le CSR.

Section 3 : Génération de certificats SSL

Dans certaines situations, vous pouvez souhaiter utiliser un certificat SSL sans avoir à obtenir un certificat signé par une AC. Cette section explique comment vous pouvez signer vos propres certificats. C'est valide et gratuit. Ces certificats sont appelés certificats auto-signés, et ils sont assez courants.

Un certificat auto-signé est signé avec sa propre clé privée. Les certificats auto-signés et signés par une AC fonctionnent tout aussi bien pour chiffrer les données et le trafic du site web. Cependant, avec les certificats auto-signés, les utilisateurs reçoivent généralement un avertissement dans leur navigateur indiquant que le certificat n'est pas approuvé. Ainsi, vous pouvez utiliser des certificats auto-signés pour des sites web qui n'échangent pas d'informations sensibles avec les utilisateurs, ou sur des serveurs hors production. Ci-dessous, vous trouverez les commandes OpenSSL que vous pouvez utiliser pour générer des certificats auto-signés.

  • Génération d'un certificat auto-signé

Vous pouvez utiliser cette méthode pour générer un certificat SSL afin de sécuriser votre serveur Apache ou Nginx. Cela garantira que le trafic utilise HTTPS, ou HTTP sur TLS, sans passer par une AC pour signer le certificat :

Répondez aux invites avec vos informations CSR spécifiques. En option, vous pouvez ajouter l'option -subj à la commande pour éviter les invites :

L'option -x509 indique la création d'un certificat auto-signé. L'option -days 365 spécifie le nombre de jours pendant lesquels le certificat sera valide. Dans ce cas, il s'agit de 365 jours. Vous pouvez également choisir un nombre de jours différent. La commande génère un CSR temporaire pour contenir les informations que vous devez associer au certificat.

  • Générer un certificat auto-signé à partir d'une clé privée existante

Cette méthode vous aidera à générer un certificat auto-signé à partir de votre clé privée existante. Entrez la commande suivante pour générer un certificat auto-signé (domain.crt) en utilisant une clé privée existante (domain.key):

Fournissez aux invites vos informations CSR spécifiques. En option, vous pouvez ajouter l'option -subj à la commande pour éviter les invites :

L'option -x509 indique la création d'un certificat auto-signé. L'option -days 365 spécifie le nombre de jours pendant lesquels le certificat sera valide. Dans ce cas, il s'agit de 365 jours. Vous pouvez également choisir un nombre de jours différent. L'option -new lance l'invite d'informations CSR.

Section 4 : Visualisation des certificats

Les certificats et les fichiers CSR sont encodés et stockés avec l'extension .pem. Elle signifie Privacy-Enhanced Mail. Il s'agit d'un format de fichier pour stocker et envoyer des clés cryptographiques, des certificats et d'autres données cruciales. Les fichiers PEM ne sont pas facilement lisibles par les humains. Dans cette section, vous trouverez des commandes que vous pouvez utiliser pour afficher les entrées des fichiers PEM encodés.

  • Visualisation des fichiers CSR

Entrez la commande suivante pour afficher et vérifier le contenu d'un CSR (domain.csr) sur votre terminal :

Par exemple, la commande ci-dessus peut afficher quelque chose comme ceci :

Viewing CSR files

  • Visualisation des entrées de certificat

Entrez la commande suivante pour afficher le contenu d'un certificat (domain.crt):

La commande ci-dessus peut afficher quelque chose comme ceci :

OpenSSL

  • Vérifier qu'un certificat a été signé par une autorité de certification

Pour vérifier si un certificat (domain.crt) a été signé par un certain certificat d'AC (ca.crt), entrez la commande suivante :

 

Section 5 : Clés privées

Si vous recherchez les commandes OpenSSL nécessaires pour créer et vérifier des clés privées, cette section est pour vous.

  • Création d'une clé privée

Pour créer une clé privée de 2048 bits protégée par mot de passe (domain.key), entrez la commande suivante dans votre terminal :

La commande vous demandera un mot de passe pour terminer le processus. Voir la capture d'écran ci-dessous :

Creating a Private Key

  • Vérification d'une clé privée

Pour vérifier la validité d'une clé privée (domain.key), entrez la commande suivante dans votre terminal :

Ensuite, vous devrez fournir un mot de passe. Si la clé privée est chiffrée et que vous saisissez la bonne phrase de passe, la clé non chiffrée s'affichera sur le terminal. Voir la capture d'écran ci-dessous :

Verifying a Private Key

  • Vérifier qu'une clé privée correspond à un certificat et à une CSR

Si vous souhaitez vérifier si une clé privée (domain.key) correspond à un certificat (domain.crt) et à une CSR (domain.csr), saisissez les commandes suivantes dans votre terminal :

Si vous constatez que la sortie des commandes ci-dessus est identique, il est alors possible que la clé privée, le certificat et la CSR soient liés.

  • Chiffrer une clé privée

Si vous disposez d'une clé privée non chiffrée (unencrypted.key) et que vous souhaitez obtenir la version chiffrée de la clé (encrypted.key), saisissez la commande suivante dans votre terminal :

La commande vous demandera une phrase de passe pour chiffrer la clé privée.

  • Déchiffrer une clé privée

Si vous disposez d'une clé privée chiffrée (encrypted.key) et que vous souhaitez en obtenir la version déchiffrée (decrypted.key), saisissez la commande suivante dans votre terminal :

La commande vous demandera la phrase de passe de la clé chiffrée. Si vous saisissez la bonne phrase de passe, elle sera déchiffrée. Le résultat sera enregistré dans decrypted.key.

 

Section 6 : Conversion des formats de certificat

Vous avez peut-être remarqué que jusqu'à présent, nous avons travaillé avec des X.509 certificats encodés en ASCII PEM. Bien que cela convienne, il existe une variété d'autres types d'encodage et de conteneurs de certificats que vous pouvez utiliser. Dans certaines applications, vous préférerez peut-être utiliser certains formats plutôt que d'autres. De plus, certains formats différents peuvent contenir plusieurs éléments tels qu'une clé privée, une CSR et un certificat signé par une AC dans un seul fichier. Vous pouvez également utiliser OpenSSL pour effectuer des conversions entre différents formats de certificats. Poursuivez votre lecture pour découvrir certaines des commandes OpenSSL permettant de convertir les formats de certificats.

  • Conversion de PEM en DER

DER (Distinguished Encoding Rules) est un encodage binaire pour les X.509 certificats et clés privées. Pour convertir un certificat encodé en PEM (domain.crt) en un certificat encodé en DER (domain.der), saisissez la commande suivante :

Vous trouverez la plupart des cas d'utilisation du format d'encodage DER dans le langage de programmation Java. Suivez ce tutoriel pour une configuration rapide de Java sur votre serveur Ubuntu.

  • Conversion de DER en PEM

Pour convertir un certificat encodé en DER (domain.der) en un certificat PEM (domain.crt), saisissez la commande suivante :

 

  • Conversion de PEM en PKCS7

Vous pouvez ajouter des certificats PEM, par exemple, domain.crt et ca-chain.crt à un fichier PKCS7 (domain.p7b), voici la commande pour y parvenir :

Vous pouvez utiliser l'option -certfile plusieurs fois pour spécifier les certificats à ajouter au fichier PKCS7. Les fichiers PKCS7 sont principalement pertinents pour les keystores Java et Microsoft IIS. Également connus sous le nom de fichiers P7B, ce sont des fichiers ASCII qui peuvent comprendre des certificats et des certificats signés par une AC.

  • Convertir PKCS7 en PEM

Pour convertir un fichier PKCS7 (domain.p7b) en un fichier encodé en PEM (domain.crt), saisissez la commande suivante dans votre terminal :

 

  • Conversion de PEM en PKCS12

Pour combiner une clé privée (domain.key) et un certificat (domain.crt) en un PKCS12 fichier (domain.pfx), saisissez la commande suivante :

La commande vous invitera à saisir les mots de passe d'exportation, que vous pouvez éventuellement laisser vides. Vous pouvez enchaîner plusieurs certificats au fichier PKCS12 en concaténant les certificats dans un seul fichier PEM (domain.crt). PKCS12 est également connu sous le nom de PFX et est principalement utilisé dans Microsoft IIS.

  • Convertir PKCS12 en PEM

Pour convertir un fichier PKCS12 (domain.pfx) en un format encodé PEM (domain.combined.crt), saisissez la commande suivante :

Le fichier PEM créé par la commande ci-dessus contient tous les éléments multiples que le PKCS12 contenait.

Section 7 : Vérification de la version d'OpenSSL

La version de tout logiciel que vous utilisez peut affecter les capacités des applications que vous exécutez. Par conséquent, il est nécessaire de vérifier la version. Il en va de même pour OpenSSL. Certaines options de ligne de commande peuvent être absentes dans une version et disponibles dans une autre. Pour afficher la version d'OpenSSL que vous utilisez, saisissez la commande suivante :

Voici le résultat que nous avons obtenu en exécutant la commande ci-dessus lors de la création de ce tutoriel :

Ci-dessous, vous trouverez la capture d'écran réelle :

OpenSSL

Conclusion

Dans ce tutoriel, nous avons expliqué ce qu'est OpenSSL, abordé les demandes de signature de certificat (CSR) et certaines des commandes OpenSSL cruciales que vous pouvez utiliser dans l'environnement de votre serveur.

Avons-nous oublié une commande cruciale ou rencontrez-vous des problèmes avec l'une des commandes de la configuration de votre serveur sur CloudSigma? N'hésitez pas à contacter notre équipe d'assistance clientèle 24h/24 et 7j/7 sur le chat en temps réel pour en discuter.

Bonne informatique !

author

Manpreet Singh

Auteur · CloudSigma

Preslav Dobrev est un designer créatif chez CloudSigma, axé sur une identité commerciale cohérente à travers des canaux marketing traditionnels et innovants. Il excelle à fusionner la vision artistique avec le marketing stratégique pour créer des récits de marque percutants.

Commentaires

Aucun commentaire pour l'instant. Soyez le premier.