Comment ça marche
Un certificat X.509 est un document signé qui associe une clé publique à un nom : un domaine, une personne ou une organisation. Ce qui circule entre serveurs et fichiers est sa forme binaire (DER), et ce que l’on copie-colle est cette même structure en Base64 entre les lignes BEGIN CERTIFICATE et END CERTIFICATE : le format PEM. Il contient un sujet, un émetteur, une période de validité, la clé publique et des extensions qui indiquent à quoi il sert et où vérifier s’il a été révoqué.
L’outil reconnaît les certificats, les demandes de signature PKCS#10 (CSR), les clés privées PKCS#8, PKCS#1 et SEC1, les clés publiques, les paquets PKCS#7 (.p7b) et les fichiers PKCS#12 (.pfx, .p12). Si vous collez plusieurs blocs ensemble, il trie la chaîne du certificat final jusqu’à la racine, vérifie chaque signature avec la clé de l’émetteur et compare la clé privée à chaque certificat et à chaque CSR pour vous dire lequel correspond à laquelle.
Il convertit aussi entre formats, construit le .pfx exigé par IIS et Azure à partir du certificat et de la clé, et génère une nouvelle CSR avec sa clé privée ou un certificat autosigné pour les tests. Tout se fait avec l’API cryptographique de votre navigateur : ni les certificats ni les clés ne sont envoyés à un serveur.
Exemples
ISRG Root X1 · SHA-25696:BC:EC:06:26:49:76:F3:74:60:77:9A:CF:28:C5:A7:CF:E8:A3:C0:AA:E1:1A:8F:FC:EE:05:C0:BD:DF:08:C6L’empreinte SHA-256 de la racine Let's Encrypt. C’est celle que publient l’autorité et les magasins de confiance : si celle de votre fichier correspond, il s’agit exactement de ce certificat.ISRG Root X1 · pin SPKIC5+lpZ7tcVwmwQIMcRtPbsQtWLABXhQzejna0wHFr8M=Le SHA-256 de la clé publique en Base64. C’est la valeur à placer dans le pin-sha256 de la configuration de sécurité réseau d’Android ou dans le certificate pinning d’une application ; elle ne change pas au renouvellement du certificat si la clé est réutilisée.root.crt + intermediate.crt + server.crtserver.crt + intermediate.crt + root.crtnginx et HAProxy considèrent le premier certificat du fichier comme celui du serveur. Si la chaîne est inversée, nginx échoue avec key values mismatch, car il compare la clé privée au certificat racine.openssl pkcs12 -in viejo.pfx -legacy -nodes | openssl pkcs12 -export -out nuevo.pfxPBES2 · AES-256-CBC · MAC SHA-256Les .pfx exportés par d’anciennes versions de Windows ou par OpenSSL 1.x sont chiffrés en RC2 et 3DES, que les navigateurs n’implémentent pas. Cette commande les rechiffre en AES, le format utilisé par défaut par OpenSSL 3.Cas d'usage
- Vérifier, avant de l’installer, que le certificat envoyé par l’autorité couvre tous les domaines (SAN) et que la date d’expiration est celle attendue.
- Déterminer laquelle des clés privées restées sur le serveur correspond à chaque certificat, sans devoir comparer les modules avec OpenSSL.
- Comprendre pourquoi un client ne fait pas confiance à votre site : un intermédiaire manquant, une chaîne dans le désordre ou un certificat signé en SHA-1.
- Générer la CSR pour acheter ou renouveler un certificat, avec la clé créée sur votre machine et la commande OpenSSL équivalente si vous préférez le faire sur le serveur.
- Convertir un .crt et sa .key en .pfx pour IIS, Azure App Service ou un keystore Java, ou extraire le certificat et la clé d’un .pfx pour nginx.
- Obtenir l’empreinte ou le pin SPKI d’un certificat pour configurer le certificate pinning d’une application mobile ou valider un certificat client.
Questions fréquentes
Est-il sûr de coller ma clé privée ici ?
La clé est traitée avec l’API Web Crypto dans votre navigateur et n’est envoyée à aucun serveur ; vous pouvez le vérifier dans l’onglet Réseau des outils de développement. Néanmoins, la bonne pratique consiste à traiter toute clé de production comme un secret : ne la collez que dans des outils de confiance et fermez l’onglet une fois terminé.
Quelle est la différence entre PEM, DER, CRT, CER, P7B et PFX ?
DER est le certificat en binaire et PEM est ce même binaire en Base64 entre des lignes BEGIN et END. Les extensions .crt et .cer n’indiquent pas le format : elles peuvent contenir l’un ou l’autre. Un .p7b est un paquet PKCS#7 contenant plusieurs certificats et aucune clé. Un .pfx ou .p12 est un PKCS#12 : il regroupe le certificat, les intermédiaires et la clé privée, chiffrés par un mot de passe.
Comment savoir s’il manque l’intermédiaire sur mon serveur ?
Collez ce qui est configuré sur le serveur. Si la chaîne se termine par un certificat qui n’est pas autosigné, il manque un maillon : son extension Authority Information Access indique généralement, dans CA Issuers, l’adresse pour télécharger l’émetteur. Les navigateurs de bureau vont parfois le chercher eux-mêmes, mais pas Android, curl ni la plupart des bibliothèques : l’erreur n’apparaît donc que chez certains clients.
Quelle est la durée maximale d’un certificat TLS public ?
Depuis septembre 2020, les navigateurs rejettent les certificats de plus de 398 jours. En 2025, le CA/Browser Forum a approuvé une réduction progressive du maximum : 200 jours pour les certificats émis à partir du 15 mars 2026, 100 jours à partir de mars 2027 et 47 jours à partir de mars 2029. C’est pourquoi il est conseillé d’automatiser le renouvellement avec ACME. Les CA internes d’une entreprise ne sont pas soumises à cette limite.
RSA ou ECDSA pour la CSR ?
ECDSA P-256 offre une sécurité comparable à RSA 3072 bits avec une clé et des signatures bien plus petites, et le serveur effectue la poignée de main (handshake) plus rapidement. Tous les navigateurs et systèmes actuels le prennent en charge. RSA 2048 reste le choix sûr si vous avez des clients très anciens, des équipements embarqués ou un système qui n’accepte que RSA.
Suffit-il de mettre le domaine dans le nom commun (CN) ?
Non. Depuis Chrome 58, en 2017, les navigateurs ne regardent que les noms alternatifs (SAN) et ignorent le CN. Chaque domaine pour lequel le certificat sera utilisé, y compris celui du CN, doit figurer dans la liste des SAN. Un joker comme *.example.com ne couvre qu’un seul niveau : il convient pour www.example.com, mais pas pour example.com ni pour a.b.example.com.