Apache-2.2

Apache:SSLCertificateKeyFile:文件不存在或為空

  • September 24, 2020

我正在為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點,我不確定什麼時候讀取證書。

但無論如何,更換群主並沒有改善情況。我的問題是:

  1. 我還能嘗試什麼來使它正常工作?
  2. 如何驗證我的密鑰文件是有效的密鑰文件?
  3. 如何驗證密鑰文件和證書 ( /etc/ssl/certs/portal.selfsigned.crt) 是否一起工作?

我認為 Apache 給出了誤導性的錯誤消息,我想指出錯誤。

我發現了錯誤。這是因為我正在使用腳本來設置證書,而我正在執行的步驟之一是apache2ctl configtest. 錯誤來自這個命令,而不是來自 apache restart,這是誤導我的原因。由於我以普通使用者身份執行 apache2ctl 命令,因此它無法訪問密鑰文件,因此無法訪問錯誤消息。

便利:確保所有 apache 命令都使用 sudo 執行,即使是那些僅用於語法驗證的命令 ( apache2ctl),因為它們也需要訪問密鑰。

引用自:https://serverfault.com/questions/416612