Aller au contenu

Comment trouver la clé privée de mon certificat SSL ?

Si vous venez de recevoir un certificat SSL émis et que vous avez du mal à trouver la clé privée correspondante, cet article peut vous aider à retrouver la seule et unique clé de votre certificat.

Commençons par quelques notions de base. L’infrastructure à clés publiques mondiale, sur laquelle reposent les échanges sécurisés modernes via SSL/TLS, implique qu’il existe toujours une paire de clés uniques -

La clé publique est intégrée au certificat SSL, tandis que la clé privée est stockée sur le serveur et gardée secrète. Lorsqu’un visiteur remplit un formulaire avec des informations personnelles et l’envoie au serveur, ces informations sont chiffrées avec la clé publique pour les protéger contre l’interception. Sur le serveur, elles sont déchiffrées grâce à la clé privée, puis transmises pour être traitées. Pour garantir que personne d’autre ne puisse déchiffrer le message transmis, il faut utiliser une paire de clés unique et infalsifiable. En résumé, une clé sans l’autre ne sert à rien.

La clé privée est générée en même temps que la CSR (demande de signature de certificat), qui contient le nom de domaine, la clé publique et des coordonnées supplémentaires. La CSR doit être envoyée à l’autorité de certification pour validation et signature immédiatement après l’activation du certificat dans l’espace client Ruachost. La clé privée doit rester secrète, idéalement sur le serveur même où le certificat sera installé.

Puis-je générer une nouvelle clé privée pour mon certificat SSL ?

Section intitulée « Puis-je générer une nouvelle clé privée pour mon certificat SSL ? »

Une clé publique accompagnée d’informations supplémentaires (nom de domaine et coordonnées administratives) doit être signée par une autorité de certification de confiance pour être valable et légitime dans la sécurisation des échanges avec votre serveur. Il n’aurait donc guère de sens de pouvoir simplement créer une nouvelle clé privée pour une clé publique déjà validée. D’autre part, nous devons être certains que personne ne puisse créer une clé privée correspondante à partir d’une clé publique. C’est pourquoi les systèmes cryptographiques modernes rendent une telle opération pratiquement impossible.

Une clé privée est un bloc de données encodé, généralement quelques dizaines de lignes de caractères d’apparence aléatoire, encadré par des en-têtes semblables à ceux-ci : —–BEGIN RSA PRIVATE KEY—– et —–END RSA PRIVATE KEY—–

Toutefois, dans la plupart des cas, vous ne verrez pas ce code lors de la génération de la CSR. Il est généralement créé en arrière-plan et enregistré discrètement dans le système de fichiers du serveur. Et, bien sûr, lors de l’installation du certificat SSL, la clé devrait être associée automatiquement au certificat. Cependant, certains systèmes ne fonctionnent pas ainsi, ou il arrive que l’on doive installer le certificat sur un autre serveur. Ce sont des exemples de cas où il faut vraiment connaître l’emplacement exact de la clé privée.

Cela dépend du système d’exploitation du serveur et de l’outil utilisé pour générer la CSR : CLI (interface en ligne de commande) ou panneau de contrôle d’hébergement d’un type particulier. Et voici la partie principale.

Vous trouverez ci-dessous des astuces, des exemples et des conseils à suivre pour retrouver la pièce manquante du puzzle et éviter de réémettre le certificat (c’est-à-dire de recommencer l’activation et la validation depuis le début).

Systèmes d’exploitation Linux (Apache, Nginx, Lighttpd, Heroku)
Traditionnellement, sur les systèmes d’exploitation basés sur Linux (Ubuntu, Debian, CentOS, RedHat, etc.), les clés privées sont générées avec la boîte à outils cryptographique openssl et enregistrées dans des fichiers portant l’extension .key ou .pem. Cependant, comme les extensions ne sont pas obligatoires pour les simples fichiers texte sous Linux, le code de la clé privée peut se trouver dans un fichier portant pratiquement n’importe quel nom.

Si vous vous souvenez du nom complet ou partiel du fichier de clé, vous pouvez essayer de trouver son emplacement en exécutant la commande « find » comme ci-dessous :

sudo find [search_start_folder] -type f -iname ‘private.key’

  • le paramètre [search_start_folder] indique le répertoire à partir duquel la recherche commence, en parcourant tous les répertoires qu’il contient. Par exemple, pour chercher à partir de la racine (« root »), indiquez le signe / ;\
  • pour rechercher à partir d’un nom de fichier partiel, indiquez le nom supposé du fichier avec un astérisque (*). Par exemple, la valeur « *.key » permet de trouver tous les fichiers dont le nom se termine par « .key ».

