bg-blog-articles

Comment vérifier un certificat avec OpenSSL

Si vous gérez un site web ou un serveur, vérifier régulièrement votre certificat SSL/TLS est une de ces tâches que vous ne pouvez pas vous permettre de négliger. Un certificat expiré ou mal configuré signifie des avertissements du navigateur, une confiance rompue et des interruptions de service potentielles.

How to Check a Certificate With OpenSSL

OpenSSL — la boîte à outils open source en ligne de commande utilisée sur pratiquement toutes les distributions Linux, les systèmes macOS, et disponible sous Windows — vous donne un accès direct et sans filtre aux détails des certificats. Pas besoin de navigateur. Pas d’outils tiers. Juste un terminal et quelques courtes commandes.

Ce guide couvre les commandes OpenSSL que vous utiliserez le plus souvent : afficher les détails d’un certificat, vérifier les dates d’expiration, examiner des serveurs distants, valider les chaînes de certificats, et confirmer que votre clé privée correspond à votre certificat. Chaque commande est prête à copier-coller, avec une explication claire de ce qu’elle fait.

Vous préférez travailler dans un navigateur ? Le SSL Checker renvoie les mêmes détails de certificat : chaîne, expiration, suites de chiffrement et une note de sécurité, à partir d’un simple nom de domaine, sans terminal requis, ou vous pouvez lire le certificat vous-même dans Chrome, Firefox, Safari ou Edge. Ce guide couvre tout ce que vous préféreriez faire depuis la ligne de commande.


Table des matières

  1. Prérequis : vérifiez votre version d’OpenSSL
  2. Afficher les détails complets d’un certificat avec openssl x509
  3. Vérifier le certificat d’un serveur distant avec openssl s_client
  4. Vérifier les dates d’expiration des certificats
  5. Valider la chaîne de certificats avec openssl verify
  6. Confirmer que votre clé privée correspond à votre certificat
  7. Convertir entre les formats de certificats
  8. Dépannage des erreurs de certificat courantes
  9. Garder le contrôle de vos certificats

Economisez 10% sur les certificats SSL en commandant chez SSL Dragon aujourd’hui !

Délivrance rapide, cryptage puissant, confiance de 99,99 % du navigateur, assistance dédiée et garantie de remboursement de 25 jours. Code de coupon : SAVE10

Image détaillée d'un dragon en vol

Prérequis : vérifiez votre version d’OpenSSL

Avant d’exécuter la moindre commande, confirmez qu’OpenSSL est installé et vérifiez quelle version vous utilisez. Votre version déterminera les protocoles et algorithmes disponibles.

openssl version –a

Cette commande affiche le numéro de version, la date de publication et le répertoire de certificats par défaut (OPENSSLDIR). La plupart des systèmes Linux sont livrés avec OpenSSL préinstallé. Sur macOS, il est fourni avec LibreSSL (un fork d’OpenSSL), qui gère les mêmes commandes.

Si vous êtes sous Windows, vous pouvez accéder à OpenSSL via WSL (Windows Subsystem for Linux), Git Bash, ou une version Windows autonome.

Astuce : Assurez-vous d’utiliser au moins OpenSSL 1.1.1 ou une version plus récente. Les versions plus anciennes ne prennent pas en charge TLS 1.2 et TLS 1.3, qui sont requis par les serveurs et navigateurs modernes.


Afficher les détails complets d’un certificat avec openssl x509

La commande openssl x509 est l’outil de base pour l’inspection des certificats. Elle lit les certificats X.509, le format standard utilisé par tous les certificats SSL/TLS, et affiche les détails sous une forme lisible par un humain.

Pour afficher tous les détails d’un fichier de certificat stocké localement :

openssl x509 -in certificate.crt -text -noout

Voici ce que fait chaque option :

  • -in certificate.crt — Spécifie le fichier de certificat d’entrée. Remplacez par le nom réel de votre fichier (par exemple, yourdomain.crt ou server.pem).
  • -text — Affiche le certificat sous forme de texte lisible plutôt que sous forme de données encodées brutes.
  • -noout — Empêche OpenSSL d’imprimer le bloc PEM encodé en Base64 en plus de la sortie texte.

