Site icon Mr. 沙先生

Let’s Encrypt ACMEv1 即將在 2021/06 End of Life

今天朋友告訴我網站的 SSL 憑證過期了,心想 Let’s Encrypt 不是設定正常很久了怎麼突然遇到問題,跑了 dehydrated 發現 Let’s Encrypt 的 ACMEv1 API 掛了,又剛好我的憑證到期沒辦法自動更新 …

ACMEv1 Brownout in Progress. ACMEv1 will fully turn off on June 1, 2021. Check https://letsencrypt.status.io/ for more details.

很巧的是 … 看到 ACMEv1 API 回覆說準備在 June 1, 2021 結束支援,查了一下原來是最近發佈的 End of Life Plan for ACMEv1 準備將 ACMEv1 淘汰改成 ACMEv2,從 2020/06 後就開始禁止新網域從 ACMEv1 註冊

然後從 2021 年開始 ACMEv1 會不定期停用 24 小時 … 疑? 這是什麼怪措施,原來要 End of Life 這也是一招啊 … 讓使用者不定期壞掉就會發現應該要升級了。

原本用的 dehydrated v0.4.0 還沒有支援 ACMEv2,在寫這篇文章的時候是 v0.7.0 已經支援 ACMEv2 版本了,用法跟原本的一樣:

# Downloading v0.7.0
$ wget https://github.com/dehydrated-io/dehydrated/releases/download/v0.7.0/dehydrated-0.7.0.tar.gz
$ tar zxvf dehydrated-0.7.0.tar.gz
$ cd dehydrated-0.7.0/

沒用過的話需要重新註冊 Let’s encrypt

$ ./dehydrated --register --accept-terms

然後定期跑在 crontab 或者手動執行

# crontab
0 0 * * * root sleep $(expr $(printf "\%d" "0x$(hostname | md5sum | cut -c 1-8)") \% 86400); ( /etc/dehydrated/dehydrated -c -d shazi.info; /usr/sbin/service apache2 reload ) > /tmp/dehydrated-shazi.info.log 2>&1

拿 hostname 做 hash sleep 的做法是很常見跑 crontab 的方法,避免固定時段對 Let’s encrypt 要憑證。

Exit mobile version