我正在嘗試在 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 行 更多的