preloader
心得

解決 apache reverse proxy 因拿不到 SSL certificate 而啟動失敗

情境:當我從舊機器VM 要搬各個具備https的網站到新機器VM時,複製了舊站 apache 給各個網站的設定檔。Apache http server 在其中的角色是擔任 reverse proxy 。在新站放置好各網站設定檔欲啟動時,發現一直啟動失敗,錯誤訊息有以下內容:

AH02572: Failed to configure at least one certificate and key for yhblog.csie.io:80

SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned

 

解決方法依序是:

  1. 將網站設定檔內容中,有關 SSL 的 predicate /statement 暫時隱藏,例如:
SSLEngine On
Include /etc/letsencrypt/options-ssl-apache.conf
SSLProxyEngine on
SSLCertificateFile /xxxxxxx
SSLCertificateKeyFile /xxxxxx

 

  1. 啟用 apache 的 ssl 相關模組: mod_ssl
a2mod ssl
service apache reload

 

  1. 啟用 apache 的各網站設定檔
a2ensite xxxx.conf
service apache reload

 

  1. 執行 certbot 取得 letsencrypted ssl 認證書,以下命令省略。

 

  1. 修改第一步中,各網站設定檔的已隱藏 ssl 相關敘述,全部恢復,並修改 SSLCertificateFileSSLCertificateKeyFile 成正確的證書路徑。

我的經驗是忘記註解掉第1步的SSLProxyEngine ,導致我除錯除很久,終於找到 apache 啟動網站失敗導致 certbot 取不到證書的原因,已經修復自己的網站。