435 Stimmen

Was bedeutet bei der Verwendung von OpenSSL die Meldung "unable to write 'random state'"?

Ich generiere ein selbstsigniertes SSL-Zertifikat, um den Admin-Bereich meines Servers zu schützen, und erhalte ständig diese Meldung von OpenSSL:

nicht in der Lage, 'Zufallszustand' zu schreiben

Was bedeutet das?

Dies geschieht auf einem Ubuntu-Server. Ich habe libssl aktualisiert, um Folgendes zu beheben die jüngste Sicherheitslücke .

0 Stimmen

Ich sehe, dass, obwohl dieser Fehler ausgelöst wird, es nicht aufhört, indem es die beabsichtigte Zertifikatsformatdatei generiert. Ich habe einen anderen Openssl-Befehl verwendet, um die .crt in .pfx zu konvertieren, der tatsächlich die pfx ausgibt, obwohl dieser Fehler ausgegeben wird

570voto

Ville Laurikari Punkte 27255

In der Praxis scheint der häufigste Grund dafür zu sein, dass die .rnd-Datei in Ihrem Home-Verzeichnis Root und nicht Ihrem Konto gehört. Die schnelle Lösung:

sudo rm ~/.rnd

Weitere Informationen finden Sie im Eintrag der OpenSSL-FAQ :

Manchmal bricht das openssl-Kommandozeilenprogramm nicht mit der Fehlermeldung "PRNG not seeded" ab, sondern beschwert sich, dass es "unable to write 'random state'" ist. Diese Meldung bezieht sich auf die Standard-Seeding-Datei (siehe vorherige Antwort). Ein möglicher Grund ist, dass kein Standard-Dateiname bekannt ist, weil weder RANDFILE noch HOME gesetzt ist. (Versionen bis 0.9.6 benutzten in diesem Fall die Datei ".rnd" im aktuellen Verzeichnis, aber das hat sich mit 0.9.6a geändert).

Ich würde also RANDFILE, HOME und die Schreibberechtigungen für diese Orte im Dateisystem überprüfen.

Wenn alles in Ordnung zu sein scheint, können Sie versuchen, mit strace und sehen, was genau vor sich geht.

44 Stimmen

Bei meinem System trat dieses Problem auf, weil die ".rnd"-Datei Root und nicht meinem Benutzer gehörte. Eine schnelle sudo chown user:user ~/.rnd hat alles gut geklappt.

1 Stimmen

Ich hatte das gleiche Problem wie OP. Ich habe die sudo und es hat funktioniert. Aber warum habe ich immer noch ein .rnd Verzeichnis, das Root in meinem $HOME hat, nachdem ich ein selbstsigniertes Zertifikat erstellt habe?

3 Stimmen

Ja, wenn Sie von einem php-Webserver aus starten, ist der Benutzer www-data, und Sie sollten "export" vor jedem openssl hinzufügen: shell_exec('export RANDFILE=".rnd";openssl ecparam -genkey -name secp256k1'))

295voto

Beachhouse Punkte 4796

Ich weiß, dass sich diese Frage auf Linux bezieht, aber unter Windows hatte ich das gleiche Problem. Es stellte sich heraus, dass man die Eingabeaufforderung im Modus "Als Administrator ausführen" starten muss, damit sie funktioniert. Andernfalls erhalten Sie die gleiche: unable to write 'random state' error.

13 Stimmen

Ich führe Windows als Administrator aus, erhalte aber immer noch den Fehler

7 Stimmen

Ein Administrator auf dem Rechner zu sein und "Als Administrator ausführen" zu verwenden, ist ein Unterschied. "Als Administrator ausführen" zwingt das Programm, als Administrator ausgeführt zu werden. Andernfalls wird die Eingabeaufforderung mit einer Sicherheitsfreigabe für Nicht-Administratoren ausgeführt, auch wenn Sie ein Administrator sind.

77 Stimmen

Wenn Sie sich im Administratormodus befinden und Sie immer noch Wenn Sie die Meldung "Unable to write 'random state'" erhalten, ist eine andere Lösung, dass Sie set RANDFILE=.rnd vor der Ausführung openssl .

47voto

joel Punkte 501

Ein weiteres Problem auf der Windows-Plattform: Stellen Sie sicher, dass Sie die Eingabeaufforderung als administrativer Benutzer ausführen!

Ich weiß nicht, wie oft mich das schon geärgert hat...

2 Stimmen

Wie bereits von anderen vorgeschlagen, funktionierte die Einstellung RANDFILE=.rnd bei mir, ohne dass ich eine cmd-Zeile mit Administrator

19voto

Luke Francl Punkte 30290

Offenbar musste ich OpenSSL als Root ausführen, damit es Zugriff auf die Seeding-Datei hat.

16 Stimmen

Es ist wahrscheinlicher, dass Sie einmal lief es als Root, woraufhin die .rnd-Datei in Ihrem Home-Verzeichnis mit Berechtigungen nur für Root erstellt wurde. Das ist mir vor einiger Zeit passiert. Das Löschen von .rnd löste das Problem.

13voto

Jusuf Punkte 131

Ich hatte das gleiche Problem auf einem Windows-Server. Dann fand ich heraus, dass ich durch Ändern der vars.bat und das ist:

set HOME=C:\Program Files (x86)\OpenVPN\easy-rsa

dann wieder von vorne beginnen und alles sollte in Ordnung sein.

0 Stimmen

Das war's! Danke. Ich habe diese Änderung direkt zwischen den Befehlen "init-config" und "vars" vorgenommen, wie in der Anleitung (hier: openvpn.net/index.php/open-source/dokumentation/howto.html#pki ). Das muss daran liegen, dass ich die 32-Bit-Version installiert habe (die ich bevorzuge).

4 Stimmen

Das hat geklappt, und ich musste nicht mehr als Administrator arbeiten. Danke! Tatsächlich habe ich einfach set HOME=.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X