Cette commande révèle tout ce qui concerne le certificat :

  • Extensions — Incluant les Subject Alternative Names (SANs), Key Usage, et Authority Information Access.
  • Émetteur — L’autorité de certification (CA) qui l’a signé (par exemple, DigiCert, Let’s Encrypt, Sectigo).
  • Sujet — Le domaine ou l’organisation à qui le certificat a été délivré.
  • Période de validité — Les dates « Not Before » et « Not After » indiquant quand le certificat est actif.
  • Algorithme et taille de clé publique — Généralement RSA 2048 bits ou ECDSA P-256.
  • Algorithme de signature — Habituellement sha256WithRSAEncryption pour les certificats modernes.

Vérifier uniquement l’émetteur ou le sujet

Si vous n’avez pas besoin de la sortie complète, vous pouvez extraire des champs spécifiques :

openssl x509 -in certificate.crt -noout -issuer
openssl x509 -in certificate.crt -noout -subject

Ces commandes courtes sont particulièrement utiles lorsque vous écrivez des scripts ou avez simplement besoin d’une confirmation rapide.

Remarque : OpenSSL attend le format PEM par défaut — il s’agit de fichiers texte qui commencent par —–BEGIN CERTIFICATE—–. Si votre certificat est au format DER (binaire), ajoutez l’option -inform der :

openssl x509 -in certificate.der -inform der -text -noout

Vérifier le certificat d’un serveur distant avec openssl s_client

Vous n’avez pas toujours le fichier de certificat sur votre machine locale. Souvent, vous devez inspecter le certificat installé sur un serveur en production. C’est là qu’intervient openssl s_client.

openssl s_client -connect yourdomain.com:443 -servername yourdomain.com

Cette commande ouvre une connexion TLS vers le serveur sur le port 443 (le port HTTPS par défaut) et affiche la chaîne de certificats, la version du protocole, la suite de chiffrement et les détails de session.

L’option -servername active le Server Name Indication (SNI), ce qui est essentiel lorsque le serveur héberge plusieurs domaines sur la même adresse IP. Sans cela, vous pourriez recevoir le mauvais certificat.

Appuyez sur CTRL+C pour fermer la connexion après avoir consulté la sortie.

Pas de terminal à portée de main, ou vous voulez une vérification plus rapide ? Notre SSL Checker vous permet de vérifier un certificat sans OpenSSL. Collez le domaine et obtenez la chaîne, l’expiration et les détails de chiffrement dans votre navigateur.

Utilisez un pipe pour une sortie plus propre

La sortie brute de s_client est verbeuse. Pour extraire uniquement les détails du certificat, redirigez-la vers openssl x509 :

echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -text

Le echo | au début envoie une entrée vide afin que la connexion se ferme automatiquement. Le 2>/dev/null supprime les messages d’erreur, ce qui vous donne une sortie propre.

Vous pouvez également restreindre à des champs spécifiques :

echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -issuer -subject -dates

Cette commande courte est une favorite pratique des administrateurs système. Elle affiche l’émetteur, le sujet et les dates de validité en une seule opération.

Enregistrer le certificat localement

Si vous souhaitez enregistrer le certificat distant dans un fichier pour une analyse plus approfondie :

echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 > yourdomain.pem

Vous pouvez maintenant exécuter n’importe quelle commande openssl x509 sur le fichier enregistré.


Vérifier les dates d’expiration des certificats

Les certificats expirés sont l’une des causes les plus courantes d’erreurs SSL. OpenSSL vous offre plusieurs façons de vérifier l’expiration.

Vérification rapide de la date

openssl x509 -in certificate.crt -noout -dates

Ceci affiche à la fois « Not Before » (date de début) et « Not After » (date de fin). Si vous avez uniquement besoin de la date d’expiration :

openssl x509 -in certificate.crt -noout -enddate

Pour les serveurs distants

Combinez s_client et x509 pour vérifier la date d’expiration du certificat d’un serveur en production :

echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -enddate

Automatiser les alertes d’expiration avec -checkend

L’option -checkend est quelque chose que la plupart des guides négligent, mais elle est incroyablement utile pour l’automatisation. Elle vérifie si le certificat va expirer dans un nombre spécifié de secondes et renvoie un code de sortie :

openssl x509 -in certificate.crt -noout -checkend 2592000

La valeur 2592000 équivaut à 30 jours en secondes. Si le certificat expire dans les 30 jours, la commande renvoie un code de sortie non nul et affiche un avertissement. Si le certificat reste valide au-delà de cette période, elle renvoie zéro.

