使用 Certbot 安裝 Let’s Encrypt 的免費 SSL 憑證與證書密鑰到 WEB 網頁服務器(WordPress 支援)

自從 Google 宣布把網站是否支援 SSL(傳輸層安全性協定)的 HTTPS 的安全性瀏覽列為網站排名審查重點後,已經有大量網站和部落客自主升級以支援綠色的🔒HTTPS瀏覽。我今天要來介紹如何透過Certbot申請和安裝免費的 SSL 安全性憑證在網頁服務器上(WordPress支援)。

我先前寫過一篇《購買SSL安全憑證教學,替網站/部落格強化安全性與SEO排名》,內文提到如何付費購買SSL安全性憑證,雖然使用上較為方便,不過實際上還是有免費的方式可獲得 SSL 證書,例如今天要介紹的「Let’s Encrypt」組織就是目前全球最大的免費 SSL 憑證簽證組織,而且我們可以透過 Certbot 這套應用服務輕鬆申請 SSL 憑證讓我們進行安裝在伺服器上。

申請 Let’s Encrypt 的免費 SSL 證書

步驟一,安裝 GIT。

  • sudo apt-get update
  • sudo apt-get upgrade
  • sudo apt-get install git

步驟二,安裝 Cerbot 服務。

  • cd /tmp
  • git clone https://github.com/certbot/certbot

步驟三:使用 Certbot 申請Let’s Encrypt的免費SSL憑證

  • cd certbot
  • ./certbot-auto

在自動程序執行過程中,會遇到「Do you want to continue? [Y/n] 」的詢問,只要輸入「Y」按下確認鍵(Enter/Return)就能繼續進行處理。

如果出現如下所示的錯誤資訊也不需要擔心,由於自動化程序無法針對不同系統進行設計,我們只要手動執行後續步驟即可。

Failed to find executable apache2ctl in PATH: /opt/bitnami/varnish/bin:/opt/bitnami/sqlite/bin:/opt/bitnami/php/bin:/opt/bitnami/mysql/bin:/opt/bitnami/apache2/bin:/opt/bitnami/common/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

要解決上述錯誤資訊,可以在 Certbot 目錄下,改為輸入下列指令:

./certbot-auto certonly --webroot -w /var/html/www/ -d DOMAIN

🔥注意:

  • 「/var/html/www」路徑請跟換成你的伺服器的「WordPress」目錄的正確放置路徑。
  • DOMAIN 請更換成你的正確網域。

執行上上面指令後,系統接下來會詢問你的電子郵件地址,請輸入你打算用來申請 SSL 簽證的專用信箱。之後還有兩次簡單的問題確認,分別輸入「A」、「Y」確認即可。

如果你在執行過程中遇到「DNS problem: SERVFAIL looking up A for DOMAIN」的問題,請檢查你的域名供應商(例如:NameCheap)的 DNS 設定是否正確。如果都正確,請檢查是否有設定「DNSSEC」,有的話可以先關掉試試看。

只要申請成功,你就可以看到如下所示資訊:

MPORTANT NOTES:

- Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/DOMAIN.com/fullchain.pem

Your key file has been saved at: /etc/letsencrypt/live/DOMAIN.com/privkey.pem

Your cert will expire on 2018-03-08. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew"

Certbot 提供相關檔案的解說資訊:

  • 「privkey.pem」 :證書密鑰(the private key for your certificate)。
  • 「fullchain.pem」:證書檔案(the certificate file used in most server software)。
  • 「chain.pem」:線上憑證狀態協定(used for OCSP stapling in Nginx >=1.3.7)。
  • 「cert.pem」:SLL憑證[i](will break many server configurations, and should not be used without reading further documentation)。

在 Linux 的 WEB 伺服器中安裝 SSL 證書

在取得 Let’s Encrypt 的 SSL 證書後,接下來就是要將證書安裝到網頁伺服器,讓網域可以正常使用 https 的加密瀏覽。

話先說在前面,前面申請 SSL 憑證的步驟雖然是通用的,但是下面的安裝步驟會依照你的伺服器版本和網頁服務器的套件不同,會有許多不同的安裝方式,我建議參考下面安裝流程,依照自己的伺服器種類進行微調更新(下面將以 bitnami 的 WordPress 安裝套件為例和大家講解)!

如果你是直接申請得到 server.crt SSL 憑證證書與 server.key 證書密鑰檔案,可以直接複製到伺服器中的正確位置,例如:

  • sudo cp /etc/lego/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/server.crt
  • sudo cp /etc/lego/certificates/DOMAIN.key /opt/bitnami/apache2/conf/server.key

🔥注意:

  • 「etc/lego/…」路徑,請依照你的伺服器實際配置修改(例如:「/etc/letsencrypt/live/DOMAIN.com/…」);及
  • 「opt/apache2/…」路徑,請依照你的伺服器實際配置修改(例如:「/etc/apache2/ssl/…」)。

不過我們透過 Certbot 在 Let’s Encrypt 申請的是經由 PEM 編碼(PEM-encoded)的證書頒發機構(Certificate Authority, CA )所生成的「cert.pem」、「fullchain.pem」與「privkey.pem」這三個檔案,需要我們進行額外手動編輯,包括:

  • 將「cert.pem」的編碼內容複製到「server.crt」;
  • 將「fullchain.pem」的編碼內容複製到「server-ca.crt」;
  • 將「privkey.pem」的編碼內容複製到「server.key」。

注意,你的伺服器中如果沒有上述 server 檔案,需要你手動建立;有些伺服器僅會預先內建「server.crt」和「server.key」兩個檔案,需要你自行建立「server-ca.crt」證書檔案(PEM CA 核發專有的證書檔案),並且更新相關 Apache 設定檔案(Apache configuration file),例如 httpd.conf,你可以在該檔案中發現類似如下配置:

<VirtualHost default:443>
 DocumentRoot "/opt/bitnami/apache2/htdocs"
 SSLEngine on
 SSLCertificateFile "/opt/bitnami/apache2/conf/server.crt"
 SSLCertificateKeyFile "/opt/bitnami/apache2/conf/server.key"

這時候需要將下面指令增加到 SSLCertificateKeyFile 下方:

SSLCACertificateFile "/opt/bitnami/apache2/conf/server-ca.crt"

🔥注意:在不同的安裝系統中,有可能在相同的路徑目錄下發現相同名稱的 Apache 設定檔案,但是其作用卻可能不一樣,而且存放的資訊也可能有異。這得取決於各安裝系統的設計思維,很可能會將相關 Aapche 設定檔案尤其他檔案負責設定。因此請大家務必參考各系統說明書找到 Server.crt 等檔案的設定位置與設定檔案名稱才能完成作業。

完成拷貝動作後,需要重新啟動 Apache 伺服器:

sudo /etc/init.d/apache2 restart

在重置完成後,這時候應該就能用 HTTPS 的加密瀏覽模式,開啟你的網站(或部落格)了。不過 Let’s Encrypt 的免費 SSL 憑證有著 90 天的使用限制,需要每隔 90 天重新申請一次 SSL 憑證才能讓網站保持正常加密瀏覽服務,這是比較麻煩的地方,不過看在免費的份上就勉強使用吧。

如何更新 SSL 安全性憑證

在登入 Linux 伺服器後,移動到 Certbot 的目錄下,輸入下列指令即可更新憑證檔案,之後再將該檔案內容依照前面提到的安裝步驟進行更新。

./certbot-auto renew
延伸閱讀
  1. Certbot: Where are my certificates.
  2. 推薦網站/部落格專用伺服器:Bluehost

分享您的想法

發佈留言

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