Frage Ist es möglich, einen RSA-Schlüssel ohne Passphrase zu generieren?


Ich arbeite mit Apache2 und Passenger für ein Rails-Projekt. Ich möchte ein selbstsigniertes erstellen SSL-Zertifikat zu Testzwecken.

sudo openssl rsa -des3 -in server.key -out server.key.new

Wenn ich den obigen Befehl eingebe, heißt es

writing RSA key
Enter PEM pass phrase:

Wenn ich den Pass-Cursor nicht eingebe, erhalte ich den folgenden Fehler

unable to write key
3079317228:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:869:Yo
u must type in 4 to 1024 characters
3079317228:error:0906406D:PEM routines:PEM_def_callback:problems getting passwor
d:pem_lib.c:111:
3079317228:error:0906906F:PEM routines:PEM_ASN1_write_bio:read key:pem_lib.c:382

Ist es möglich, einen RSA-Schlüssel ohne Angabe zu generieren? pass phrase, da ich mir nicht sicher bin wie /etc/init.d/httpd Skript startet den HTTP-Server ohne menschliches Zutun (d. h. wenn ich eine 4-stellige Passphrase gebe, erwartet es, dass ich dies beim Starten des Apache HTTP-Servers zur Verfügung stelle).


68
2018-03-05 06:28


Ursprung


Ihre Befehlszeile sagt openssl einen vorhandenen Schlüssel verschlüsseln. Das klingt nach etwas anderem als was du willst. - David Schwartz
Apache httpd können konfiguriert sein, um die Passphrase (n) des / der privaten Schlüssel interaktiv zu erhalten; Siehe das Dokument für mod_ssl oder in vielen Fällen Kommentare in den bereitgestellten / gepackten Konfigurationsdateien. Dies ist jedoch normalerweise nicht sicherer, als den privaten Schlüssel unverschlüsselt zu lassen, was einfacher ist. - dave_thompson_085


Antworten:


Wenn Sie ein selbstsigniertes Zertifikat generieren, können Sie sowohl den Schlüssel als auch das Zertifikat in einem Befehl wie folgt ausführen:

openssl req  -nodes -new -x509  -keyout server.key -out server.cert

Oh, und was @MadHatter sagte in seine Antwort über das Auslassen der -des3 Flagge.


76
2018-03-05 06:55



Die Knoten-Richtlinie ist der Grund, warum ich hier bin. (Keine DES-Verschlüsselung des privaten Schlüssels) - jorfus


Verlasse die -des3 flag, das ist eine Anweisung zu openssl, um server.key.new zu verschlüsseln (was übrigens kein neuer Schlüssel ist - es ist genau dasselbe wie server.key, nur wenn die Passphrase geändert / entfernt wurde).


34
2018-03-05 06:49





Das openssl req Befehl von der Antwort von @Tom H Es ist richtig, ein selbstsigniertes Zertifikat zu erstellen server.cert inkl. ein passwortloser privater RSA-Schlüssel server.key:

openssl req -nodes -new -x509 -keyout server.key -out server.cert

So funktioniert es. Weglassen -des3 wie in der Antwort von @MadHatter ist in diesem Fall nicht genug, um einen privaten Schlüssel ohne Passphrase zu erstellen. Es ist genug für diesen Zweck in der openssl rsa ("einen privaten Schlüssel konvertieren") Befehl, auf den sich @MadHatter und der openssl genrsa ("Erstelle einen privaten Schlüssel") Befehl. Nur nicht für die openssl req Befehl hier. Wir brauchen zusätzlich -nodes (Keine Verschlüsselung von server.key Bitte!").


19
2018-02-09 00:25





Benutze die -nodes Wenn diese Option angegeben ist, wird der private Schlüssel nicht verschlüsselt.

openssl \
    req \
    -nodes \
    -newkey rsa:2048 \
    -keyout www.example.com.key \
    -out www.example.com.csr \
    -subj "/C=DE/ST=NRW/L=Berlin/O=My Inc/OU=DevOps/CN=www.example.com/emailAddress=dev@www.example.com"

7
2018-05-12 14:42





Führen Sie es einfach erneut über openssl aus

Erzeuge zuerst den Schlüssel mit der Passphrase

dann openssl rsa -in server.key -out server.key


6
2018-01-26 15:37



Dies funktioniert nicht auf Ubuntu 16.04 - sweetfa
Ich habe die Bewertung abgelehnt, weil diese Antwort nicht das ist, was gefragt wurde. Außerdem benötigt der Befehl eine Eingabe und generiert keinen Schlüssel. - Don
Der Benutzer hat bereits gezeigt, dass er weiß, wie er einen Schlüssel generiert. Diese Antwort baut auf diesem Wissen auf, und ich schlage vor, den neu erzeugten Schlüssel zu übernehmen und erneut zu übergeben openssl   So wurde das Ziel von dem erreicht, was gefragt wurde: Erzeugen eines Schlüssels ohne eine Passphrase. - darethas
Funktioniert bei mir, openssl unter Windows 10 von GitBash. Danke für die Information. - Green


Verwenden Sie den nächsten Befehl, um eine kennwortlose private Schlüsseldatei mit zu generieren KEINE Verschlüsselung. Der letzte Parameter ist die Größe des privaten Schlüssels.

openssl genrsa -out my-passless-private.key 4096

0
2018-04-25 11:17



Dies ist NICHT passwortlos. Es ist vollständig und vollständig passwortgeschützt. - dave_thompson_085
Ich habe mit der Position der Parameter experimentiert. Es ist jetzt in Ordnung. Ich habe die Plätze der letzten zwei Parameter geändert und den Befehl getestet. - nix
Jetzt produziert es ein unverschlüsselt Datei. Optionen nach dem (nur) positionalen Argument werden ignoriert. Sieh dir die Datei an. Es ist nicht verschlüsselt. Ersetzen 4096 -des3 mit 4096 -sillywombat und es funktioniert immer noch und erzeugt das gleiche Format, immer noch unverschlüsselt (aber natürlich einen anderen Schlüsselwert). Es gibt keine Möglichkeit, eine passwortlose verschlüsselte Datei mit privaten Schlüsseln zu erstellen, und vor sechs Jahren wurden korrekte Lösungen für eine passwortlose unverschlüsselte Datei angegeben. - dave_thompson_085
Du hast recht. @dave_thompson_085. Der letzte Parameter hat keine Auswirkungen auf den Befehl. Ich habe meine Antwort aktualisiert. Es generiert keine verschlüsselte base64-kodierte und keine passwortgeschützte private Schlüsseldatei. - nix