cockpit 是個方便好用的 linux 管理員介面:
安裝完成後, 由於預設是自簽的 ssl 憑證, 所以會有需要強制瀏覽器在自簽憑證下使用, 若需要使用 letsencrypt 憑證, 可以利用 acme.sh 來進行自動化簽發(issue)與安裝(install).
而 acme.sh 配合 apache / nginx 來簽發 ssl 是都可以的, 請參考:
https://github.com/acmesh-official/acme.sh
不過在 cockpit 是需要將已簽發的 key 與 cer 合併後, 放在 /etc/cockpit/ws-certs.d 目錄中, 可以參考:
https://cockpit-project.org/guide/228/https.html
然而在 acme.sh 中, 沒有直接產出合併的檔案可以供 cockpit 用, 所以要如何自動化後續的更新, 可以利用 .acme.sh –install-cmd 中的 reloadcmd 參數來實現合併 cert 後, 並重起服務, 指令如下:
./acme.sh --install-cert -d [domain] --reloadcmd "cat \$CERT_KEY_PATH \$CERT_FULLCHAIN_PATH > /etc/cockpit/ws-certs.d/50-[domain].cert && service cockpit restart"
其實就是藉由原來在執行 reload 指令時, 前面多利用了 cat 指令將兩個檔案合併寫入至 cockpit 中所需要的 cert 檔案即可, 再重起 cockpit 服務就完成囉. 這樣一來指令也會寫入 Le_ReloadCmd 的 acme.sh 的對應域名參數檔案中, 十分方便.
參考資料:
https://github.com/acmesh-official/acme.sh/issues/793#issuecomment-317987555