Ssl
文件存在時如何有條件地設置 SSLCertificateFile?
我正在使用 Let’s Encrypt (
certonly
) 為託管在 Apache 伺服器上的多個網站生成 SSL 證書。這些證書的文件位置在創建之前就已確定,因此我提前將它們的路徑寫入我的虛擬主機配置中。一旦站點執行,我將使用certbot
獲取證書文件,然後重新載入 Apache 配置。我還有一個用有效文件定義的全域 SSL 證書,所以每個 SSL 虛擬主機都肯定有一個證書。
我遇到的問題是 Apache 在沒有所有證書文件的情況下無法執行,儘管有全域備份。我嘗試僅在文件存在時使用 有條件地配置 Let’s Encrypt 證書
IF
,但 Apache 說SSLCertificateFile not allowed here
。
SSLCertificateFile
僅當新證書文件存在時,我如何才能覆蓋全域?我正在嘗試執行所有這些操作,而無需在生成證書之前和之後修改配置。這是我嘗試過的:
<If "-f '/etc/letsencrypt/live/domain/fullchain.pem'"> SSLCertificateFile /etc/letsencrypt/live/domain/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/domain/privkey.pem </If>
→
SSLCertificateFile not allowed here
在這種情況下,我將為每個域創建一個符號連結目錄,並為尚未配置的域使用伺服器的蛇油證書(或您之前提到的“全域”證書)。例如:
$ ls -1 /etc/ssl/domains example.com/fullchain.pem -> /etc/letsencrypt/live/example.com/fullchain.pem example.com/privkey.pem -> /etc/letsencrypt/live/example.com/privkey.pem second-example.com/fullchain.pem -> /etc/ssl/certs/ssl-cert-snakeoil.pem second-example.com/privkey.pem -> /etc/ssl/private/ssl-cert-snakeoil.key
然後,您可以設置 Apache 指令以使用符號連結目錄:
SSLCertificateFile /etc/ssl/domains/example.com/fullchain.pem SSLCertificateKeyFile /etc/ssl/domains/example.com/privkey.pem
這樣做的好處是在為域生成 Let’s Encrypt 證書時只需要替換符號連結,但是在安裝完整證書之前訪問域的使用者將收到警告,因為蛇油證書是自簽名的。