Cela facilite son intégration dans des tâches cron, des scripts de surveillance, ou des pipelines CI/CD :

if ! openssl x509 -in certificate.crt -noout -checkend 2592000 > /dev/null 2>&1; then
    echo "WARNING: Certificate expires within 30 days!"
fi

Pourquoi c’est important : Avec le CA/Browser Forum qui évolue vers des durées de vie de certificats de 47 jours d’ici 2029, la surveillance automatisée de l’expiration n’est plus optionnelle, c’est une nécessité. Mettre en place ces vérifications dans votre infrastructure dès maintenant vous évitera des interruptions de service plus tard.


Valider la chaîne de certificats avec openssl verify

Un certificat ne fonctionne pas isolément. Les navigateurs et les clients valident l’ensemble de la chaîne de certificats, une séquence qui commence par votre certificat serveur, passe par un ou plusieurs certificats CA intermédiaires, et se termine par un certificat CA racine de confiance.

Si la chaîne est rompue ou incomplète, les visiteurs voient une erreur « non fiable » même si le certificat lui-même est valide.

Pour valider un certificat par rapport au magasin de CA de confiance du système :

openssl verify certificate.crt

Si la sortie affiche certificate.crt: OK, la chaîne est complète et valide.

Lorsque les certificats intermédiaires sont séparés

Si votre certificat CA intermédiaire se trouve dans un fichier séparé (courant chez de nombreux fournisseurs de CA, dont DigiCert), utilisez l’option -untrusted :

openssl verify -untrusted intermediate.crt certificate.crt

L’option -untrusted indique à OpenSSL d’utiliser le certificat intermédiaire fourni lors de la construction de la chaîne, sans l’ajouter de manière permanente au magasin de confiance.

Afficher la chaîne complète d’un serveur distant

Pour voir chaque certificat de la chaîne d’un serveur en production :

openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -showcerts

L’option -showcerts affiche chaque certificat de la chaîne au format PEM. C’est la commande de référence pour diagnostiquer les problèmes de chaîne, comme des certificats intermédiaires manquants ou un ordre incorrect.

Vous préférez une vérification visuelle en un clic ? Notre SSL Checker vérifiera la chaîne de certificats pour n’importe quel domaine et signalera automatiquement les intermédiaires manquants.


Confirmer que votre clé privée correspond à votre certificat

Après l’installation d’un certificat, une des erreurs les plus courantes est une incompatibilité de clé privée. Le serveur web ne démarrera pas (ou servira une connexion défectueuse) si la clé privée ne correspond pas à la clé publique du certificat.

Voici comment vérifier la correspondance. Les deux commandes extraient le modulus, une valeur mathématique partagée, et la hachent :

openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privatekey.key | openssl md5

Si les hachages MD5 sont identiques, la clé privée et le certificat forment une paire valide. S’ils diffèrent, quelque chose ne va pas. Vous avez peut-être la mauvaise clé, ou le certificat a été réémis avec une nouvelle paire de clés.

Vous pouvez étendre cette vérification pour inclure également votre CSR (Certificate Signing Request) :

openssl req -noout -modulus -in request.csr | openssl md5

La vérification du modulus vous indique si les trois fichiers vont ensemble, mais pas ce que le CSR déclare réellement. Pour lire ses propres champs, exécutez openssl req -in yourCSR.csr -noout -text, ou collez la requête dans notre décodeur de CSR.

Les trois éléments : certificat, clé privée et CSR devraient renvoyer le même hachage.

Pas sur une machine avec OpenSSL à portée de main ? Notre Certificate Key Matcher effectue la même comparaison dans votre navigateur, et fonctionne également pour les clés ECDSA, pour lesquelles la vérification du modulus échoue.


Convertir entre les formats de certificats

Différents serveurs et plateformes nécessitent des formats de certificats différents. Apache et Nginx utilisent le format PEM, tandis que Windows IIS et Tomcat nécessitent généralement le PKCS#12 (.pfx). Voici les conversions les plus courantes :

DER vers PEM :

openssl x509 -inform der -in certificate.der -out certificate.pem

PEM vers DER :

openssl x509 -outform der -in certificate.pem -out certificate.der

PEM vers PKCS#12 (.pfx) :

