開始用 Let’s Encrypt 的 wildcard certificate

2016 年自己寫過 改用 Let’s Encrypt 的 certificates,文內提到的 dehydrated 也持續在使用。

這幾天看到 Let’s Encrypt 貼出 ACME v2 and Wildcard Certificate Support is Live

Let’s Encrypt 的 wildcard certificate 實作大概要注意以下幾點:

  • 要用 ACME v2 compatible client(官方有提供列表: ACME Client Implementations
  • 不能用 HTTP challenge,改用 DNS challenge

使用 dehydrated 進行 DNS challenge 可以參考這幾份文件:

我選擇用 nsupdate 的方式(參考 dehydrated Wiki : example dns 01 nsupdate script),在 DNS master server 建立 _acme-challenge.{DOMAIN} 的 NS record,讓 hook script 透過 nsupdate 連線到指定的 name server 更新 TXT record 。

DNS 方面完成後,要記得佈署 hook script 與 nsupdate 使用的 key。
接著是調整語法,原本的語法:

/SOMEWHERE/dehydrated/dehydrated -c -d {網站hostname}

改為:

/SOMEWHERE/dehydrated/dehydrated \
    -c -d *.{DOMAIN} \
    -t dns-01 -k {HOOK_SCRIPT} \
    --alias wildcard.{DOMAIN}

( –alias 指定的 wildcard.{DOMAIN} 會成為目錄名稱,用來存放憑證 )