2013-05-20 44 views
102

我已經安裝了OpenSSL 64.我想爲我的nodejs https服務器使用證書。我跑以下命令:無法在Windows上打開配置文件:/usr/local/ssl/openssl.cnf

openssl genrsa -out subdomain.domain.com.key 1024 

但我得到的錯誤:

WARNING: can't open config file: /usr/local/ssl/openssl.cnf 
Loading 'screen' into random state - done 
Generating RSA private key, 1024 bit long modulus 
.........++++++ 
.........................................++++++ 
unable to write 'random state' 
e is 65537 (0x10001) 

我該如何解決呢?
這是正確的命令嗎?

+0

創建一個文本文件,並將其命名爲openssl.cnf中。 http://www.flatmtn.com/article/setting-openssl-create-certificates#SSLCert-4 – simhumileco

+0

後#1:http://stackoverflow.com/a/43630802/4217744 – simhumileco

回答

200

溶液運行下面的命令:

set OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg 

set OPENSSL_CONF=[path-to-OpenSSL-install-dir]\bin\openssl.cfg 
在命令提示

使用openssl命令之前。

openssl知道在哪裏可以找到它的.cfg文件。

或者,您可以在Windows環境變量中設置相同的變量OPENSSL_CONF

注意:使用OpenSSL binary distribution from Shining Light Productions(官方OpenSSL的編譯+安裝程序版本可免費下載&使用)時可能會發生這種情況。這種分發與OpenSSL網站「半正式」聯繫爲「主要用於沒有預編譯的OpenSSL軟件包的操作系統的服務」。

+0

確保你創建了一個用戶變量。在我的情況下,創建一個系統變量不能解決問題。 – birken25

+2

不工作,我檢查了控制檯中的OPENSSL_CONF變量,並設置了它。 –

8

/usr/local/ssl/openssl.cnf

這樣的路徑意味着程序已經用Cygwin或MSYS編譯。如果你必須使用這個openssl,那麼你將需要一個理解這些路徑的解釋器,比如由Cygwin或MSYS提供的Bash。

另一種選擇是下載或編譯Windows Native版本openssl。使用該程序將需要而不是像

C:\Users\Steven\ssl\openssl.cnf 

的路徑這將是更適合於命令提示符。

+0

I號文件的示例內容認爲這意味着它是用OPENSSLDIR編譯的:「/ usr/local/ssl」。我用cl.exe編譯了'openssl version -f compiler:cl -D_USING_V110_SDK71_ [..]'。 –

10

我有SSL上Apache2.4.4並在第一次執行這個代碼,並獲得成功:
set OPENSSL_CONF=C:\wamp\bin\apache\Apache2.4.4\conf\openssl.cnf

然後執行剩下的代碼..

+0

這爲我工作在Windows 2008 R2與Win64OpenSSL_Light-1_1_0c +1 – Cyclonecode

3

不知道是什麼.CFG的區別& .CNF 在我的服務器我找不到.CFG或.CNF 我創造了一個新的文件爲same並把它放在下面的文件夾/usr/local/ssl/bin

執行

.\openssl genrsa -des3 -out <key name>.key 2048 

去偉大的..

1

只需安裝Win64中的OpenSSL v1.0.2a或Win32的OpenSSL的v1.0.2a,你可以從http://slproweb.com/products/Win32OpenSSL.html下載這些。開箱即用,無需配置。

+1

這就是我從下載,正想說,它具有由OP描述的問題,但下面的意見(從Xero的會計)後,重新啓動計算機安裝後,我發現它沒有問題。 – Jon

6

在我來說,我使用的二進制文件從閃耀的光芒和環境變量已經更新。但直到我運行具有提升特權的命令窗口時仍然存在問題。

當您打開CMD窗口,一定要運行它爲管理員。 (右鍵單擊開始菜單中的命令提示符,然後選擇「以管理員身份運行」)

我認爲它不能讀取的文件,由於用戶帳戶控制。

6

解決方案!

剛剛成立-config參數的位置正確,即:

openssl .................... -config C:\bin\apache\apache2.4.9\conf\openssl.cnf 
+2

這適用於「openssl req」,但不適用於「openssl pkcs12」。環境變量適用於兩者。奇怪的是,pkcs12選項不包含-config開關。 – GarDavis

+0

有趣...'openssl req'忽略'-config'(Apache/2.4.10 Win64),但是設置'OPENSSL_CONF'可以正常工作。 –