分類
好用軟體

cockpit安裝ssl憑證自動化

cockpit 是個方便好用的 linux 管理員介面:

https://cockpit-project.org/

安裝完成後, 由於預設是自簽的 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