Convert RSA public keys between various formats.
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
hauptstadtkiind 4b01b18a99 README.md aktualisiert
mit claude die Liste Welches Format braucht welche Firewall erstellt
2026-07-27 23:14:08 +02:00
.gitignore Initial commit 2014-07-19 20:53:40 -05:00
COPYING Change to WTFPLv2 2015-02-22 21:32:31 -06:00
README.md README.md aktualisiert 2026-07-27 23:14:08 +02:00
rsa-converter rsa-converter aktualisiert 2026-07-27 23:10:02 +02:00

rsa-converter

Ein kleines Perl-Skript, das RSA-Schlüssel zwischen verschiedenen gängigen Formaten konvertiert. Das Format des Eingabeschlüssels wird dabei automatisch erkannt.

Unterstützte Formate

Format Richtung Schlüsseltyp
PEM Eingabe / Ausgabe Public
Base64 (RFC 3110) Eingabe / Ausgabe Public
Hexadezimal (DER) Eingabe / Ausgabe Public
PEM Eingabe / Ausgabe Private
Racoon / strongSwan (< 5.0) Eingabe / Ausgabe Private

Voraussetzungen

  • OpenSSL
  • Perl
  • Folgende CPAN-Module:
    • Crypt::OpenSSL::RSA
    • Crypt::OpenSSL::Bignum
    • Parse::RecDescent

Installation auf Debian-basierten Systemen

apt-get install libcrypt-openssl-bignum-perl libcrypt-openssl-rsa-perl libparse-recdescent-perl

Installation über CPAN

cpan install Crypt::OpenSSL::RSA Crypt::OpenSSL::Bignum Parse::RecDescent

Nutzung

usage: ./rsa-converter [-hrdpqs] < file

 -h : zeigt diese Hilfe an
 -r : Public Key als Base64 (RFC 3110) ausgeben
 -d : Public Key als hexadezimalen DER ausgeben
 -p : Public Key als PEM ausgeben
 -q : Private Key als PEM ausgeben (erfordert einen Private Key als Eingabe)
 -s : Private Key im Racoon/strongSwan-(< 5.0)-Format ausgeben (erfordert einen Private Key als Eingabe)

Der Schlüssel wird über stdin eingelesen, die Ausgabe erfolgt über stdout. Es können mehrere Ausgabeoptionen gleichzeitig angegeben werden.

Welches Format braucht welche Firewall / welcher VPN-Client?

RSA-Schlüssel werden je nach Software für IPsec-VPNs oder Router-Konfigurationen in ganz unterschiedlichen Formaten erwartet. Eine grobe Orientierung:

Firewall / VPN-Client Erwartetes Format Option
strongSwan < 5.0 (ipsec.conf, leftrsasigkey/rightrsasigkey) Base64 RFC 3110 (Public Key) -r
Openswan / FreeS/WAN (ipsec.conf) Base64 RFC 3110 (Public Key) -r
Cisco IOS / IOS XE (crypto key pubkey-chain rsa) Hexadezimaler DER-String (Public Key) -d
strongSwan ≥ 5.0 (swanctl.conf, X.509-Zertifikate) PEM (Public Key, meist über Zertifikat) -p
Allgemeine OpenSSL-/PKI-Werkzeuge, die einen Public Key erwarten PEM (Public Key) -p
Server/Dienste, die einen Private Key im Standardformat wollen PEM (Private Key) -q
racoon (ipsec-tools) / strongSwan < 5.0 (Private-Key-Export) Racoon/strongSwan-Format (Private Key) -s

Hinweis: Viele Implementierungen unterstützen mehrere Formate gleichzeitig im Zweifel gilt PEM als das am weitesten verbreitete Format. Die Tabelle zeigt das jeweils gebräuchlichste bzw. am Server/Client dokumentierte Format.

Beispiele

Public Key als PEM in Base64 (RFC 3110) umwandeln:

./rsa-converter -r < public_key.pem

Public Key als PEM sowohl im PEM- als auch im Hex-DER-Format ausgeben:

./rsa-converter -p -d < public_key.pem

Private Key ins Racoon/strongSwan-Format konvertieren:

./rsa-converter -s < private_key.pem

Lizenz

Dieses Projekt steht unter der WTFPL Version 2 (Do What The Fuck You Want To Public License). Siehe die Datei COPYING für Details.

Autor

Ryan Riske (ryan@r1ske.net)