ASTUCE : très souvent, le nom du fichier de clé ressemble au nom de domaine pour lequel le certificat est émis, par exemple « example.com.key », « example_com.key », « example-com.key », etc.

Une autre façon de trouver l’emplacement du fichier de clé privée consiste à rechercher certains motifs à l’intérieur des fichiers :

grep -r –exclude-dir=log –exclude-dir=ssh –exclude=history -I -l -e ‘—–BEGIN PRIVATE’ -e ‘—–BEGIN RSA*’ -e ‘—–BEGIN EC*’ [search_start_folder] 2> /dev/null

Cette commande sur une seule ligne affiche le chemin absolu du fichier contenant l’expression recherchée (en-tête ——BEGIN), par exemple « /etc/ssl/private.key ».

Systèmes d’exploitation Windows (IIS, Exchange, Small Business server)
Les systèmes Windows ne permettent pas de récupérer la clé privée en texte brut. Lorsqu’un certificat SSL est importé via MMC ou IIS, la clé privée correspondante est automatiquement associée au certificat, à condition bien sûr que le certificat soit importé sur la même instance que celle où la clé a été générée. Mais si nous avons besoin de la clé privée, par exemple pour installer le certificat sur un autre serveur, il est possible d’exporter la clé dans un fichier protégé par mot de passe (format PFX ou PKCS12). Pour cela, ouvrez le composant logiciel enfichable MMC Certificates de la façon suivante :

Win+R > mmc.exe > OK > File > Add/Remove Snap-in > Certificates > Add > Computer account > Next > Local computer > Finish > OK

Ensuite, allez dans le dossier Certificate Enrollment Requests > Certificates (si la demande de certificat n’a pas été finalisée) ou Personal > Certificates (si la demande de certificat a déjà été finalisée), faites un clic droit sur le certificat et cliquez sur All Tasks > Export pour ouvrir l’assistant d’exportation. Vous trouverez plus de détails sur l’exportation ici.

