So beheben Sie "nicht in der Lage, 'zufälligen Zustand' zu schreiben" in openssl


77

Beim Generieren des privaten Schlüssels mit diesem Befehl

genrsa -out my-prvkey.pem 1024

Es wirft den Fehler wie unten

Laden Sie 'screen' in den zufälligen Zustand - fertig Generieren eines privaten RSA-Schlüssels mit einem 1024-Bit-Modul ................................ ......... +++++++ ........................... +++++++ ++ nicht in der Lage, 'zufälligen Zustand' zu schreiben e ist 65537 (0 * 10001)

Dies macht Probleme beim Erstellen eines öffentlichen Zertifikats. Ich führe diesen Befehl in Windows aus. Kann mir jemand bei der Lösung helfen?


1
Dies sollte erneut geöffnet werden, wenn nicht auf stackoverflow.com, auf superuser.com.
Jacob

Antworten:


116

Die schnellste Lösung ist: Setzen Sie die Umgebungsvariable RANDFILE auf den Pfad, in den die 'Random State' -Datei geschrieben werden kann (überprüfen Sie natürlich die Dateizugriffsberechtigungen), z. in Ihrer Eingabeaufforderung:

set RANDFILE=C:\MyDir\.rnd
openssl genrsa -out my-prvkey.pem 1024

Weitere Erklärungen: OpenSSL unter Windows versucht, die 'Random State'-Datei in der folgenden Reihenfolge zu speichern:

  1. Pfad aus der Umgebungsvariablen RANDFILE
  2. Wenn die Umgebungsvariable HOME festgelegt ist, gilt Folgendes : $ {HOME} \. Rnd
  3. C: \. Rnd

Ich bin mir ziemlich sicher, dass es in Ihrem Fall letztendlich versucht, es in C: \. Rnd zu speichern (und es schlägt fehl, weil keine ausreichenden Zugriffsrechte vorhanden sind). Leider druckt OpenSSL nicht den Pfad, der tatsächlich in Fehlermeldungen verwendet werden soll.


6
Tut mir leid, dass es geschlossen war, Kumpel ... das ist eine großartige Frage und Google spricht sie zuerst an.
narr4jesus

1
Dies funktioniert auch hervorragend, ohne als Administrator ausgeführt werden zu müssen. (Obwohl nur die Einstellung HOMEausreichend war.)
Synetech

4
Wenn Sie PowerShell verwenden, möchten Sie verwenden $env:RANDFILE = 'C:\MyDir\.rnd'(In PowerShell setist ein Alias, Set-Variableder nichts mit Umgebungsvariablen zu tun hat!)
Jeff Camera

31

Möglicherweise müssen Sie die Konsole auch als Administrator ausführen. Halten ctrl+shiftSie unter Windows 7 gedrückt, wenn Sie das Konsolenfenster starten.


Ich denke, dies hätte wahrscheinlich ein Land sein sollen, es sei denn, Sie wissen, dass dies eine Lösung ist, aber Ihre Prosa schlägt etwas anderes vor
Mike

3
Sie können auch Administratorzugriff auf cmd erhalten, indem Sie auf Start klicken, cmd eingeben, mit der rechten Maustaste auf cmd.exe klicken und als Administrator ausführen. :)
Tyler Rafferty

31

Geben Sie einfach diese Zeile in die Befehlszeile ein:

set RANDFILE=.rnd

Ich habe openssl unter Windows 10 installiert und den obigen Befehl an der Eingabeaufforderung ausgeführt. openssl gibt immer noch den gleichen Fehler aus wie OpenSSL> genrsa -out key.pem Laden von 'screen' in einen zufälligen Zustand - erledigt Generieren eines privaten RSA-Schlüssels mit einem 512-Bit-Modul ................ ..................................... +++++++++++++. ...... +++++++++++++ nicht in der Lage, 'zufälligen Zustand' zu schreiben e ist 65537 (0x10001)
Rohit Borude

6

Oder dies in Windows Powershell

$env:RANDFILE=".rnd"

3

Ich habe nicht gefunden, wo sich die .rnd-Datei befindet, also habe ich die cmd als Administrator ausgeführt und es hat wie ein Zauber funktioniert.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.