/root/.rnd を RNG にロードできません。どこで見つけられますか? また、どのように作成できますか?

/root/.rnd を RNG にロードできません。どこで見つけられますか? また、どのように作成できますか?

Ubuntu Server 18.04 上で OpenVPN を使用して VPN サーバーをセットアップしようとしており、EasyRSA を使用して PKI CA を構築したいと考えています。

そこで、ルートとして接続しているときに、 にコピーした EasyRSA スクリプトを起動します。とでは/etc/openvpn/easy-rsaすべて正常に動作しますが、 を起動しようとすると、次のエラーが発生します。./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

openssl confing ファイル ( /etc/openvpn/easy-rsa/openssl-1.0.0.cnf) に、 に到達しようとする理由を示す次の行があります/root/.rnd

RANDFILE    = $ENV::HOME/.rnd

オンラインで読んで理解したところによると、これ.rndは OpenSSL が乱数を生成するために使用するシードです。奇妙なことに、このエラーが発生しても、RSA 秘密キーはスクリプトによって生成されます。シードがないため、ランダムではないのではないかと心配しています。

つまり、私の問題は、このファイルが私のシステムに存在せず、 になく/root/、私の唯一の他のユーザーである にもなく/home/user/find / -name ".rnd"何も返さないということです。 も何もfind / -iname "*.rnd"返しません。

そして、どうすればそれを作成できるのか、あるいは私がこれを間違って理解していたのかどうかさえわかりません。

答え1

このエラーが発生しても、RSA秘密鍵はスクリプトによって生成されます

このファイルは存在する必要はありません。OpenSSL は最初の実行後、独自にファイルを作成します。

シードがないのでランダムではないのではないかと心配しています。

OS は、または/dev/urandomなどのシステム コールを通じて、独自の RNG を使用してシードを提供します。ユーザーが何か追加で用意する必要はありません。getentropy()CryptGenRandom()

.rndこのファイルは、OSに優れたCSPRNGがなかった時代の名残であると思われます。おそらくLinux/dev/urandomは低品質だと考えられていた時代(そして/dev/random「エントロピー計算」のためにデータ生成が非常に遅かった時代)でしょう。今ではもうそうではありません。ホームディレクトリのファイルに保存されているシードに完全に依存することは、実際には少ない安全な。

答え2

予想されるパスに作成する

cd ~/; openssl rand -writerand .rnd

答え3

OpenSSL は、最初の 1 回以降は独自に作成します。

実際には、スクリプトを何度起動しても、またはコマンドをopenssl rand直接使用しようとしても、スクリプトは作成されません。

しかし、あなたの言う通りでした。私は 2 つのキーを生成し、それらが異なっているかどうかを確認しましたが、異なっていました。

助けてくれてありがとう。

答え4

/etc/ssl/openssl.confのRANDFILE行に注意してください。 もっと

関連情報