openssl pkcs12 -export -out certificate.pfx -inkey privatekey.key -in certificate.crt -certfile ca-bundle.crt

PKCS#12 vers PEM :

openssl pkcs12 -in certificate.pfx -out certificate.pem -nodes

L’option -nodes exporte la clé privée sans chiffrement par mot de passe. Retirez-la si vous voulez une sortie protégée par une phrase secrète.

Bon à savoir : Les fichiers de certificats avec les extensions .crt, .cer, et .pem peuvent tous être au format PEM. L’extension seule ne vous indique pas l’encodage, vérifiez le contenu du fichier. S’il commence par —–BEGIN, c’est du PEM. Si c’est du charabia binaire, c’est du DER.

Pour une conversion ponctuelle sur une machine sans OpenSSL, le SSL Converter gère les formats PEM, DER, PFX et P7B dans le navigateur et divise un PFX en certificat, chaîne et clé.


Dépannage des erreurs de certificat courantes

Lorsque quelque chose ne fonctionne pas, la sortie d’OpenSSL vous indique généralement où se situe le problème. Voici une référence rapide pour les problèmes les plus fréquents :

« unable to get local issuer certificate ». La chaîne de certificats est incomplète. Le certificat intermédiaire est manquant dans la configuration de votre serveur. Obtenez le CA bundle correct auprès de votre fournisseur de certificat et configurez-le avec votre certificat serveur.

« certificate has expired ». Exactement ce que cela semble indiquer. La date « Not After » du certificat est dépassée. Renouvelez et remplacez-le immédiatement.

« certificate signature failure ». Le certificat a été modifié ou corrompu après la signature. Retéléchargez-le depuis votre fournisseur de CA ou réémettez-le.

« key values mismatch ». La clé privée et le certificat ne correspondent pas. Exécutez la comparaison du modulus décrite dans la section précédente pour confirmer, puis localisez la bonne clé ou générez un nouveau CSR.

« self-signed certificate ». OpenSSL ne peut pas remonter le certificat jusqu’à une CA racine de confiance. C’est attendu pour les certificats autosignés utilisés en développement. Pour la production, assurez-vous d’avoir un certificat délivré par une autorité de certification publiquement reconnue.

« hostname mismatch ». Le domaine auquel vous vous connectez ne correspond pas au Common Name (CN) ou au Subject Alternative Name (SAN) listé dans le certificat. Vérifiez les SAN avec :

openssl x509 -in certificate.crt -noout -ext subjectAltName

Garder le contrôle de vos certificats

Vérifier les certificats avec OpenSSL est une tâche que vous effectuerez à plusieurs reprises tout au long du cycle de vie du certificat, lors de l’installation, après le renouvellement, et chaque fois que quelque chose se casse. Ces commandes sont le moyen le plus rapide de diagnostiquer les problèmes et de vérifier que tout est correctement configuré.

Pour une vérification rapide sans ouvrir de terminal, passez le domaine dans notre SSL Checker et obtenez sa note de sécurité SSL ainsi que le détail complet du certificat, de la chaîne et du chiffrement en quelques secondes.

Mais les vérifications manuelles ont leurs limites. Si vous gérez plusieurs certificats sur différents serveurs, vous avez besoin d’un processus de gestion des certificats fiable, particulièrement alors que la durée de vie des certificats continue de diminuer et que la marge d’erreur se réduit.

Besoin de certificats SSL de confiance ? SSL Dragon propose un large choix de certificats SSL/TLS provenant des meilleures autorités de certification telles que DigiCert, Sectigo et Thawte, avec des tarifs compétitifs, une émission rapide et une assistance dédiée. Que vous ayez besoin d’un certificat mono-domaine ou d’une solution multi-domaines de niveau entreprise, vous trouverez la solution qui vous convient.

Economisez 10% sur les certificats SSL en commandant aujourd’hui!

Émission rapide, cryptage puissant, confiance de 99,99 % du navigateur, assistance dédiée et garantie de remboursement de 25 jours. Code de coupon: SAVE10

Image détaillée d'un dragon en vol
Rédigé par

Rédacteur de contenu expérimenté spécialisé dans les certificats SSL. Transformer des sujets complexes liés à la cybersécurité en un contenu clair et attrayant. Contribuer à l'amélioration de la sécurité numérique par des récits percutants.