Ich versuche, einen VPN-Server mit OpenVPN auf einem Ubuntu Server 18.04 einzurichten, und möchte EasyRSA zum Erstellen meiner PKI-CA verwenden.
Während ich als Root angemeldet bin, starte ich die EasyRSA-Skripte, die ich nach kopiert habe . Mit und /etc/openvpn/easy-rsa
funktioniert alles einwandfrei , aber wenn ich versuche, zu starten , erhalte ich diese Fehlermeldung:./clean-all
./build-dh
./pkitool --initca
Can't load /root/.rnd into RNG
140171234709952:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/root/.rnd
In der OpenSSL-Konfigurationsdatei ( /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
) finde ich diese Zeile, die angibt, warum versucht wird, Folgendes zu erreichen /root/.rnd
:
RANDFILE = $ENV::HOME/.rnd
Soweit ich es online gelesen und verstanden habe, .rnd
handelt es sich um einen Seed, den OpenSSL zur Generierung von Zufallszahlen verwendet. Das Seltsame ist: Obwohl ich diesen Fehler erhalte, WIRD der private RSA-Schlüssel vom Skript generiert. Ich befürchte nur, dass er nicht zufällig ist, da ihm ein Seed fehlt.
Mein Problem ist also: Diese Datei existiert auf meinem System nicht, sie befindet sich nicht in /root/
, nicht in , /home/user/
dem einzigen anderen Benutzer, und find / -name ".rnd"
gibt nichts zurück. Gibt nicht einmal find / -iname "*.rnd"
etwas zurück.
Und ich weiß nicht einmal, wie ich es erstellen kann oder ob ich das alles falsch verstanden habe.
Antwort1
obwohl ich diesen Fehler erhalte, WIRD der private RSA-Schlüssel vom Skript generiert
Die Datei muss nicht vorhanden sein; OpenSSL erstellt sie nach dem ersten Mal selbstständig.
Ich befürchte nur, dass es nicht zufällig ist, da ein Seed fehlt.
Das Betriebssystem stellt den Seed mithilfe seines eigenen RNG bereit, /dev/urandom
oder zwar über Systemaufrufe wie getentropy()
oder CryptGenRandom()
. Sie müssen nichts weiter angeben.
Ich würde vermuten, dass die .rnd
Datei mehr oder weniger ein Überbleibsel aus der Zeit ist, als dem Betriebssystem ein guter CSPRNG fehlte, möglicherweise als Linux /dev/urandom
als minderwertig galt (und /dev/random
aufgrund der „Entropiebuchhaltung“ sehr langsam Daten produzierte). Jetzt ist dies nicht mehr der Fall, und sich vollständig auf einen Seed zu verlassen, der in einer Datei in Ihrem Homedir gespeichert ist, wäre tatsächlichwenigersicher.
Antwort2
Erstellen Sie eine im erwarteten Pfad
cd ~/; openssl rand -writerand .rnd
Antwort3
OpenSSL erstellt es nach dem ersten Mal selbstständig.
Tatsächlich ist dies nicht der Fall. Egal, wie oft ich das Skript starte oder ob ich einfach versuche, den openssl rand
Befehl direkt zu verwenden, es wird nie erstellt.
Aber Sie hatten Recht: Ich habe zwei Schlüssel generiert, um zu prüfen, ob sie unterschiedlich waren, und das war der Fall.
Ich danke Ihnen für Ihre Hilfe.
Antwort4
Beachten Sie die Zeile RANDFILE in /etc/ssl/openssl.conf mehr