Extracteur de clé publique
Extraire la clé publique d’un certificat ou d’un CSR
Certificate, CSR, or Public Key
Extracted Public Key
Paste a certificate or CSR to extract the public key
L'outil Public Key Extractor isole la clé publique à partir de certificats X.509 ou de demandes de signature de certificat (CSR), en la produisant au format standard PEM SubjectPublicKeyInfo (SPKI) -- essentiel pour la vérification de correspondance de clés, le key pinning et la confirmation qu'un certificat a été émis pour la bonne clé privée. Collez un certificat ou une CSR et obtenez la clé publique extraite avec l'algorithme, la taille et le hash SPKI.
Comprendre l'extraction de clé publique
Chaque certificat et CSR contient une clé publique, mais cette clé est enfouie dans une structure de données plus large avec le nom du sujet, l'émetteur, les dates de validité, les extensions et les signatures. Parfois vous avez besoin uniquement de la clé elle-même -- débarrassée de toutes les métadonnées du certificat environnant. C'est ce que fait l'extraction de clé publique : elle extrait la structure SubjectPublicKeyInfo (SPKI) qui contient l'identifiant d'algorithme de clé et les données de la clé, et la présente comme un bloc PEM autonome.
La raison la plus pratique d'extraire une clé publique est de vérifier qu'un certificat, une CSR et une clé privée appartiennent tous au même ensemble. Lorsque vous générez une paire de clés, la clé privée et le certificat émis à partir de celle-ci doivent contenir la même clé publique. S'ils ne correspondent pas -- parce que quelqu'un a mélangé les fichiers ou que la mauvaise CSR a été soumise -- votre serveur TLS échouera au démarrage avec une erreur cryptique de non-correspondance de clé. Extraire la clé publique de chaque fichier et comparer les hash SPKI est le moyen le plus rapide de confirmer qu'ils forment un ensemble cohérent.
L'extraction de clé publique est également au coeur du public key pinning. Contrairement au certificate pinning, qui associe un certificat spécifique (et cesse de fonctionner au renouvellement), le public key pinning associe la clé elle-même. Tant que vous réutilisez la même paire de clés lors du renouvellement, le pin reste valide. Les applications mobiles, les clients API et les services sensibles à la sécurité utilisent couramment les hash SPKI pour le pinning, et cet outil fournit ces hash dans le format correct pour Android, iOS et les implémentations personnalisées.
Comment extraire une clé publique d'un certificat
- Collez un certificat encodé en PEM (
-----BEGIN CERTIFICATE-----) ou un CSR (-----BEGIN CERTIFICATE REQUEST-----) - L'outil extrait la clé publique au format PEM SPKI
- Examinez les métadonnées de la clé (algorithme, taille, hash)
- Copiez la clé publique extraite ou utilisez le hash pour comparaison
Exemple d'extraction de clé publique
À partir d'un certificat avec CN=www.example.com :
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzR4p3vGh8Kx2...
...truncated...
-----END PUBLIC KEY-----
Key Metadata:
Algorithm: RSA
Key Size: 2048 bits
SPKI Hash: sha256/YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=
Types de clés et leur sortie
| Algorithme | Tailles typiques | Format de sortie |
|---|---|---|
| RSA | 2048, 3072, 4096 bits | PKCS#1 encapsulé dans SPKI |
| ECDSA | P-256 (256 bits), P-384 (384 bits) | Point EC dans SPKI |
| Ed25519 | 256 bits (fixe) | Clé brute dans SPKI |
Comment vérifier la correspondance certificat / clé privée
L'utilisation la plus courante des clés publiques extraites est de vérifier qu'un certificat a été émis pour une clé privée spécifique. Deux méthodes :
Méthode 1 : comparer les hash SPKI
Extrayez la clé publique à la fois du certificat et du fichier de clé privée, puis comparez leurs hash SHA-256 SPKI :
# Depuis le certificat (avec cet outil ou OpenSSL) :
openssl x509 -in cert.pem -pubkey -noout | openssl pkey -pubin -outform DER | openssl dgst -sha256
# Sortie : sha256=YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=
# Depuis la clé privée :
openssl pkey -in key.pem -pubout -outform DER | openssl dgst -sha256
# Sortie : sha256=YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=
Si les hash correspondent, le certificat et la clé privée forment une paire valide.
Méthode 2 : comparer le modulus (RSA uniquement)
Pour les clés RSA, comparez les valeurs du modulus :
openssl x509 -in cert.pem -noout -modulus | openssl md5
openssl rsa -in key.pem -noout -modulus | openssl md5
Des hash MD5 identiques confirment que la paire de clés correspond.
Quand utiliser cet outil
- Vérification de correspondance de clés avant déploiement -- vérifiez que votre certificat, votre CSR et votre clé privée partagent tous la même clé publique avant de configurer un serveur
- Public key pinning -- extrayez le hash SPKI pour implémenter le HTTP Public Key Pinning (HPKP) ou le pinning au niveau applicatif dans les applications Android/iOS
- Vérification de renouvellement de certificat -- confirmez si un certificat renouvelé utilise la même paire de clés ou une nouvelle
- Comparaison entre CA -- comparez des certificats émis par différentes CA pour la même paire de clés (par ex. lors d'une migration d'une CA à une autre)
- Suivi de la rotation des clés -- documentez les hash de clés publiques au fil du temps pour tracer les rotations de clés
- Analyse forensique -- déterminez si deux certificats de sources différentes partagent la même paire de clés sous-jacente
Différence entre le pinning de certificat et le pinning de clé publique
| Aspect | Pinning de certificat | Pinning de clé publique |
|---|---|---|
| Ce qui est épinglé | Hash du certificat entier | Hash de la clé publique (SPKI) |
| Survit au renouvellement | Non (nouveau cert = nouveau hash) | Oui, si la même clé est réutilisée |
| Granularité | Certificat exact uniquement | Tout certificat avec cette clé |
| Pins de secours | Doivent épingler des certificats de secours | Peuvent épingler des clés de secours |
| Format courant | SHA-256 du certificat DER | SHA-256 du SPKI DER |
Le pinning de clé publique est généralement préféré car il permet le renouvellement de certificat sans mettre à jour les pins, tant que la même paire de clés est réutilisée. Cependant, certaines politiques de sécurité exigent une rotation de clés à chaque renouvellement, auquel cas le pinning de certificat offre un contrôle plus strict.
Extraction de clés en pratique
Le cas d'usage le plus important de l'extraction de clé est la vérification pré-déploiement qui prévient la redoutée erreur « key mismatch ». Avant d'installer un nouveau certificat sur un serveur de production, extrayez la clé publique de trois sources : le certificat, la CSR qui a été soumise et la clé privée sur le serveur. Les trois hash SPKI doivent correspondre. Si le hash du certificat ne correspond pas au hash de la clé privée, le certificat a été émis pour une paire de clés différente et ne peut pas être utilisé avec cette clé privée. Cette vérification prend quelques secondes et évite le processus bien plus douloureux de découvrir la non-correspondance pendant une fenêtre de maintenance à 2 heures du matin.
Pour le public key pinning dans les applications mobiles, le workflow est direct : extrayez le hash SPKI du certificat de votre serveur avec cet outil, puis intégrez ce hash dans la configuration de pinning de votre application. Sur Android, cela va dans network-security-config.xml ; sur iOS, vous l'implémentez dans votre URLSessionDelegate. Incluez toujours au moins deux pins -- la clé actuelle et une clé de secours que vous avez générée mais pas encore déployée. Sans pin de secours, une rotation de clé force une mise à jour d'urgence de l'application avant que les utilisateurs puissent se connecter.
Pour suivre les rotations de clés dans votre infrastructure, tenez un journal des hash SPKI pour chaque endpoint de service. Après un renouvellement de certificat, extrayez la clé publique et comparez-la au hash précédent. Si le hash a changé, le renouvellement incluait une rotation de clé. Si le hash est le même, la même clé a été réutilisée. Cette information est importante pour les audits de conformité qui exigent une rotation périodique des clés et pour les équipes de sécurité qui suivent le cycle de vie du matériel cryptographique.
Questions fréquentes
Qu'est-ce que SubjectPublicKeyInfo (SPKI) ?
SPKI est la structure ASN.1 définie dans la RFC 5280 qui encapsule une clé publique avec son identifiant d'algorithme. Elle inclut l'algorithme de la clé (RSA, ECDSA, etc.) et les données de la clé elle-même. Le format PEM -----BEGIN PUBLIC KEY----- contient du SPKI encodé en DER. Ce format est universellement compris par OpenSSL, Java, .NET et la plupart des bibliothèques cryptographiques.
Puis-je extraire une clé publique à partir d'une clé privée ?
Cet outil fonctionne avec les certificats et les CSR. Pour extraire la clé publique d'un fichier de clé privée, utilisez OpenSSL : openssl pkey -in private.key -pubout -out public.pem. La clé publique résultante sera au même format SPKI et pourra être comparée avec les clés extraites de certificats à l'aide de cet outil.
Comment utiliser la clé extraite pour le certificate pinning Android ?
Le fichier network-security-config.xml d'Android utilise des hash SHA-256 encodés en base64 de l'encodage DER SPKI. Cet outil fournit le hash dans le format correct. Ajoutez-le à votre configuration : <pin digest="SHA-256">YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=</pin>.
Pourquoi deux certificats avec des dates d'expiration différentes ont-ils le même hash de clé publique ? Parce que le pinning de clé publique ne hache que le matériel de clé et l'algorithme, pas les métadonnées du certificat. Si vous avez renouvelé un certificat en réutilisant la même paire de clés, le nouveau certificat aura des dates de validité, un numéro de série et une signature différents, mais la clé publique -- et donc le hash SPKI -- sera identique.
Est-il sûr de partager ma clé publique ? Oui. Les clés publiques sont conçues pour être partagées librement. Elles sont incluses dans chaque certificat que votre serveur présente lors des handshakes TLS, donc toute personne qui se connecte à votre serveur possède déjà votre clé publique. C'est la clé privée qui doit rester secrète.
Outils associés
- Certificate Fingerprint Generator - Générer des empreintes au niveau certificat (différentes des hash de clé publique)
- X.509 Certificate Viewer - Voir les détails complets du certificat, y compris l'algorithme et la taille de la clé
- CSR Viewer - Inspecter le CSR utilisé pour demander le certificat
- SAN Extractor - Extraire les noms de domaine couverts par le certificat
- PEM Bundle Splitter - Séparer une chaîne pour extraire des certificats individuels pour la comparaison de clés