無法將 /root/.rnd 載入到 RNG 中:我可以在哪裡找到它,或如何創建它?

無法將 /root/.rnd 載入到 RNG 中:我可以在哪裡找到它,或如何創建它?

我正在嘗試在 Ubuntu Server 18.04 上使用 OpenVPN 設定 VPN 伺服器,並且我想使用 EasyRSA 來建立我的 PKI CA。

因此,在以 root 身分連線時,我啟動了複製到的 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 在第一次後會自行建立它。

我只是擔心它不是隨機的,因為它缺少種子。

作業系統透過/dev/urandom或透過系統呼叫(例如getentropy()或 )使用自己的 RNG 提供種子CryptGenRandom()。您不需要提供任何額外的東西。

我猜測該.rnd文件或多或少是操作系統缺乏良好的 CSPRNG 時代的遺留物,可能是在 Linux/dev/urandom被認為質量較差時(並且/dev/random由於“熵會計”而非常緩慢地生成數據)。現在情況不再是這樣,完全依賴儲存在主目錄中某個檔案上的種子實際上是較少的安全的。

答案2

在預期路徑中建立一個

cd ~/; openssl rand -writerand .rnd

答案3

OpenSSL 在第一次後會自行建立它。

實際上,事實並非如此,無論我啟動腳本多少次,或者如果我只是嘗試openssl rand直接使用命令,它都不會被創建。

但你是對的:我產生了兩個密鑰來檢查它們是否不同,結果確實不同。

感謝您的協助。

答案4

註解 /etc/ssl/openssl.conf 中的 RANDFILE 行 更多的

相關內容