Outil gratuit
Que contient ce certificat ?
Un fichier .crt, .pem ou .cer est illisible à l'œil nu, et c'est souvent le seul indice qu'on a quand un site refuse de s'afficher. Collez-le : vous verrez les noms qu'il couvre, jusqu'à quand il vaut, qui l'a émis, la taille de sa clé et ses extensions, champ par champ.
Le texte que vous collez est décodé par votre navigateur. Il ne part sur aucun serveur, pas même le nôtre : ni le certificat, ni la demande, ni le nom de domaine.
Ce que cet outil lit, et ce qu'il ne lit pas
Il lit le certificat que vous collez, et rien d'autre. Il ne contacte pas le site, donc il ne peut pas dire si la chaîne intermédiaire est bien servie, si le certificat a été révoqué, ni s'il est encore installé quelque part. Ce sont trois questions différentes de celle-ci — et les trois se vérifient en ligne, avec l'outil de contrôle de certificat SSL de cette même boîte à outils.
La date est écrite dedans, mais personne ne la relit
Un certificat expiré est la panne la plus facile à éviter et l'une des plus courantes : la date est connue d'avance, à la seconde près, depuis le jour de l'émission. Ce qui manque n'est pas l'information, c'est quelqu'un qui la regarde le bon jour. DomainVigil relit chaque certificat des domaines qu'on lui confie et écrit avant l'échéance, trente jours puis sept, à vous et pas au client.
Le mécanisme
Le cadenas ne montre qu'une face
Un visiteur voit un cadenas et un nom de domaine. Le navigateur, lui, lit une fiche d'une dizaine de lignes, et il la relit à chaque visite. Retournez la carte pour voir cette fiche, puis avancez l'horloge de trois mois et regardez laquelle de ces lignes se met à mentir toute seule.
Côté visiteur, il n'y a rien de plus à voir, et c'est précisément le problème : le jour où le certificat expire, cette face change d'un coup, sans prévenir personne.
Fiche d'exemple, sur un domaine réservé aux démonstrations. Pour lire la vôtre, collez votre certificat dans le champ en haut de page.
Ce que dit le fichier
Tout est écrit dedans.
Les noms couverts, les deux dates, les extensions, l'autorité qui l'a signé. Un certificat ne se devine pas : il se lit, et il tient dans un champ de texte.
- 2dates : un début, une fin
- 14extensions reconnues par leur nom
- 2048bits : le minimum pour une clé RSA
Lire le résultat
Le bandeau donne le nom principal, le verdict et le temps restant. En dessous, les volets suivent l'ordre des questions qu'on se pose : jusqu'à quand, pour quels noms, émis par qui, avec quelle clé.
- Conforme
- Le certificat est dans sa période de validité, il couvre au moins un nom, sa clé et sa signature sont à niveau. Cela ne dit pas qu'il est bien installé : un certificat correct servi sans sa chaîne intermédiaire produit quand même une erreur chez une partie des visiteurs.
- Problème
- Expiré, pas encore valide, signé en SHA-1, clé trop courte, ou sans aucun nom alternatif. Dans tous ces cas un navigateur à jour interrompt la visite avant d'afficher la page ; il n'y a pas de réglage côté serveur qui rattrape cela.
- À vérifier
- Le certificat fonctionne mais quelque chose ne colle pas : une échéance dans moins de trente jours, un certificat auto-signé, un nom commun qui n'est pas repris dans les noms alternatifs. Chacun de ces cas a une conséquence visible pour une partie des visiteurs seulement, ce qui les rend difficiles à reproduire.
- À savoir
- Une caractéristique, pas un défaut : un joker, plusieurs noms couverts, un certificat d'autorité. Elle est signalée parce qu'elle change ce que le certificat couvre vraiment, et donc ce qu'il faudra vérifier après un renouvellement.
- Les noms couverts
- La liste exacte des noms que ce certificat authentifie, avec le type de chaque entrée. Un navigateur compare le nom de la barre d'adresse à cette liste, et à rien d'autre. Si le nom demandé n'y est pas, l'erreur affichée parle de nom qui ne correspond pas, même quand le certificat est parfaitement valide.
- Les empreintes
- L'empreinte SHA-256 du certificat entier. Elle sert à vérifier que le fichier que vous avez en main est bien celui qui est installé sur le serveur, ou celui que l'autorité a émis : deux fichiers identiques ont la même empreinte, deux fichiers différents n'en ont jamais la même. Elles sont calculées par votre navigateur.
- Les extensions
- Ce sont elles qui disent ce que le certificat autorise : pour quels noms, pour quels usages, jusqu'où dans une chaîne. Chacune est affichée avec son identifiant et son contenu quand il est lisible, et marquée « critique » quand la RFC 5280 impose de la refuser plutôt que de l'ignorer.
Les cinq erreurs qu'on lit dans un certificat
Toutes se diagnostiquent avec ce que cette page affiche, sans accéder au serveur.
Le navigateur dit que le nom ne correspond pas, alors que le certificat est valide
Ce qui la provoque : Le nom demandé n'est pas dans la liste des noms alternatifs. Le cas le plus fréquent : le certificat couvre www.example.com et le visiteur arrive sur example.com, ou l'inverse.
Le geste qui corrige : Comparez le volet des noms couverts avec l'adresse exacte tapée. Si le nom manque, il faut réémettre le certificat en l'ajoutant : aucun réglage de serveur ne crée un nom dans un certificat déjà signé.
Le site s'affiche chez vous et pas chez le client
Ce qui la provoque : Le serveur ne sert pas le certificat intermédiaire. Votre navigateur l'a en cache d'une visite précédente et reconstitue la chaîne tout seul ; celui du client ne l'a pas.
Le geste qui corrige : Installez le fichier de chaîne fourni par l'autorité, pas seulement le certificat du site. Le volet « accès aux informations de l'autorité » donne l'adresse où le certificat émetteur est publié.
Le fichier refuse de s'ouvrir : « unable to load certificate »
Ce qui la provoque : Ce n'est pas du PEM. Un .cer ou un .der est un fichier binaire, et ce que vous collez alors n'est pas du base64. Parfois, c'est simplement une clé privée ou une demande qui a été nommée .crt.
Le geste qui corrige : Convertissez-le : openssl x509 -in certificat.der -inform DER -out certificat.pem. Si la conversion échoue aussi, le fichier n'est pas un certificat.
Le certificat a été renouvelé, et le site sert encore l'ancien
Ce qui la provoque : Le serveur web garde le certificat en mémoire au démarrage. Remplacer le fichier ne suffit pas, et sur un hébergement à plusieurs machines, il faut le remplacer partout.
Le geste qui corrige : Rechargez la configuration du serveur, puis vérifiez ce qui est réellement servi : openssl s_client -connect example.com:443 -servername example.com </dev/null | openssl x509 -noout -dates.
La date d'expiration affichée n'est pas celle du navigateur
Ce qui la provoque : Les dates d'un certificat sont écrites en temps universel, et les outils les affichent souvent tel quel. Un décalage de deux heures en été, en France, vient de là.
Le geste qui corrige : Cette page affiche les dates dans votre fuseau, comme un navigateur. Pour la valeur brute, openssl x509 -noout -dates la rend en UTC, telle qu'elle est encodée.
Les extensions X.509 courantes, et ce que chacune autorise
Un certificat n'est pas qu'un nom et deux dates : ce sont les extensions qui décident ce qu'il permet. Voici celles qu'on rencontre, avec l'identifiant sous lequel elles sont encodées et la section de la RFC 5280 qui les définit.
| Extension | Ce qu'elle contient | Ce qu'elle autorise |
|---|---|---|
| 2.5.29.17 — subjectAltName | La liste des noms : noms DNS, adresses IP, adresses électroniques (§ 4.2.1.6). | Elle définit l'identité du certificat. Un navigateur ne fait confiance qu'aux noms de cette liste, et à aucun autre. |
| 2.5.29.15 — keyUsage | Des bits d'usage : signature, chiffrement de clé, signature de certificats (§ 4.2.1.3). | Elle limite ce que la clé peut faire. Un serveur TLS a besoin de digitalSignature, et de keyEncipherment pour les échanges RSA. |
| 2.5.29.37 — extendedKeyUsage | Des identifiants d'usage : serverAuth, clientAuth, codeSigning (§ 4.2.1.12). | Elle limite l'emploi du certificat. Sans serverAuth, il n'authentifie pas un site web, même s'il couvre le bon nom. |
| 2.5.29.19 — basicConstraints | CA:TRUE ou CA:FALSE, et une longueur de chemin (§ 4.2.1.9). | Elle dit si le certificat peut en signer d'autres. Un certificat de site porte CA:FALSE ; un certificat d'autorité porte CA:TRUE. |
| 1.3.6.1.5.5.7.1.1 — authorityInfoAccess | Les adresses du répondeur OCSP et du certificat émetteur (§ 4.2.2.1). | Elle permet à un client de vérifier la révocation et de récupérer l'intermédiaire manquant. |
| 2.5.29.31 — cRLDistributionPoints | Les adresses où la liste de révocation est publiée (§ 4.2.1.13). | Elle permet de savoir si le certificat a été révoqué avant sa date de fin. |
| 2.5.29.14 — subjectKeyIdentifier | Une empreinte de la clé publique du sujet (§ 4.2.1.2). | Elle sert à relier un certificat à ceux qu'il a signés, quand plusieurs clés portent le même nom. |
| 2.5.29.35 — authorityKeyIdentifier | L'identifiant de la clé de l'émetteur (§ 4.2.1.1). | Elle désigne quel certificat émetteur a signé celui-ci, et c'est ainsi qu'une chaîne se reconstitue. |
| 2.5.29.32 — certificatePolicies | Les identifiants de la politique de l'autorité (§ 4.2.1.4). | Elle indique sous quelles règles le certificat a été émis, validation du domaine ou de l'organisation. |
| 2.5.29.30 — nameConstraints | Des espaces de noms permis ou interdits (§ 4.2.1.10). | Réservée aux certificats d'autorité : elle restreint les noms que cette autorité peut certifier. |
| 1.3.6.1.4.1.11129.2.4.2 — SCT | Des preuves de publication dans les journaux de transparence (RFC 6962 § 3.3). | Elle prouve que le certificat a été rendu public à l'émission, ce que les navigateurs exigent. |
Une extension marquée critique doit être comprise par le client, sinon le certificat doit être rejeté (RFC 5280 § 4.2). C'est pour cela que l'outil l'affiche : une extension critique inconnue explique un rejet que rien d'autre n'explique.
Les commandes qui vont avec
Toutes ont été exécutées pour écrire cette page, avec OpenSSL 3.6.
| Commande | Ce qu'elle fait |
|---|---|
| openssl x509 -in certificat.crt -noout -text | Affiche le certificat en entier, extensions comprises. |
| openssl x509 -in certificat.crt -noout -subject -issuer -dates | Les trois lignes qu'on regarde en premier : pour qui, par qui, jusqu'à quand. |
| openssl x509 -in certificat.crt -noout -ext subjectAltName | La seule liste qui décide des noms couverts. |
| openssl x509 -in certificat.crt -noout -fingerprint -sha256 | L'empreinte SHA-256, à comparer avec celle affichée sur cette page. |
| openssl x509 -in certificat.der -inform DER -out certificat.pem | Convertit un certificat binaire (.der, .cer) en PEM lisible et collable. |
| openssl s_client -connect example.com:443 -servername example.com </dev/null | openssl x509 -noout -text | Récupère le certificat réellement servi par un site et l'affiche. |
| openssl verify -CAfile chaine.pem certificat.crt | Vérifie que le certificat se rattache bien à la chaîne fournie. |
Questions fréquentes
Quelle est la différence entre .crt, .pem, .cer et .der ?
Deux formats et quatre extensions de fichier. Le DER est le certificat en binaire ; le PEM est ce même binaire encodé en base64, entre deux lignes BEGIN et END. Les noms .crt et .cer ne disent rien du contenu : ils peuvent être l'un ou l'autre. Si un fichier s'ouvre dans un éditeur de texte et montre du base64, c'est du PEM et cette page le lira ; sinon, convertissez-le avec la commande de la table.
Comment savoir si un certificat couvre www et le domaine nu ?
En lisant le volet des noms couverts : les deux noms doivent y figurer. Un certificat émis pour www.example.com ne couvre pas example.com, et un joker *.example.com ne le couvre pas non plus — un joker porte sur un niveau de sous-domaines, pas sur le nom sur lequel il est posé. C'est la cause la plus fréquente d'une erreur de nom sur un site qui vient d'être mis en ligne.
Pourquoi mon certificat est-il refusé alors qu'il n'est pas expiré ?
Trois causes possibles, et cette page en détecte deux. Le nom demandé n'est pas dans la liste des noms alternatifs. Le certificat est auto-signé, ou signé par une autorité que le poste ne connaît pas. Ou bien la chaîne intermédiaire n'est pas servie par le serveur, et c'est la seule des trois qui demande d'interroger le site plutôt que le fichier.
Que veut dire « auto-signé » ?
Que l'émetteur et le sujet sont la même entité : le certificat s'est signé lui-même, sans autorité au-dessus. Cette page le détecte en comparant les deux noms distinctifs. C'est parfaitement utilisable en interne, sur un réseau où l'on installe le certificat sur chaque poste, et inutilisable sur un site public : aucun navigateur n'accepte une signature dont il ne peut remonter la chaîne.
À quoi sert l'empreinte SHA-256 ?
À comparer deux fichiers sans les lire. Elle identifie un certificat de façon unique : si l'empreinte affichée ici correspond à celle que rend le serveur, c'est le même certificat, à l'octet près. C'est la façon la plus rapide de vérifier qu'un renouvellement a bien été déployé, ou qu'un fichier reçu par courriel est bien celui que l'autorité a émis.
Combien de temps un certificat reste-t-il valide ?
La période exacte est écrite dans le certificat, et c'est elle seule qui fait foi : cette page l'affiche en jours, début et fin comprises. Les autorités publiques ont raccourci les durées maximales par étapes au fil des années, si bien que la réponse générale change ; celle qui compte pour votre site est la date que porte votre fichier.
Le vocabulaire
Les mots qu'on croise autour d'un certificat
Ceux qui reviennent dans un message d'erreur, une documentation d'autorité ou un fil de support, sans y être jamais définis.
PEM- Le certificat en base64, entre une ligne BEGIN et une ligne END. C'est la forme que cette page lit.
DER- Le même certificat, en binaire. Un fichier .cer ou .der ne s'ouvre pas dans un éditeur de texte : il se convertit d'abord.
SAN- La liste des noms alternatifs du sujet. Un navigateur compare l'adresse tapée à cette liste, et à aucune autre.
CN- Le nom commun du sujet. Il n'identifie plus le site : un nom qui n'est pas repris dans la liste n'est couvert par rien.
CA:TRUE- La marque d'un certificat d'autorité, portée par les contraintes de base. Il sert à signer d'autres certificats, pas à identifier un site.
serverAuth- L'usage étendu sans lequel un certificat n'authentifie pas un site web, même s'il couvre le bon nom.
SHA-256- L'empreinte du fichier entier. Deux fichiers identiques ont la même ; deux fichiers différents n'en ont jamais la même.
*.example.com- Un joker. Il couvre les sous-domaines d'un seul niveau, jamais le nom sur lequel il est posé.
Avant la panne
Trente jours avant la fin, cette lecture le dit déjà
30jours
En dessous, il passe en « à vérifier », même s'il fonctionne.
C'est le seuil appliqué ici, et c'est aussi le premier des deux rappels que DomainVigil envoie sur les domaines qu'on lui confie : trente jours, puis sept. La date, elle, est écrite dans le fichier depuis le jour de l'émission.
Vingt contrôles, sans inscription
- Que contient ma demande de certificat ?
- Comment s'écrit ce nom de domaine en Punycode ?
- Où en est la propagation DNS de mon domaine ?
- Générateur d'enregistrement SPF
- Quelle est la réputation de ce domaine ?
- Les en-têtes de sécurité de ce site
- Le bilan complet d'un domaine
- Quand expire ce nom de domaine ?
- Ce certificat SSL est-il valide ?
- Vos e-mails sont-ils authentifiés ?
- Ce domaine est-il sur une liste noire ?
- Quels serveurs reçoivent les e-mails de ce domaine ?
- Quels serveurs de noms répondent pour ce domaine ?
- Quels enregistrements TXT porte ce domaine ?
- Vers quoi pointe cet alias ?