2012-02-21 74 views
29

我正試圖在Nginx上設置SSL。它不起作用,並且在錯誤日誌中出現以下錯誤,該錯誤日誌從nginx編譯的OpenSSL庫中傳出。我不知道那個庫是什麼,但它是nginx的0.8.54版本,我在Ubuntu Linux上使用apt-get安裝它。什麼是「SSL_CTX_use_PrivateKey_file」「獲取密碼錯誤的問題」在Nginx錯誤日誌中表示?

2012/02/21 07:06:33 [emerg] 4071#0: 
SSL_CTX_use_PrivateKey_file("/exequias/certs/exequias.com.key") failed (SSL: 
error:0906406D:PEM routines:PEM_def_callback:problems getting password error: 
0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines: 
SSL_CTX_use_PrivateKey_file:PEM lib) 

我已確保私鑰文件的文件權限不會停止讀取它的nginx。這是一個RSA私鑰,由openssl rsa生成。

任何想法可能會導致什麼呢?

回答

17

我知道了......與nginx一起使用的私鑰文件必須有而不是有一個密碼。我刪除了密碼,它工作。

+0

如何刪除passhprase? – crossle 2013-07-02 09:56:04

+0

我不記得了 - 我可能剛剛用'openssl'生成了一個新的私鑰,並且保留了密碼。 – 2013-07-02 11:52:29

+0

謝謝,我記得passhprase。 – crossle 2013-07-03 06:49:54

46

拔下鑰匙密碼短語:

openssl rsa -in key.pem -out newkey.pem 

如果他們的證書和密鑰在一起:

openssl rsa -in mycert.pem -out newcert.pem 
openssl x509 -in mycert.pem >>newcert.pem 

來源:http://www.madboa.com/geek/openssl/#key-removepass

+2

非常感謝!我在R'lyeh。你救了我的理智。 – divs1210 2015-05-19 12:26:45

+1

不客氣:-)我聽到你。我寫了這個答案已經兩年了,現在我不記得這件事了:D #insanityrealized – 2015-05-20 04:13:23

+0

感謝第一個命令,現在一切正常! – Aminos 2017-02-18 15:12:47

1

的問題是有點老了,和Nginx的實際支持至少從版本1.2開始在啓動時詢問密碼。但是這個問題仍然是相關的,因爲這個功能已經在最新版本的debian中從nginx 1.6版本中刪除了。原因是密碼輸入沒有在nginx的systemd腳本中實現,而它一直用於apache。手動啓動nginx只需要工作,而且這不是一個問題,因爲無論如何都需要手動干預,這裏沒有使用systemd。

參考:https://forum.nginx.org/read.php?2,262900,262931#msg-262931

4

因爲你生成一個密碼的.crt文件,所以您需要指定你的。關鍵在Nginx的conf下相同的密碼和.crt文件這樣

server { 
    ssl_password_file /path-to-your-passphrase/ssl.pass; 
} 

Nginx Doc

或者,如果你不需要爲你的證書文件的密碼,只需要使用ssh-keygen工具生成的文件如下:

ssh-keygen -t rsa 
+0

據說這隻適用於nginx> = 1.7.3 – 2016-08-09 22:08:43

+0

@JosephCoco是的,你是對的。我需要編輯我的答案。 – sudoz 2016-08-10 03:34:44

+0

完美:thumbsup: – Will 2018-01-26 19:11:31

相關問題