[SSL] 使用 acme.sh 取得 Let’s Encrypt 免費 SSL證書 (Linux限定)

最近 SSL For Free 服務改版了之後使用上並沒有以前那樣好用了,因此必須要尋覓其他取得 Let’s Encrypt 免費 SSL 證書的方式了,儘管官方推薦的客戶端是 Certbot ,不過這篇要介紹的是同樣在 Let’s Encrypt 客戶端列表中一樣有介紹到的 acme.sh ,有著安裝方便快速且支援自動更新證書的功能,相當值得一試。不過這是 Linux限定的使用方式,Windows可能得另外找別的方式囉。

acme.sh

Github頁面: https://github.com/acmesh-official/acme.sh

 

操作流程

  1. 安裝 acme.sh

# wget -O -  https://get.acme.sh | sh

安裝的流程相當的簡單,只要鍵入以上的指令就可以將 acme.sh安裝到電腦裡面!

安裝完成的時候,程序就會自動將 acme.sh 這個程序加入到 crontab 裡面並且設定為每日執行,來每天進行檢查若證書效期達60天,則會自動啟動自動更新憑證的動作。

預設會安裝在 /家目錄/.acme.sh/ 底下,如果你當前登入的使用者為 root ,那麼目錄就會是 /root/.acme.sh/,如果你當前登入的使用者為User,那個目錄就會是 /home/User/.acme.sh

2. 將 acme.sh 的別名指定到路徑上

# alias acme.sh=~/.acme.sh/acme.sh

這時候我們只要鍵入以上這行指令,就可以將 acme.sh 這個指令指定到 acme.sh 的根目錄下。

☆ 順帶一提:如果要解除這個 Alias 的設定,只需要鍵入以下指令即可。

# unalias acme.sh

 

3. 產生證書

更新:目前 acme.sh 採用 ZeroSSL,首次申請SSL證書時必須要使用email註冊一個帳號,不過相當的簡單!

  acme.sh --register-account -m Email@gmail.com

單一網域申請SSL證書,這時候我們只要在 -d 後面加上要申請的domain name ,在 -w 後面加上這個網域所指向的根目錄,這時候acme.sh 就會自動幫助我們在這個根目錄下 .well-known/pki-validation/ 並且新增驗證用文件!

這個部分就會趨近於以前使用 SSL For Free 的方式類似,不過它會自動進行並且自動更新!

單一網域申請證書:
# acme.sh --issue -d 你的網域 -w 網域的根目錄
# acme.sh --issue -d domain.com -w /var/www/html

上述的方法就只會產生適用於你所輸入的這個網域名稱的證書,如果你一次要申請多個次網域的SSL證書( 例如 www.domain.com ),那麼你可以在Domain的欄位輸入多筆 -d domain,並且指向到同一個網頁目錄。

多個網域申請證書:
# acme.sh --issue -d 你的網域A -d 你的網域B ...... -w 網域的根目錄
# acme.sh --issue -d domain.com -d www.domain.com -d dev.domain.com -w /var/www/html

☆ 如果你要申請多個網域的證書的話,請確保這些Domain都可以順利連線到同一個根目錄才行哦!

★ 請確保系統能夠有權限在你的網頁根目錄寫入檔案,如果無法寫入檔案它就無法寫入驗證用的檔案替你做驗證哦。

 

 

當證書產生完成後,畫面上最後會顯示你的每一個證書所產生的路徑!

Your cert is in  /家目錄/.acme.sh/你的網域/你的網域.cer
Your cert key is in  /家目錄/.acme.sh/你的網域/你的網域.key
The intermediate CA cert is in  /家目錄/.acme.sh/你的網域/ca.cer
And the full chain certs is there:  /家目錄/.acme.sh/你的網域/fullchain.cer

請特別記下證書所產生的位置,用於綁定時的路徑設定。

☆ 如果你是使用 root 帳戶進行登入,那麼你的家目錄就會被設定為 /root/,如果你是使用其他User登入的話家目錄就會是 /home/User名/ ,請特別注意!

☆ 由於安裝程序的過程中已經自動設定了 corntab 了,每一天系統都會排程自動去檢查證書的有效時間,證書每60天會自動更新一次。

 

Apache 在vHost中設定SSL

為了方便大家閱讀與操作,這裡簡單的提及要如何將 SSL證書 設定到 Apache vHost 上

只要在你的 vHost 中SSL的部分 增加上

    SSLCertificateFile "/家目錄/.acme.sh/你的網域/fullchain.cer"
    SSLCertificateKeyFile "/家目錄/.acme.sh/你的網域/你的網域.key"
    SSLCACertificateFile "/家目錄/.acme.sh/你的網域/ca.cer"

存檔後執行 systemctl restart httpd 重新啟動即可生效。

 

 

參考資料:

acme.sh Github頁面:https://github.com/acmesh-official/acme.sh

Let’s Encrypt 客戶端列表:https://letsencrypt.org/zh-tw/docs/client-options/

 

延伸閱讀:

SSL For Free – 市佔率超高的 免費 SSL 憑證

SSL For Free – 市佔率超高的 免費 SSL 憑證

1 thought on “[SSL] 使用 acme.sh 取得 Let’s Encrypt 免費 SSL證書 (Linux限定)”

  1. Pingback: SSL For Free - 市佔率超高的 免費 SSL 憑證 - RicharLin.Tw

Comments are closed.