先前提到 ISP 可以透過 http-01 的方式申請到合法的 SSL 憑證的方式:「ISP 偽造出合法的 SSL certificate,對放在德國的 xmpp.ru 進行 MITM 監聽」。
Let's Encrypt 是有提供對應的方法,透過 DNS 的 CAA record 限制只有特定的帳號才能使用 http-01 的方式取得 SSL 憑證,這樣就可以避免 ISP 從中間申請到。
方法在「Certificate Authority Authorization (CAA)」這頁,設定的方式是先取得機器上的 account id,像是我用 dehydrated 的,會在 /etc/dehydrated/accounts/ooxx/account_id.json
這個檔案裡面,像是這樣:
{"url":"https://acme-v02.api.letsencrypt.org/acme/acct/104177199"}
其中的 https://acme-v02.api.letsencrypt.org/acme/acct/104177199
就是設定時會用到的資料。
接下來是到 DNS 系統上設定 CAA record,依照官方的說明,如果單設 letsencrypt.org
是表示所有 Let's Encrypt 上的帳號都可以申請,後面增加 ;accounturi=
代表指定只有這個帳號才可以申請,其他帳號是不能申請的:
0 issue "letsencrypt.org;accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/104177199"
設定完後可以利用強制 renew 的方式確認一下沒問題,像是 dehydrated -c --force
這樣的指令。