サーバー管理に便利なWebコンソールのcockpitだが、サーバー証明書がない環境だと0-self-signed.certという自己署名証明書を生成して終わってしまう。 ApacheにはLet’s Encryptによる証明書を導入しているので、これをcockpit用に転用する。
cockpit-ws(Cockpit web service)に設定する証明書は以下の形式である必要がある。
最小構成 |
---|
—–BEGIN CERTIFICATE—– サーバー証明書ブロック —–END CERTIFICATE—– |
—–BEGIN PRIVATE KEY—– PRIVATE KEYブロック —–END PRIVATE KEY—– |
中間証明書を含む構成 |
---|
—–BEGIN CERTIFICATE—– 中間証明書ブロック —–END CERTIFICATE—– |
—–BEGIN CERTIFICATE—– サーバー証明書ブロック —–END CERTIFICATE—– |
—–BEGIN PRIVATE KEY—– PRIVATE KEYブロック —–END PRIVATE KEY—– |
Apacheに設定した証明書はcronで起動されるcertbotで更新されるので、その更新を検知してcockpit用証明書を複製するスクリプトを作成した。
#!/bin/sh CERTFILE=/etc/letsencrypt/archive/domain.jp/cert1.pem KEYFILE=/etc/letsencrypt/archive/domain.jp/privkey1.pem NEWCERT=/etc/cockpit/ws-certs.d/cockpit.cert update=0 if [ -e ${NEWCERT} ] then fp1=`openssl x509 -fingerprint -noout -in ${CERTFILE}` fp2=`openssl x509 -fingerprint -noout -in ${NEWCERT}` if [ "${fp1}" != "${fp2}" ] then update=1 fi else update=1 fi if [ ${update} -eq 1 ] then cat ${CERTFILE} ${KEYFILE} > ${NEWCERT} chmod 640 ${NEWCERT} chown root:cockpit-ws ${NEWCERT} fi