Apache-2.2
Apache:SSLCertificateKeyFile:文件不存在或為空
我正在為
Apache 2
. 我的系統是Ubuntu Server 10.04 LTS
. 我的虛擬主機配置中有以下與 SSL 相關的設置:SSLEngine On SSLCertificateKeyFile /etc/ssl/private/server.insecure.key SSLCertificateFile /etc/ssl/certs/portal.selfsigned.crt
(旁注:我使用
.insecure
密鑰文件是因為該文件不受密碼保護,我想清楚地看到它是一個不安全的密鑰文件)因此,當我重新啟動 apache 時,我收到以下消息:
Syntax error on line 39 of /etc/apache2/sites-enabled/500-portal-https: SSLCertificateKeyFile: file '/etc/ssl/private/server.insecure.key' does not exist or is empty Error in syntax. Not restarting.
但是文件在那裡,並且不是空的(實際上它包含一個私鑰):
sudo ls -l /etc/ssl/private/server.insecure.key -rw-r----- 1 root www-data 887 2012-08-07 15:14 /etc/ssl/private/server.insecure.key sudo ls -ld /etc/ssl/private/ drwx--x--- 2 root www-data 4096 2012-08-07 13:02 /etc/ssl/private/
我嘗試使用兩組 www-data 和 ssl-cert 更改所有權。我不確定在 Ubuntu 中哪個是正確的:預設情況下,Ubuntu 使用 ssl-cert,但另一方面,apache 程序使用使用者 www-data 執行:它由使用者 root 啟動,但在某些情況下更改為 www-data點,我不確定什麼時候讀取證書。
但無論如何,更換群主並沒有改善情況。我的問題是:
- 我還能嘗試什麼來使它正常工作?
- 如何驗證我的密鑰文件是有效的密鑰文件?
- 如何驗證密鑰文件和證書 (
/etc/ssl/certs/portal.selfsigned.crt
) 是否一起工作?我認為 Apache 給出了誤導性的錯誤消息,我想指出錯誤。
我發現了錯誤。這是因為我正在使用腳本來設置證書,而我正在執行的步驟之一是
apache2ctl configtest
. 錯誤來自這個命令,而不是來自 apache restart,這是誤導我的原因。由於我以普通使用者身份執行 apache2ctl 命令,因此它無法訪問密鑰文件,因此無法訪問錯誤消息。便利:確保所有 apache 命令都使用 sudo 執行,即使是那些僅用於語法驗證的命令 (
apache2ctl
),因為它們也需要訪問密鑰。