- Perl 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .gitignore | ||
| COPYING | ||
| README.md | ||
| rsa-converter | ||
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::RSACrypt::OpenSSL::BignumParse::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)