2012-09-20 64 views
52

在使用該命令如何解決「無法寫入‘隨機狀態’」在OpenSSL的

 genrsa -out my-prvkey.pem 1024 

它拋出類似下面

 Loadind 'screen' into random state -done 
     Generating RSA private key,1024 bit long modulus 
     .........................................+++++++ 
     ...........................+++++++++ 
     unable to write 'random state' 
     e is 65537 (0*10001) 

這使得雖然任何問題誤差產生的私鑰創建公共證書..

我在windows上運行此命令

任何人都可以幫我解決這個問題嗎?

+1

這應該被重新打開,如果不是stackoverflow.com,上superuser.com。 – Jacob

+0

https://stackoverflow.com/a/48290001/715269 – Gangnus

回答

82

最快的解決方案是:將環境變量RANDFILE設置爲可以寫入「隨機狀態」文件的路徑(當然,檢查文件訪問權限),例如。在命令提示符:

set RANDFILE=C:\MyDir\.rnd 
openssl genrsa -out my-prvkey.pem 1024 

更多的解釋: 的OpenSSL在Windows試圖將 '隨機狀態' 文件保存在以下順序:

  1. 路徑從RANDFILE採取環境變量
  2. 如果首頁環境變量設置爲:$ {HOME} \。rnd
  3. C:\ RND

我敢肯定,在你的情況下,它結束了試圖將其保存在C:\ RND(和它失敗,因爲缺乏足夠的訪問權限)。不幸的是,OpenSSL不會打印實際嘗試在任何錯誤消息中使用的路徑。

+4

對不起,它已關閉,隊友...這是一個很好的問題,谷歌首先把它提出來。 – fool4jesus

+0

這也很好,而不必以管理員身份運行。 (雖然只設置了'HOME'就足夠了) – Synetech

+3

如果你使用的是PowerShell,你會想要使用'$ env:RANDFILE ='C:\ MyDir \ .rnd''(在PowerShell中'set'是別名'Set-Variable'與環境變量無關!) –

25

也可能是您需要以管理員身份運行控制檯。在Windows 7上,啓動控制檯窗口時按住ctrl + shift

+0

我覺得這可能應該是一個國家,除非你知道這是一個修復,但你散文暗示否則 – Mike

+1

你也可以通過點擊開始獲得管理員訪問cmd ,鍵入cmd,右鍵單擊cmd.exe,然後以管理員身份運行。 :) –

+0

這工作。謝謝! – jivangilad

22

只需在命令行中輸入該行:

set RANDFILE=.rnd 
+2

這對我有用。謝謝。 –

4

或者,這在Windows PowerShell

$env:RANDFILE=".rnd"