之前已經處理過 DS216play 的情況,撰寫過兩篇筆記:
- 2018年 - [NAS] Private IP Server 與 Let's Encrypt Wildcard SSL 憑證 / HTTPS 服務
- 2022年 - [NAS] Private IP / Custom Domain / Wildcard SSL / HTTPS 憑證定期更新與設定 @ DS216play / DSM 7.1
這次在處理 DS723+ / DSM 7.2.1 時,有在追細一點,但整體上的流程 2022年的那篇只做了一半,他並沒有做到自動更新,而當時追的時候也沒追清楚。
簡略的流程:
- 參考 2022年的方式,先透過 acme.sh 產出憑證(例如用 Cloudflare 維護 DNS record 時,可以輕鬆呼叫 Cloudflare API 完成 txt record 更新),接著到 Synology 網頁管理 -> 控制台 -> 連線能力 -> 憑證 -> 新增 -> 新增憑證 -> 匯入憑證
- 這時匯入完畢後,其實在系統底層可以看到資訊,我原先在 2022年那篇誤認為 /usr/syno/etc/www/certificate/system_default/cert.conf 的描述位置(因為從 Nginx 設定檔有關),細追後,發現真正的位置在 /usr/syno/etc/certificate/_archive/ 某個目錄內
- 用 cat /usr/syno/etc/certificate/_archive/INFO 可以看到你自己上傳的憑證,假設是在 /usr/syno/etc/certificate/MySelf 這目錄,內有 cert.pem, chain.pem, fullchain.pem, privkey.pem
- 這時若把 acme.sh 安置好,可以在 Synology NAS 內某個使用者的家目錄運行,那在他家目錄中就會有 ~/.acme.sh/*.YourDomain_ecc/ 這類位置,內有 ca.cer, '*.YourDomain.cer', '*.YourDomain.key', 'fullchain.cer' 和 '*.YourDomain.pkcs8',這時,就要把 /usr/syno/etc/certificate/MySelf 內的完成同步更新,例如使用 symbolic link
- 後續,就回到 Synology 網頁介面 -> 控制台 -> 任務排程表 -> 新增一則任務並使用 root 權限 -> 設定每月執行一次 -> 在使用者定義指令碼那邊,可以直接呼叫 script (例如包裝成 renew-ssl.sh)在指定使用者家目錄完成憑證更新、接著在把 nginx reload
- sudo -u YourNASUser bash /var/services/homes/YourNASUser/renew-ssl.sh
- sudo nginx -t && sudo synopkg restart --service nginx && sudo synosystemctl reload nginx
現況應當還有個隱憂,那就是 /usr/syno/etc/certificate/MySelf/*.pem 可完成自動更新,那 nginx 設定取得的憑證資訊是否也會更新?目前推猜好像不是同步的,且更新時機也還不明,只能等下個期週期後再來看看了。暫時推論是在設定憑證的系統預設時,才從 /usr/syno/etc/certificate/MySelf/*.pem 複製到 /usr/syno/etc/www/certificate/system_default/ 使用
沒有留言:
張貼留言