Kostenloser RSA-Schlüsselpaar-Generator — ECDSA, Ed25519
RSA-Schlüsselpaar online erzeugen — der private Schlüssel bleibt im Browser. RSA 2048/4096, ECDSA, Ed25519 als PKCS#8- oder PKCS#1-PEM, mit JWK und Fingerprint.
PKCS#8 (BEGIN PRIVATE KEY) ist der moderne Standard und das, was das JDK erwartet. PKCS#1 (BEGIN RSA PRIVATE KEY) ist die traditionelle Form von OpenSSL, die manche Gateways weiterhin verlangen. Das Umschalten codiert denselben Schlüssel neu.
Halte ihn geheim. Wer ihn besitzt, kann sich als du ausgeben.
Dieselbe Art Schlüsselpaar mit OpenSSL erzeugen
Unser Team prüft die Umrechnung von PKCS#8 nach PKCS#1 Byte für Byte gegen die Referenzausgabe des crypto-Moduls von Node, sodass ein hier exportierter Schlüssel identisch mit dem ist, den OpenSSL aus demselben Material erzeugen würde.
Was ist ein RSA-Schlüsselgenerator?
Ein RSA-Schlüsselgenerator erzeugt ein mathematisch verbundenes Paar: einen privaten Schlüssel, den du behältst, und einen öffentlichen Schlüssel, den du weitergibst. Was mit der privaten Hälfte signiert wurde, lässt sich mit der öffentlichen prüfen, und nur die öffentliche Hälfte darf veröffentlicht werden. Genau diese Asymmetrie ist der Sinn der Sache — sie erlaubt einem Prüfer, deine Signaturen zu kontrollieren, ohne selbst welche fälschen zu können; ein gemeinsames Secret kann das nie leisten.
Dieser Generator läuft in deinem Browser über die Web Crypto API, der private Schlüssel entsteht also im Tab, und die Seite stellt beim Erzeugen keine Netzwerkanfrage. Neben RSA erzeugt sie auch ECDSA- und Ed25519-Paare, die denselben Zweck mit viel kürzeren Schlüsseln erfüllen: Ein privater Ed25519-Schlüssel ist in PKCS#8 48 Byte groß, während ein 2048-Bit-RSA-Schlüssel über 1,2 KB kommt.
Was in der Praxis stolpern lässt, ist nicht die Mathematik, sondern die Verpackung. Derselbe Schlüssel kann als PKCS#8, PKCS#1, SPKI oder JWK geschrieben werden, und eine Bibliothek, die das eine ablehnt, akzeptiert oft das andere — ohne deutlichere Meldung als einen Parse-Fehler. Die Tabelle weiter unten ordnet jedem Container die Ökosysteme zu, die ihn erwarten.
// Verify a downloaded key pair matches, using OpenSSL: openssl pkey -in rsa-2048-private.pem -pubout | diff - rsa-2048-public.pem // No output means the public key really belongs to that private key.
Hauptfunktionen
Im Browser erzeugt
Die Schlüssel kommen aus der Web Crypto API in deinem eigenen Tab, und die Seite stellt beim Erzeugen keine Netzwerkanfrage. Schalte die Verbindung ab und es funktioniert weiter — das zeigt, dass das Tool für seine Arbeit keinen Server braucht.
RSA, ECDSA und Ed25519
RSA mit 2048, 3072 und 4096 Bit; ECDSA auf P-256, P-384 und P-521; dazu Ed25519 — alles auf einer Seite mit denselben Exportoptionen.
Ausgabe als PKCS#8 und PKCS#1
Wechsle zwischen BEGIN PRIVATE KEY und der traditionellen Form BEGIN RSA PRIVATE KEY, ohne OpenSSL zu bemühen. Das Umschalten codiert den bereits angezeigten Schlüssel neu, es bleibt also derselbe Schlüssel.
JWK-Export
Beide Hälften stehen als JSON Web Key bereit. Der öffentliche JWK ist das, was in ein JWKS-Dokument oder zu einem JOSE-Prüfer gehört; der private JWK ist allein für deinen Signierer und darf nie veröffentlicht werden.
SHA-256-Fingerprint
Zu jedem Paar gehört ein Fingerprint des öffentlichen Schlüssels, damit beide Seiten außerhalb der Leitung prüfen können, dass sie denselben Schlüssel halten.
Passende OpenSSL-Befehle
Unter der Ausgabe stehen die Befehle, mit denen du lokal denselben Schlüsseltyp erzeugst — falls du lieber auf der Kommandozeile weiterarbeitest.
Downloads mit sprechenden Namen
Die Dateien werden als rsa-2048-private.pem und rsa-2048-public.pem gespeichert, nicht unter einem generischen Namen, den du erst umbenennen musst.
Kein Konto, kein Limit
Es ist kein Server beteiligt, also gibt es nichts zu registrieren und kein Kontingent, das ausgehen könnte.
Durchgearbeitete Beispiele
Ein Ed25519-Paar, vollständig gezeigt
Algorithmus: Ed25519
-----BEGIN PRIVATE KEY----- MC4CAQAwBQYDK2VwBCIEIA2HJVU1qChbOJN8XksXVhyD0IjYVt0UU6Mwz814rOFf -----END PRIVATE KEY----- -----BEGIN PUBLIC KEY----- MCowBQYDK2VwAyEAV5uB7UaPJrtncx3SXNtNzn1ZXjF1ApwvzBZ8nFzT5eU= -----END PUBLIC KEY-----
Ein privater Ed25519-Schlüssel ist in PKCS#8 48 Byte groß, der öffentliche 44 Byte — deshalb passt jedes PEM in eine einzige base64-Zeile. Das hier ist ein Wegwerf-Beispielpaar: Erzeuge dein eigenes, statt dieses zu kopieren.
PKCS#8 und PKCS#1 unterscheiden sich im Header
Algorithmus: RSA 2048, Struktur umgeschaltet
PKCS#8: -----BEGIN PRIVATE KEY----- PKCS#1: -----BEGIN RSA PRIVATE KEY-----
Derselbe Schlüssel, zwei Hüllen. PKCS#8 legt einen Algorithmus-Identifier um die RSA-Struktur — deshalb trägt es jeden Algorithmus, während PKCS#1 nur für RSA existiert. Das Umschalten codiert den bereits angezeigten Schlüssel neu, der Fingerprint ändert sich also nicht.
Öffentlicher RSA-2048-Schlüssel
Algorithmus: RSA 2048
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtuvUHLjyK9zje2aaNIni eSccN1uleXFRBb1g2TN6bk/fbpPCGDyh71m73oB9Bk8+fKVkSThXyWTtpgblB7pX iQBtTvSWVZGHprkLgMGkU2Yw8Z43m1WpoRuYyXNFe92S5viIdVuKTj/VEUuEpzHd ffWMIUw70LaUdTP04iQdkNVeS3M6VHkpTwsPSQfsFSwObtLVNy2Lf+ODwJRqCk2r C749hgKqBdJqkcIj49R7UP4SMQ/9V3yy8DFMrIcgsjC4tHwlQSCGeXNxTNlapGSa ke55LUR83FASryVJRbUs678SCZSFkyGcT0qLZ/olu/e7Jj2lB0Qy/SJawkrs9hPE 4QIDAQAB -----END PUBLIC KEY-----
Das Präfix MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A ist der rsaEncryption-Algorithmus-Identifier — daran erkennst du einen RSA-SPKI-Schlüssel auf einen Blick.
Öffentlicher Schlüssel als JWK
Algorithmus: Ed25519, JWK-Panel
{
"key_ops": [
"verify"
],
"ext": true,
"alg": "Ed25519",
"crv": "Ed25519",
"x": "V5uB7UaPJrtncx3SXNtNzn1ZXjF1ApwvzBZ8nFzT5eU",
"kty": "OKP"
} Das ist der Export im Wortlaut, samt der Felder key_ops und ext, die Web Crypto immer hinzufügt. Ein JWKS-Eintrag will sie nicht — lösche beide und ergänze stattdessen kid und use, damit Prüfer bei einer Rotation den richtigen Schlüssel auswählen können. Ed25519 landet im Schlüsseltyp OKP; RSA-Schlüssel erscheinen als kty RSA mit den Feldern n und e.
SHA-256-Fingerprint
Algorithmus: Ed25519
SHA256(SPKI) = KAXVxapxpG4zLsTVMpPafovT+X1NLWc8fsOXqtrb59o=
Ein SHA-256-Digest der öffentlichen Schlüsselstruktur, kurz genug, um ihn am Telefon vorzulesen. Beachte: Das ist nicht der Wert, den ssh-keygen ausgibt — OpenSSH bildet den Hash über sein eigenes Übertragungsformat, deshalb stimmen die beiden für denselben Schlüssel nie überein.
So nutzt du den RSA-Schlüsselgenerator
- 1
Den Algorithmus wählen
RSA deckt die größte Bandbreite an Altsystemen ab. ECDSA erreicht dieselbe Stärke mit deutlich kürzeren Schlüsseln. Ed25519 ist der moderne Standard für neue Signieraufgaben.
- 2
Die Schlüssellänge wählen
RSA 2048 erfüllt die aktuellen Empfehlungen; 3072 und 4096 geben langlebigen Schlüsseln Reserve. ECDSA bietet P-256, P-384 und P-521. Ed25519 hat genau eine Größe.
- 3
Die PEM-Struktur festlegen
PKCS#8 gibt BEGIN PRIVATE KEY aus und funktioniert fast überall, auch im JDK. Wechsle nur dann zu PKCS#1, wenn etwas ausdrücklich BEGIN RSA PRIVATE KEY verlangt.
- 4
Beide Hälften kopieren oder herunterladen
Der private Schlüssel gehört in deinen Secrets-Speicher. Den öffentlichen Schlüssel bekommt, wer deine Signaturen prüft. Verschicke die private Hälfte niemals.
- 5
Den Fingerprint abgleichen
Vergleiche den SHA-256-Fingerprint über einen zweiten Kanal, um zu bestätigen, dass die Gegenseite genau den öffentlichen Schlüssel eingespielt hat, den du erzeugt hast.
Häufige Fehler bei Schlüsselformaten
Den öffentlichen Schlüssel dort eingefügt, wo der private hingehört
Zum Signieren braucht es die private Hälfte. Bekommt eine Bibliothek BEGIN PUBLIC KEY, wo sie einen privaten Schlüssel erwartet, meldet sie meist einen nichtssagenden Parse-Fehler statt des eigentlichen Problems.
-----BEGIN PUBLIC KEY-----
-----BEGIN PRIVATE KEY-----
Falsche PEM-Struktur für die Bibliothek
Nur wenige Ökosysteme lesen ausschließlich das traditionelle RSA-Layout — die -traditional-Ausgabe von OpenSSL selbst, manche Payment-Gateway-SDKs, ältere Ruby- und Perl-Werkzeuge. Die meisten modernen Bibliotheken und insbesondere das JDK erwarten PKCS#8. Schalte die PEM-Struktur um, statt nach einem Konvertierungsbefehl zu suchen.
-----BEGIN RSA PRIVATE KEY-----
-----BEGIN PRIVATE KEY-----
Den abschließenden Zeilenumbruch verloren
PEM-Dateien enden mit einem Zeilenumbruch nach dem letzten Trenner. Kopieren durch ein Formularfeld, das Leerraum abschneidet, erzeugt eine Datei, die manche Parser rundweg ablehnen — und weil das fehlende Zeichen unsichtbar ist, sieht die Datei im Editor korrekt aus.
-----END PRIVATE KEY-----[EOF]
-----END PRIVATE KEY-----↵[EOF]
Ein Zeichen auf dem Transportweg verloren
Ein PEM zerbricht an einem verlorenen, eingefügten oder ersetzten Zeichen, nicht an der Zeilenbreite — die meisten Parser akzeptieren jeden Umbruch. Eine Kopie durch einen Chat-Client oder ein Formularfeld kann einen Zeilenumbruch stillschweigend in ein Leerzeichen verwandeln, und base64 verrät nicht, welches Zeichen danebenging; der Schlüssel lädt einfach nicht. Nimm den Kopieren-Button, statt von Hand zu markieren.
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtuvUHLjyK9zje2aaNIni eSccN1uleXFRBb1g2TN6bk
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtuvUHLjyK9zje2aaNIni eSccN1uleXFRBb1g2TN6bk
Ein HS256-Secret verwendet, wo RS256 konfiguriert ist
HS256 nimmt ein einzelnes gemeinsames Secret, RS256 ein Schlüsselpaar. Eine Zufallszeichenkette an einen RS256-Signierer zu geben scheitert schon beim Parsen. Erzeuge hier das Paar — oder nutze unseren JWT-Secret-Generator, falls du HS256 meintest.
alg: RS256, key: 8f3a9c2e1b7d
alg: RS256, key: -----BEGIN PRIVATE KEY-----
Ein PEM in authorized_keys eingefügt
Ein öffentlicher SSH-Schlüssel ist die einzeilige OpenSSH-Form ssh-ed25519 AAAA…, kein PEM-Block; den öffentlichen Schlüssel dieser Seite in authorized_keys zu kopieren funktioniert also nicht. Bei einem RSA-Schlüssel leitest du die richtige Zeile lokal mit ssh-keygen -y ab; für SSH-Zugriff allgemein ist es noch besser, direkt auf der Zielmaschine zu erzeugen.
-----BEGIN PUBLIC KEY-----
ssh-keygen -y -f rsa-2048-private.pem > id_rsa.pub
Wer dieses Tool nutzt
- JWTs mit RS256 oder EdDSA signieren
- Asymmetrische JWT-Algorithmen brauchen ein Schlüsselpaar statt eines gemeinsamen Secrets. Signiere mit dem privaten Schlüssel, veröffentliche den öffentlichen, und Prüfer halten nie etwas in der Hand, womit sie selbst Tokens ausstellen könnten. Unser JWT-Kodierer nimmt die Schlüssel dieser Seite direkt an.
- Webhooks und Releases signieren
- Veröffentliche den öffentlichen Schlüssel einmal, signiere jede Nutzlast mit dem privaten, und Konsumenten prüfen die Echtheit ohne gemeinsames Geheimnis, das leaken könnte.
- Lokale Entwicklung und Tests
- Testsuites, die Signaturprüfung durchspielen, brauchen ein Wegwerf-Schlüsselpaar. Hier eines zu erzeugen geht schneller, als sich den OpenSSL-Aufruf zu merken.
- Verstehen, wie ein Schlüsselpaar aussieht
- Algorithmen und PEM-Strukturen nebeneinander umzuschalten macht die Unterschiede so greifbar, wie es keine Spezifikation schafft.
- Einen JWKS-Endpunkt vorbereiten
- Der öffentliche JWK passt unverändert in das keys-Array eines OpenID-Connect-Discovery-Dokuments. Ergänze eine kid, damit Prüfer ihn bei einer Rotation auswählen können, und halte den privaten JWK aus dieser Datei heraus.
- Weg von RSA migrieren
- Erzeuge den Ed25519-Ersatz direkt neben dem RSA-Original und vergleiche die Größen, bevor du dich auf den Wechsel festlegst.
- Ein Formatproblem beheben
- Wenn eine Bibliothek einen Schlüssel mit Parse-Fehler ablehnt, ist ein erneutes Ausgeben in der jeweils anderen PEM-Struktur meist schon die ganze Lösung.
PEM-Formate und wie der Generator arbeitet
- Welcher Container wohin gehört
- Ein Schlüssel, fünf Verpackungen. Die falsche zu wählen ist der häufigste Grund, warum ein Schlüssel abgelehnt wird, und die Fehlermeldung ist selten konkreter als ein gescheitertes Parsen.
Um bereits vorhandene Dateien umzuwandeln, gehtContainer PEM-Header Enthält Wo er dir begegnet PKCS#8 BEGIN PRIVATE KEY Jeden Algorithmus Web Crypto, das JDK, Go, .NET — die meisten modernen Bibliotheken PKCS#1 BEGIN RSA PRIVATE KEY Nur RSA Traditionelle OpenSSL-Ausgabe, manche Payment-Gateways, ältere Ruby- und Perl-Werkzeuge SPKI / X.509 BEGIN PUBLIC KEY Jeden Algorithmus, öffentliche Hälfte Der öffentliche Schlüssel, den fast jede Bibliothek erwartet PKCS#1 public BEGIN RSA PUBLIC KEY Nur RSA, öffentliche Hälfte Alte RSA-Werkzeuge JWK keiner — es ist JSON Jeden Algorithmus JWKS-Endpunkte, OIDC-Discovery, JOSE-Bibliotheken openssl pkcs8 -topk8 -nocrypt -in pkcs1.pem -out pkcs8.pemin die eine Richtung undopenssl rsa -traditional -in pkcs8.pem -out pkcs1.pemin die andere. - Die Zufälligkeit stammt vom Betriebssystem
- Web Crypto speist die Schlüsselerzeugung aus der Entropiequelle der Plattform — getrandom unter Linux und dem System-CSPRNG unter Windows und macOS. Es ist dieselbe Art Quelle, aus der auch OpenSSL schöpft, kein JavaScript-Pseudozufallsgenerator.
- Die Erzeugung friert die Seite nicht ein
- crypto.subtle.generateKey arbeitet asynchron, und in den großen Browser-Engines läuft die Suche nach Primzahlen außerhalb des Haupt-Threads, sodass die Oberfläche bedienbar bleibt, während ein 4096-Bit-Modul gesucht wird. Ein Spinner erscheint trotzdem, denn wie lange diese Suche dauert, ist Glückssache.
- PKCS#8 umschließt PKCS#1
- Ein PKCS#8-PrivateKeyInfo besteht aus Versionsnummer, Algorithmus-Identifier und einem OCTET STRING. Bei einem unverschlüsselten rsaEncryption-Schlüssel enthält dieser OCTET STRING einen vollständigen PKCS#1-RSAPrivateKey — genau so rechnet diese Seite zwischen beiden um, ohne irgendetwas neu abzuleiten.
- Öffentliche Schlüssel nutzen SubjectPublicKeyInfo
- BEGIN PUBLIC KEY ist ein X.509-SubjectPublicKeyInfo: ein Algorithmus-Identifier plus ein BIT STRING. Was in diesen Bits steckt, hängt vom Algorithmus ab — bei RSA ist es ein PKCS#1-RSAPublicKey, weshalb BEGIN RSA PUBLIC KEY kürzer ausfällt; bei ECDSA ist es der unkomprimierte Kurvenpunkt und bei Ed25519 der rohe 32-Byte-Schlüssel.
- Der öffentliche Exponent ist 65537
- Jeder RSA-Schlüssel hier verwendet e = 65537, geschrieben 0x010001. Er ist groß genug, um Angriffe auf kleine Exponenten auszuschließen, und hat nur zwei gesetzte Bits, sodass die Prüfung 16 Quadrierungen und eine einzige Multiplikation kostet.
- Fingerprints bilden den Digest über das DER, nicht über das PEM
- Der SHA-256-Fingerprint wird über das binäre SubjectPublicKeyInfo gebildet. Über den base64-Text gebildet, würde er sich ändern, sobald sich der Zeilenumbruch ändert. Lokal entspricht dem
openssl pkey -in private.pem -pubout -outform DER | openssl dgst -sha256 -binary | openssl base64.
Best Practices für die Schlüsselverwaltung
- Schlüssel dort erzeugen, wo sie verwendet werden
- Ein privater Schlüssel, der über ein Netz wandert, war jedem Zwischenknoten ausgesetzt. Die Erzeugung im Browser hält den Schlüssel selbst vom Netz fern, auch wenn der Code der Seite weiterhin über das Netz kommt; die Erzeugung direkt auf dem Zielhost spart sogar den Kopierschritt. Für einen Schlüssel, der Produktionssysteme schützt, nimm den Host.
- Ed25519 bevorzugen, solange nichts RSA erzwingt
- Ed25519 liefert starke Sicherheit in einem 32-Byte-Schlüssel, signiert schnell und hat keine Parameter, die man falsch wählen könnte. Greif zu RSA, wenn eine Gegenstelle oder eine alte Bibliothek dir keine Wahl lässt.
- 2048 Bit als Untergrenze behandeln
- NIST SP 800-131A verbietet RSA unterhalb von 2048 Bit für die Signaturerzeugung seit 2013, und keine öffentliche Zertifizierungsstelle stellt gegen einen kleineren Schlüssel aus. Wähle 3072 oder 4096 für Schlüssel, die viele Jahre im Einsatz bleiben sollen.
- Niemals einen privaten Schlüssel committen
- Private Schlüssel gehören in einen Secrets-Manager oder in eine zur Laufzeit geladene Umgebungsvariable. Sobald ein Schlüssel in einem Repository gelandet ist, hilft nur noch, ihn auszutauschen.
- Nach Plan rotieren, nicht erst nach einem Vorfall
- Veröffentliche neue öffentliche Schlüssel mit einer Schlüsselkennung, bevor du die alten zurückziehst, damit Prüfer während der Überlappung beide akzeptieren. Routiniert geübte Rotation ist die Rotation, die unter Druck funktioniert.
Häufig gestellte Fragen
Ist es sicher, einen privaten Schlüssel auf einer Website zu erzeugen?
Was ist der Unterschied zwischen PKCS#8 und PKCS#1?
Wie konvertiere ich einen PKCS#1-Schlüssel nach PKCS#8 und zurück?
Wie komme ich vom privaten RSA-Schlüssel zum öffentlichen?
Soll ich RSA oder Ed25519 wählen?
Ist RSA mit 2048 Bit noch stark genug?
Kann ich diese Schlüssel zum Signieren von JWTs verwenden?
Kann das einen SSH-Schlüssel erzeugen?
Kann ich den privaten Schlüssel mit einer Passphrase schützen?
Wofür ist der Fingerprint gut?
Verwandte Werkzeuge
Alle Werkzeuge anzeigen →AES-Entschlüsselungstool — OpenSSL- & CryptoJS-kompatibel
Sicherheitswerkzeuge
AES online entschlüsseln — GCM/CBC/CTR, Passphrase oder Rohschlüssel, erkennt automatisch das OpenSSL- & CryptoJS-Format „U2FsdGVkX1“. 100 % im Browser, Schlüssel verlassen die Seite nie.
AES-Verschlüsselungstool — GCM, CBC & CTR
Sicherheitswerkzeuge
Kostenloses Online-Tool für AES-Verschlüsselung — AES-128/192/256, GCM/CBC/CTR, Passphrase (PBKDF2) oder Rohschlüssel. Läuft zu 100 % im Browser; nichts wird hochgeladen.
Bcrypt-Hash-Generator & Verifizierer
Sicherheitswerkzeuge
Bcrypt-Passwort-Hashes online erzeugen und prüfen — einstellbarer Kostenfaktor, $2b$/$2a$/$2y$. 100 % im Browser; dein Passwort wird nie hochgeladen.
HMAC-Generator & Signaturprüfer
Sicherheitswerkzeuge
Kostenloser HMAC-Generator und -Prüfer online. Berechne HMAC-SHA256/SHA1/SHA384/SHA512 mit Schlüsseln als Text, Hex oder Base64 und Ausgabe als Hex/Base64/Base64URL. 100 % in deinem Browser — Schlüssel verlassen nie die Seite.
JWT-Dekodierer
Sicherheitswerkzeuge
Dekodieren Sie JWT-Token online mit unserem kostenlosen JWT-Dekodierer. Inspizieren Sie sofort Header, Payload, Signatur, Ablauf und Claims. 100 % Browser — Ihr Token verlässt niemals Ihr Gerät. Keine Anmeldung, kein Tracking.
JWT-Kodierer & -Generator
Sicherheitswerkzeuge
Kostenloser Online-JWT-Generator & -Kodierer. Erstellen Sie Header und Payload und signieren Sie sofort mit HS256, RS256 oder ES256. 100 % im Browser — Ihr Geheimnis und Ihr Schlüssel verlassen niemals Ihr Gerät.