最近想使用 Synology 其提供的自動註冊 SSL 憑證功能,但我的 DSM 版本過舊會出現 指令執行失敗,請重新登入DSM再試一次。
的訊息,細查後了解原來是 Let’s Encrypt 停止支援 ACMEv1 的申請方式,導致舊版 DSM 的程式 syno-letsencrypt
無法成功執行。
syno-letsencrypt
這隻程式是 Synology DSM 在下方畫面執行時會呼叫的 back-end 程式
事情的緣由是 Let’s Encrypt 在 2019 年底時公告 End of Life Plan for ACMEv1 將驗證方式 acme-v01 關閉造成舊版驗證方式失效,Synology 也在新版 DSM 6.2 處理掉這個問題,但如何在不升級 DSM 的情況下解決這個狀況?這個時候我找到了外國鄉民 Synology DSM 6.1 (xpenology) Lets Encrypt ACMEv1 to ACMEv2 從新版 DSM 6.2 提取的 syno-letsencrypt
這隻程式,確定了只要單獨替換此程式即可在不升級 DSM 的情況下輕鬆解決。
為了避免下載到加料版,我直接從 DSM_DS3615xs_25426.pat\hda1.tgz\hda1\usr\syno\sbin\
提取了 syno-letsencrypt 出來使用,這邊我也附上檔案提供給懶人下載。
更新步驟如下:
- 準備好 syno-letsencrypt 並解壓縮後複製到 Nas 上 (密碼:https://exfast.me/)
- 使用 SSH 連線至 Nas
- 將
syno-letsencrypt
複製到/usr/syno/sbin/
sudo cp /volume1/system/syno-letsencrypt /usr/syno/sbin/
- 使用文字編輯器將
/usr/syno/etc.defaults/letsencrypt/letsencrypt.default
打開sudo vim /usr/syno/etc.defaults/letsencrypt/letsencrypt.default
- 將欄位 server 值替換成
https://acme-v02.api.letsencrypt.org/directory
{ "server": "https://acme-v02.api.letsencrypt.org/directory", "synoddns": "https://ddns.synology.com/main.php", "renew_before_expire_days":30 }
- 接著重開機後就可以使用 DSM 的介面正常申請 Let’s Encrypt 的 SSL 憑證囉