更換 SSL 憑證與 DNSSEC 演算法

近期處理一些網站 SSL 憑證與 DNSSEC 相關的事,寫這篇留點紀錄供日後參考…

原先的 SSL 憑證幾乎都是透過 certbot 取得 (參考:用 certbot 取用 Let’s Encrypt 的 certificates);在 ECDSA certificates by default and other upcoming changes in Certbot 2.0 能看到其預設的演算法已從 RSA 變更成 ECDSA,但… 早期取得憑證時產生的設定檔仍須自己做更改。
設定檔都在 /etc/letsencrypt/renewal 目錄裡面,調整後的參數如下:

...
[renewalparams]
...
key_type = ecdsa
# default: secp256r1
#elliptic-curve = secp384r1
...

在準備更換 SSL 憑證時,找了些資料,恰巧看到 RFC 8624 – Algorithm Implementation Requirements and Usage Guidance for DNSSEC,就順便處理 DNSSEC 的事。


依據 3.1 節的說明,ED25519 是最佳選擇,其次就是 ECDSAP384SHA384 或 ED448;選擇演算法前,必須先看看域名註冊商提供的設定項。

以 ED25519 為例,我的操作流程如下:

  1. 先產生金鑰 (第一行指令產生 ZSK,第二行指令產生 KSK)
    # dnssec-keygen -a ED25519 ##DOMAIN##.tw
    # dnssec-keygen -f KSK -a ED25519 ##DOMAIN##.tw
    
  2. 把 K##DOMAIN##.tw.+015+##ID##.key 的內容提供給域名註冊商;若域名註冊商需要的是 DS record,可先透過下述指令取得:
    # dnssec-dsfromkey K##DOMAIN##.tw.+015+##ID##.key
    
  3. 把舊的 ZSK 跟 KSK 檔案刪除
  4. 修改域名的 searial
  5. 重新啟動 DNS service

過一段時間後,可以透過一些線上工具作驗證,像是 DNSViz | A DNS visualization tool