[GCP] Bitnami 用的 Let’s Encrypt 憑證被撤銷了,如何重新簽發?

[GCP] Bitnami 用的 Let’s Encrypt 憑證被撤銷了,如何重新簽發?

之前看到 Let’s Encrypt將在5天內撤銷約200萬誤發的憑證 這篇新聞,

跑去看了一下自己的網站上用的憑證,

嗯… 發行者是 R3,感覺好像不是 Let’s Encrypt?就不太在意。

沒想到,今天上網站看時,發現憑證已經失效了:

 

把憑證展開來看,原來 R3 就是 Let’s Encrypt 的中繼憑證,

而 Root CA 是 ISRG Root X1:

 

如果去看 Chain of Trust – Let’s Encrypt 的話,

也可以看到這個信任鍊的關聯:

Let's Encrypt Certificate Chain

 

因此,事實上我用的就是 Let’s Encrypt 發出來的憑證,

所以在 2022/1/28 起就被撤銷了…

 

如果單純地重新執行 /opt/bitnami/bncert-tool 的話,

它會找到舊的的憑證,並認為你是想要更新 (renew) 憑證。

然而,因為憑證已經被撤銷,因此雖然更新的動作可以完成,

但是瀏覽器還是會認為憑證無效…

$ sudo /opt/bitnami/bncert-tool 
Warning: Custom redirections are not supported in the WordPress Multisite 
packaged by Bitnami. This tool will not be able to enable/disable redirections.
Press [Enter] to continue:
----------------------------------------------------------------------------
Welcome to the Bitnami HTTPS Configuration tool.

----------------------------------------------------------------------------
Domains

Please provide a valid space-separated list of domains for which you wish to 
configure your web server.

Domain list []: ephrain.net

Warning: A certificate for the list of domains you entered already exists. It 
will be used instead of generating a new one.
Press [Enter] to continue:

 

爬文+嘗試了半天,終於可以丟掉失效的憑證,重新簽發一張新的…

來看一下怎麼做吧~

 

1. 移除 cron job 中自動更新憑證的動作

依序執行下面的指令,檢查一下 root 和 bitnami 帳號的 cron job:

sudo crontab -e
sudo crontab -e -u bitnami

 

我的 root 帳號裡沒有 cron job,但 bitnami 的有如下的:

0 0 * * * sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt --email="[email protected]" --http
 --http-timeout 30 --http.webroot /opt/bitnami/apps/letsencrypt --domains=ephrain.net renew && sudo /opt/bitnami/ap
ache/bin/httpd -f /opt/bitnami/apache/conf/httpd.conf -k graceful # bncert-autorenew

 

將那一行 bitnami 的 cron job 刪除 (vi 中按 dd 刪除一行) 並儲存。

 

2. 修改設定檔,回復使用預設憑證

執行下面指令來編輯 /opt/bitnami/apache2/conf/bitnami/bitnami-ssl.conf:

sudo vi /opt/bitnami/apache2/conf/bitnami/bitnami-ssl.conf

 

它的檔案內容可能如下,在 <VirtualHost> 的部分,

有 SSLCertificateFile/SSLCertificateKeyFile 指向舊的簽章和私鑰:

Listen 443
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+
aRSA+SHA256 EECDH !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !EDH !RC4"
SSLPassPhraseDialog  builtin
SSLSessionCache "shmcb:/opt/bitnami/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300
<VirtualHost _default_:443>
  DocumentRoot "/opt/bitnami/apache/htdocs"
  SSLEngine on
  SSLCertificateFile "/opt/bitnami/apache/conf/ephrain.net.crt"
  SSLCertificateKeyFile "/opt/bitnami/apache/conf/ephrain.net.key"

 

將 SSLCertificateFile/SSLCertificateKeyFile 那兩行刪除,

在全域的地方加上預設的 SSLCertificateFile/SSLCertificateKeyFile 值:

  • SSLCertificateFile: /opt/bitnami/apache2/conf/bitnami/certs/server.crt
  • SSLCertificateKeyFile: /opt/bitnami/apache2/conf/bitnami/certs/server.key

 

改完後的樣子如下:

Listen 443
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+
aRSA+SHA256 EECDH !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !EDH !RC4"
SSLPassPhraseDialog  builtin
SSLSessionCache "shmcb:/opt/bitnami/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300
SSLCertificateFile "/opt/bitnami/apache2/conf/bitnami/certs/server.crt"
SSLCertificateKeyFile "/opt/bitnami/apache2/conf/bitnami/certs/server.key"
<VirtualHost _default_:443>
  DocumentRoot "/opt/bitnami/apache/htdocs"
  SSLEngine on

 

改完後記得存檔。

接著執行下面指令來編輯 /opt/bitnami/apache2/conf/vhosts/wordpress-https-vhost.conf:

sudo vi /opt/bitnami/apache2/conf/vhosts/wordpress-https-vhost.conf

 

它的內容部分如下:

VirtualHost 127.0.0.1:443 _default_:443>
  ServerAlias *
  SSLEngine on
  SSLCertificateFile "/opt/bitnami/apache/conf/ephrain.net.crt"
  SSLCertificateKeyFile "/opt/bitnami/apache/conf/ephrain.net.key"

 

將 SSLCertificateFile/SSLCertificateKeyFile 的部分一樣替換掉:

VirtualHost 127.0.0.1:443 _default_:443>
  ServerAlias *
  SSLEngine on
  SSLCertificateFile "/opt/bitnami/apache2/conf/bitnami/certs/server.crt"
  SSLCertificateKeyFile "/opt/bitnami/apache2/conf/bitnami/certs/server.key"

 

改完一樣記得存檔。

接著執行下面指令,重新啟動 Bitnami 所有的服務:

sudo /opt/bitnami/ctlscript.sh restart

 

這時再去看網站的憑證的話,

可以發現它已經換成一個 self-signed 的簽章了:

 

3. 重新產生新的憑證

要重新產生新的憑證之前,得先刪除舊的憑證目錄:

sudo rm -rf /opt/bitnami/letsencrypt/certificates

 

若是直接刪除不放心的話,也可以先將 certificates 目錄改名,

等全部都沒問題後,再刪掉 certificates_old 目錄也行:

sudo mv /opt/bitnami/letsencrypt/certificates /opt/bitnami/letsencrypt/certificates_old

 

接著再執行  sudo /opt/bitnami/bncert-tool 指令來建立新的憑證,

這邊就跟 在 Bitnami 網站上,啟用 Let’s Encrypt 的 HTTPS 憑證 的步驟一樣了。

跑完之後,憑證終於回復正常啦:

 

參考資料:

(本頁面已被瀏覽過 504 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料