Oeffentlicher-Schluessel-Extraktor
Oeffentlichen Schluessel aus Zertifikat oder csr extrahieren
Certificate, CSR, or Public Key
Extracted Public Key
Paste a certificate or CSR to extract the public key
Der Public Key Extractor isoliert den öffentlichen Schlüssel aus X.509-Zertifikaten oder Certificate Signing Requests und gibt ihn im Standard-PEM-SubjectPublicKeyInfo-(SPKI)-Format aus -- unverzichtbar für die Überprüfung der Schlüsselübereinstimmung, Public Key Pinning und die Bestätigung, dass ein Zertifikat für den richtigen privaten Schlüssel ausgestellt wurde. Fügen Sie ein Zertifikat oder einen CSR ein und erhalten Sie den extrahierten öffentlichen Schlüssel mit Algorithmus, Größe und SPKI-Hash.
Public-Key-Extraktion verstehen
Jedes Zertifikat und jeder CSR enthält einen öffentlichen Schlüssel, aber dieser Schlüssel ist in einer größeren Datenstruktur zusammen mit dem Subject-Namen, Issuer, Gültigkeitsdaten, Erweiterungen und Signaturen eingebettet. Manchmal braucht man nur den Schlüssel selbst -- befreit von allen umgebenden Zertifikatsmetadaten. Genau das macht die Public-Key-Extraktion: Sie zieht die SubjectPublicKeyInfo-(SPKI)-Struktur heraus, die den Schlüsselalgorithmus-Identifikator und die Schlüsseldaten enthält, und präsentiert sie als eigenständigen PEM-Block.
Der praktischste Grund für die Extraktion eines öffentlichen Schlüssels ist die Überprüfung, dass ein Zertifikat, ein CSR und ein privater Schlüssel zusammengehören. Wenn Sie ein Schlüsselpaar generieren, müssen der private Schlüssel und das daraus ausgestellte Zertifikat denselben öffentlichen Schlüssel enthalten. Wenn sie nicht übereinstimmen -- weil jemand Dateien verwechselt hat oder der falsche CSR eingereicht wurde -- wird Ihr TLS-Server mit einem kryptischen Fehler über Key-Mismatch nicht starten. Die Extraktion des öffentlichen Schlüssels aus jeder Datei und der Vergleich der SPKI-Hashes ist der schnellste Weg, um zu bestätigen, dass sie ein zusammengehörendes Set sind.
Die Public-Key-Extraktion ist auch zentral für Public Key Pinning. Anders als Certificate Pinning, das an ein bestimmtes Zertifikat pinnt (und bei der Erneuerung bricht), pinnt Public Key Pinning an den Schlüssel selbst. Solange Sie dasselbe Schlüsselpaar bei der Erneuerung wiederverwenden, bleibt der Pin gültig. Mobile Apps, API-Clients und sicherheitskritische Dienste verwenden häufig SPKI-Hashes für Pinning, und dieses Tool liefert diese Hashes im korrekten Format für Android, iOS und benutzerdefinierte Implementierungen.
So extrahieren Sie einen öffentlichen Schlüssel aus einem Zertifikat
- Fügen Sie ein PEM-kodiertes Zertifikat (
-----BEGIN CERTIFICATE-----) oder einen CSR (-----BEGIN CERTIFICATE REQUEST-----) ein - Das Tool extrahiert den öffentlichen Schlüssel im SPKI-PEM-Format
- Überprüfen Sie die Schlüsselmetadaten (Algorithmus, Größe, Hash)
- Kopieren Sie den extrahierten öffentlichen Schlüssel oder verwenden Sie den Hash zum Vergleich
Beispiel für die Public-Key-Extraktion
Aus einem Zertifikat mit 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=
Schlüsseltypen und ihre Ausgabe
| Schlüsselalgorithmus | Typische Größen | Ausgabeformat |
|---|---|---|
| RSA | 2048, 3072, 4096 Bit | PKCS#1 verpackt in SPKI |
| ECDSA | P-256 (256 Bit), P-384 (384 Bit) | EC-Punkt in SPKI |
| Ed25519 | 256 Bit (fest) | Roher Schlüssel in SPKI |
So überprüfen Sie die Übereinstimmung von Zertifikat und privatem Schlüssel
Der häufigste Einsatz extrahierter öffentlicher Schlüssel ist die Überprüfung, dass ein Zertifikat für einen bestimmten privaten Schlüssel ausgestellt wurde. Zwei Methoden:
Methode 1: SPKI-Hashes vergleichen
Extrahieren Sie den öffentlichen Schlüssel sowohl aus dem Zertifikat als auch aus der privaten Schlüsseldatei und vergleichen Sie dann ihre SPKI-SHA-256-Hashes:
# Aus dem Zertifikat (mit diesem Tool oder OpenSSL):
openssl x509 -in cert.pem -pubkey -noout | openssl pkey -pubin -outform DER | openssl dgst -sha256
# Ausgabe: sha256=YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=
# Aus dem privaten Schlüssel:
openssl pkey -in key.pem -pubout -outform DER | openssl dgst -sha256
# Ausgabe: sha256=YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=
Wenn die Hashes übereinstimmen, sind Zertifikat und privater Schlüssel ein gültiges Paar.
Methode 2: Modulus vergleichen (nur RSA)
Für RSA-Schlüssel vergleichen Sie die Modulus-Werte:
openssl x509 -in cert.pem -noout -modulus | openssl md5
openssl rsa -in key.pem -noout -modulus | openssl md5
Übereinstimmende MD5-Hashes bestätigen, dass das Schlüsselpaar zusammengehört.
Wann sollte man dieses Tool verwenden
- Schlüsselübereinstimmung vor der Bereitstellung -- überprüfen, dass Ihr Zertifikat, CSR und privater Schlüssel alle denselben öffentlichen Schlüssel teilen, bevor ein Server konfiguriert wird
- Public Key Pinning -- den SPKI-Hash für die Implementierung von HTTP Public Key Pinning (HPKP) oder App-Level-Pinning in Android/iOS-Anwendungen extrahieren
- Überprüfung der Zertifikatserneuerung -- bestätigen, ob ein erneuertes Zertifikat dasselbe Schlüsselpaar oder ein neues verwendet
- CA-übergreifender Vergleich -- Zertifikate vergleichen, die von verschiedenen CAs für dasselbe Schlüsselpaar ausgestellt wurden (z. B. bei der Migration von einer CA zu einer anderen)
- Schlüsselrotations-Tracking -- Public-Key-Hashes über die Zeit dokumentieren, um zu verfolgen, wann Schlüsselrotationen stattfinden
- Forensische Analyse -- feststellen, ob zwei Zertifikate aus verschiedenen Quellen dasselbe zugrundeliegende Schlüsselpaar teilen
Wie sich Public Key Pinning von Certificate Pinning unterscheidet
| Aspekt | Certificate Pinning | Public Key Pinning |
|---|---|---|
| Was gepinnt wird | Gesamter Zertifikats-Hash | Public-Key-(SPKI)-Hash |
| Übersteht Erneuerung | Nein (neues Zertifikat = neuer Hash) | Ja, wenn derselbe Schlüssel wiederverwendet wird |
| Granularität | Nur exaktes Zertifikat | Jedes Zertifikat mit diesem Schlüssel |
| Backup-Pins | Müssen Backup-Zertifikate pinnen | Können Backup-Schlüssel pinnen |
| Gängiges Format | SHA-256 des DER-Zertifikats | SHA-256 des SPKI-DER |
Public Key Pinning wird im Allgemeinen bevorzugt, da es die Zertifikatserneuerung ohne Aktualisierung der Pins ermöglicht, solange dasselbe Schlüsselpaar wiederverwendet wird. Einige Sicherheitsrichtlinien erfordern jedoch eine Schlüsselrotation bei jeder Erneuerung, in welchem Fall Certificate Pinning eine strengere Kontrolle bietet.
Schlüsselextraktion in der Praxis
Der wichtigste Anwendungsfall für die Schlüsselextraktion ist die Prüfung vor der Bereitstellung, die den gefürchteten "Key-Mismatch"-Fehler verhindert. Bevor Sie ein neues Zertifikat auf einem Produktionsserver installieren, extrahieren Sie den öffentlichen Schlüssel aus drei Quellen: dem Zertifikat, dem eingereichten CSR und dem privaten Schlüssel auf dem Server. Alle drei SPKI-Hashes sollten übereinstimmen. Wenn der Zertifikats-Hash nicht mit dem Hash des privaten Schlüssels übereinstimmt, wurde das Zertifikat für ein anderes Schlüsselpaar ausgestellt und kann nicht mit diesem privaten Schlüssel verwendet werden. Diese Prüfung dauert Sekunden und verhindert den weitaus schmerzhafteren Prozess, die Nichtübereinstimmung während eines Wartungsfensters um 2 Uhr morgens zu entdecken.
Für Public Key Pinning in mobilen Anwendungen ist der Workflow unkompliziert: Extrahieren Sie den SPKI-Hash aus dem Zertifikat Ihres Servers mit diesem Tool und betten Sie diesen Hash dann in die Pinning-Konfiguration Ihrer App ein. Unter Android kommt dies in die network-security-config.xml; unter iOS implementieren Sie es in Ihrem URLSessionDelegate. Fügen Sie immer mindestens zwei Pins hinzu -- den aktuellen Schlüssel und einen Backup-Schlüssel, den Sie generiert, aber noch nicht bereitgestellt haben. Ohne einen Backup-Pin erzwingt eine Schlüsselrotation ein Notfall-App-Update, bevor Benutzer eine Verbindung herstellen können.
Wenn Sie Schlüsselrotationen in Ihrer Infrastruktur verfolgen, führen Sie ein Protokoll der SPKI-Hashes für jeden Service-Endpunkt. Extrahieren Sie nach einer Zertifikatserneuerung den öffentlichen Schlüssel und vergleichen Sie ihn mit dem vorherigen Hash. Wenn sich der Hash geändert hat, beinhaltete die Erneuerung eine Schlüsselrotation. Wenn der Hash gleich ist, wurde derselbe Schlüssel wiederverwendet. Diese Information ist wichtig für Compliance-Audits, die periodische Schlüsselrotation erfordern, und für Sicherheitsteams, die den Lebenszyklus kryptografischen Materials verfolgen.
Häufig gestellte Fragen
Was ist SubjectPublicKeyInfo (SPKI)?
SPKI ist die in RFC 5280 definierte ASN.1-Struktur, die einen öffentlichen Schlüssel zusammen mit seinem Algorithmus-Identifikator umschließt. Sie enthält den Schlüsselalgorithmus (RSA, ECDSA usw.) und die Schlüsseldaten selbst. Das PEM-Format -----BEGIN PUBLIC KEY----- enthält DER-kodiertes SPKI. Dieses Format wird universell von OpenSSL, Java, .NET und den meisten kryptografischen Bibliotheken verstanden.
Kann ich einen öffentlichen Schlüssel stattdessen aus einem privaten Schlüssel extrahieren?
Dieses Tool arbeitet mit Zertifikaten und CSRs. Um den öffentlichen Schlüssel aus einer privaten Schlüsseldatei zu extrahieren, verwenden Sie OpenSSL: openssl pkey -in private.key -pubout -out public.pem. Der resultierende öffentliche Schlüssel liegt im selben SPKI-Format vor und kann mit Schlüsseln verglichen werden, die mit diesem Tool aus Zertifikaten extrahiert wurden.
Wie verwende ich den extrahierten Schlüssel für Android Certificate Pinning?
Androids network-security-config.xml verwendet Base64-kodierte SHA-256-Hashes der SPKI-DER-Kodierung. Dieses Tool liefert den Hash im korrekten Format. Fügen Sie ihn zu Ihrer Konfiguration hinzu: <pin digest="SHA-256">YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=</pin>.
Warum haben zwei Zertifikate mit unterschiedlichen Ablaufdaten denselben Public-Key-Hash? Weil Public Key Pinning nur das Schlüsselmaterial und den Algorithmus hasht, nicht die Zertifikatsmetadaten. Wenn Sie ein Zertifikat erneuert und dabei dasselbe Schlüsselpaar wiederverwendet haben, wird das neue Zertifikat andere Gültigkeitsdaten, eine andere Seriennummer und eine andere Signatur haben, aber der öffentliche Schlüssel -- und damit der SPKI-Hash -- wird identisch sein.
Ist es sicher, meinen öffentlichen Schlüssel zu teilen? Ja. Öffentliche Schlüssel sind dafür konzipiert, frei geteilt zu werden. Sie sind in jedem Zertifikat enthalten, das Ihr Server während TLS-Handshakes präsentiert, sodass jeder, der sich mit Ihrem Server verbindet, bereits Ihren öffentlichen Schlüssel hat. Der private Schlüssel ist es, der geheim gehalten werden muss.
Verwandte Tools
- Certificate Fingerprint Generator - Fingerabdrücke auf Zertifikatsebene generieren (unterscheiden sich von Public-Key-Hashes)
- X.509 Certificate Viewer - Vollständige Zertifikatsdetails einschließlich Schlüsselalgorithmus und -größe anzeigen
- CSR Viewer - Den CSR inspizieren, der zur Beantragung des Zertifikats verwendet wurde
- SAN Extractor - Vom Zertifikat abgedeckte Domainnamen extrahieren
- PEM Bundle Splitter - Eine Kette aufteilen, um einzelne Zertifikate für den Schlüsselvergleich zu extrahieren