Vous obtiendrez alors un fichier .pfx contenant la clé. Pour obtenir la clé en texte brut, vous pouvez convertir le .pfx en fichiers encodés au format PEM avec cet outil (option PKCS#12 to PEM).

Mac OS X
L’outil par défaut « Keychain » de l’application Server ne permet pas d’accéder à la clé privée générée via l’interface graphique. Cependant, avec les outils en ligne de commande du Terminal, il est possible d’aller dans le dossier « /etc/certificates » et d’ouvrir le fichier de clé, qui devrait porter un nom du type « .key.pem ».

Tomcat (avec keytool)
Sauf si le connecteur SSL de Tomcat est configuré en mode APR, la clé privée est généralement stockée dans un fichier keystore Java protégé par mot de passe (.jks ou .keystore), créé avant la CSR. Pour extraire la clé au format PEM, il faut d’abord convertir le keystore en fichier .pfx/.p12 (PKCS#12). Avec l’utilitaire « keytool », cela peut se faire à l’aide de la commande suivante :

keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.p12 -deststoretype PKCS12 -srcalias -srcstorepass -srckeypass -deststorepass -destkeypass

Remplacez « keystore.jks » par le nom du keystore contenant la clé recherchée, et « keystore.p12 » par le nom du fichier .pfx/.p12 dans lequel le keystore sera converti ; , et correspondent à l’alias, au mot de passe du keystore et au mot de passe de la clé définis lors de la génération du keystore ; les valeurs et sont nécessaires pour sécuriser l’intégrité du nouveau fichier .pfx./p12 ; il est toutefois possible d’utiliser le même mot de passe pour ces deux paramètres.

Une fois le fichier .pfx/.p12 créé, il peut être converti en fichiers au format PEM soit à l’aide de cet outil (option PKCS#12 to PEM), soit avec OpenSSL. La commande OpenSSL serait :

openssl pkcs12 -in keystore.p12 -nocerts -nodes -out private.key

  • « private.key » correspond au nom du fichier dans lequel le texte de la clé privée sera enregistré.

cPanel
Il existe 2 façons d’accéder à la clé privée dans cPanel :

  1. Avec SSL/TLS Manager
    Sur la page d’accueil de cPanel, cliquez sur SSL/TLS Manager, puis sur le bouton Private keys. Le nouvel écran affiche la liste de toutes les clés privées créées dans ce compte cPanel. Cliquez sur le bouton View & Edit pour ouvrir l’écran qui présente la clé sous forme encodée et décodée :

  2. Avec le gestionnaire de fichiers
    Cliquez sur le bouton File Manager depuis l’écran d’accueil de cPanel et ouvrez la fenêtre comme sur la capture d’écran ci-dessous. Ensuite, trouvez le dossier « ssl », puis cliquez sur le répertoire « key » qu’il contient. Les clés privées apparaîtront dans le panneau de navigation de droite. Vous pouvez alors télécharger le fichier de clé souhaité ou l’ouvrir en texte brut :

WHM
Dans WHM, les clés privées sont stockées avec les CSR et les certificats correspondants dans SSL Storage Manager. Pour y accéder, cliquez sur SSL/TLS depuis l’écran d’accueil, puis sur SSL Storage Manager. Pour afficher le texte de la clé privée, cliquez sur le bouton en forme de loupe dans la première colonne, intitulée Key.

Plesk
Après être allé dans Domains > domain.com > SSL/TLS certificates, vous devriez voir une page semblable à celle de la capture d’écran ci-dessous. L’icône de clé accompagnée du message « Private key part supplied » indique que la clé recherchée est présente dans le système. Pour l’afficher en texte brut, cliquez sur le nom de l’entrée et faites défiler jusqu’à ce que le code de la clé apparaisse à l’écran. Vous pouvez aussi cliquer sur la flèche verte à droite et télécharger le fichier .pem contenant la clé, la CSR et le certificat, ainsi que le CA bundle s’ils ont déjà été importés. Le fichier .pem peut être ouvert avec n’importe quel éditeur de texte, comme Notepad :

Synology NAS DSM
Dans Synology DSM, la clé privée est téléchargée dans le fichier archive.zip à la dernière étape de l’assistant de génération de CSR. Elle est enregistrée dans le fichier server.key à l’intérieur de l’archive .zip et peut être ouverte sur un ordinateur local avec un éditeur de texte :

Webmin
Le panneau Webmin a été conçu comme une interface graphique au-dessus des outils en ligne de commande. Il comprend toutefois un gestionnaire de fichiers (Filemin), qui permet de parcourir le système de fichiers pour trouver le fichier de clé créé par la commande OpenSSL dans Command Shell lors de la génération de la CSR.

L’autre façon de trouver la clé privée dans Webmin consiste à ouvrir « Command shell » dans la section « Others » et à exécuter la commande « find » ou « grep » indiquée dans le paragraphe « Systèmes d’exploitation Linux » de cet article.

VestaCP
Sur VestaCP, la clé privée n’est enregistrée nulle part dans l’interface utilisateur : il faut enregistrer le texte de la clé dans un fichier local lors de la génération de la CSR.

Il reste cependant une possibilité de la retrouver via SSH. Lorsque VestaCP crée une nouvelle CSR, la clé privée est stockée sous forme de fichier temporaire dans le répertoire « /tmp ». Le chemin absolu du fichier de clé peut ressembler, par exemple, à « /tmp/tmp.npAnkmWFcu/example.com.key ». Le principal problème est que les fichiers contenus dans « /tmp » sont définitivement supprimés à chaque redémarrage du serveur.

Pour trouver l’emplacement du fichier de clé sur votre instance, vous pouvez exécuter la commande suivante :

find /tmp -type f -iname ‘domain.com.key’

  • remplacez « domain.com » par le nom de domaine réel pour lequel la CSR a été générée.

Vous pouvez aussi utiliser la bonne vieille commande « grep » :
grep -r -I -l -e ‘—–BEGIN PRIVATE*’ -e ‘—–BEGIN RSA*’ /tmp 2> /dev/null

DirectAdmin
Dans les versions récentes du panneau DirectAdmin, la clé privée est généralement enregistrée dans le système et préremplie dans la section « Paste a pre-generated certificate and key » du menu SSL Certificates.

Si, lors de l’installation du certificat, vous vous apprêtez à coller le texte du certificat sous le texte de la clé privée prérempli mais que la fenêtre est vide, cela peut signifier que le code CSR a été généré ailleurs, ou que la clé privée n’a pas été ajoutée dans cette fenêtre à cause d’un dysfonctionnement du système. Dans ce dernier cas, il est possible de récupérer la clé via SSH. Elle est normalement enregistrée dans le répertoire suivant : /usr/local/directadmin/data/users//domains/.key , où correspond à votre nom d’utilisateur DirectAdmin et au domaine pour lequel la CSR a été générée.

Webuzo
La section « SSL » de Webuzo se trouve sur la page d’accueil. Cliquez sur le bouton « Private keys » pour afficher la liste des clés générées. Pour voir le texte de la clé, cliquez sur le bouton en forme de crayon à droite de la liste, dans la colonne « Option » :

En conclusion, si aucune des astuces ci-dessus ne vous a aidé et que la clé privée d’origine est introuvable, vous devez générer une nouvelle paire CSR / clé privée et réémettre le certificat, en veillant cette fois à conserver la clé privée en lieu sûr.

Cette page vous a-t-elle aidé ?