CentOS Stream 9のCockpitで、Let’s EncryptのSSL証明書を利用する
CockpitでSSL証明書が利用できない。「gnutls_handshake failed: A TLS fatal alert has been received.」のエラー
以前のCentOS Stream 9では、SSL証明書とプライベートキーをマージしたファイルを利用してSSL証明書として利用していました。数ヶ月前からCockpitのWEB画面にアクセスすると、証明書のエラーが表示されSSL接続ができなくなっていました
ログを確認すると下記のように、「gnutls_handshake failed: A TLS fatal alert has been received.」とエラーが表示されています
$ sudo journalctl -u cockpit Aug 07 14:12:53 example.com cockpit-tls[8581]: cockpit-tls: gnutls_handshake failed: A TLS fatal alert has been received.
Cockpitで利用しているSSL証明書を確認する
Cockpitでは、どの証明書を利用するか確認すると、「merged certificate and key files are unsupported. Please use a separate .cert and .key file.」とエラーが上がっています。マージされた証明書とプライベートキーはサポート外となっているので、ファイルをマージするのは駄目になったようです
$ sudo /usr/libexec/cockpit-certificate-ensure --check cockpit-certificate-ensure: /etc/cockpit/ws-certs.d/ssl.cert: merged certificate and key files are unsupported. Please use a separate .cert and .key file.
Cockpitの証明書のディレクトリを確認すると以下となっており、「0-self-signed-ca.pem」,「0-self-signed.cert」,「0-self-signed.key」のファイルに生成されていました
$ ls -l /etc/cockpit/ws-certs.d/ total 12 -rw-r--r-- 1 root root 3578 Aug 7 14:25 0-self-signed-ca.pem -rw-r--r-- 1 root root 1777 Aug 7 14:24 0-self-signed.cert -rw------- 1 root root 1704 Aug 7 14:25 0-self-signed.key -rw------- 1 root root 1704 Jul 7 16:35 ssl.cert
上記の新しい「0-self-signed-ca.pem」,「0-self-signed.cert」,「0-self-signed.key」は以下のような証明書ファイルとなっています
- 0-self-signed-ca.pem
- 種類: 自己署名CA証明書
- 説明: これは自己署名証明書(Self-Signed Certificate)のCA(Certificate Authority)証明書ファイルです。CA証明書は、他の証明書を発行するための基盤として機能します。このファイルには、証明書の発行元の公開鍵情報が含まれています。
- 0-self-signed.cert
- 種類: SSL証明書
- 説明: これはCockpitが使用するSSL証明書ファイルです。この証明書は自己署名されています。通常、Webサーバーやサービスがクライアントとの通信を暗号化するために使用されます。このファイルには、公開鍵情報が含まれています。
- 0-self-signed.key
- 種類: プライベートキー
- 説明: これはSSL証明書に対応するプライベートキーファイルです。プライベートキーは、証明書と対になる秘密鍵であり、暗号化通信を行う際に使用されます。このファイルは厳重に保護されるべきです。
上記をの証明書を、Let’s EncryptのSSL証明書の内容に上書きします。Let’s Encryptで利用する各SSL証明書は以下となります
$ sudo ls /etc/letsencrypt/live/example.com cert.pem chain.pem fullchain.pem privkey.pem README
上書きするファイルの種類と詳細は以下となります。
- cert.pem
- 種類: SSL証明書
- 説明: これはドメインに対して発行された公開鍵証明書です。Cockpitでは
0-self-signed.cert
の代わりに使用します。
- chain.pem
- 種類: 中間証明書
- 説明: これはSSL証明書チェーンの中間証明書です。ブラウザがサーバー証明書を信頼できるようにするためのものです。Cockpitで使用する場合、このファイルは必要ありませんが、
fullchain.pem
に含まれているため特に別途設定する必要はありません。
- fullchain.pem
- 種類: 完全な証明書チェーン
- 説明: これはドメイン証明書と中間証明書が含まれたファイルです。Cockpitでは
0-self-signed-ca.pem
の代わりに使用します。
- privkey.pem
- 種類: プライベートキー
- 説明: これはドメイン証明書に対応するプライベートキーです。Cockpitでは
0-self-signed.key
の代わりに使用します。
Let’s Encryptで利用するSSL証明書をCockpitのSSL証明書として利用する設定
具体的には、「cert.pem」を「0-self-signed.cert」に、「privkey.pem」を「0-self-signed.key」に、「fullchain.pem」を「0-self-signed-ca.pem」に上書きします
$ sudo cat /etc/letsencrypt/live/example.com/fullchain.pem > /etc/cockpit/ws-certs.d/0-self-signed-ca.pem $ sudo cat /etc/letsencrypt/live/example.com/cert.pem > /etc/cockpit/ws-certs.d/0-self-signed.cert $ sudo cat /etc/letsencrypt/live/example.com/privkey.pem > /etc/cockpit/ws-certs.d/0-self-signed.key
プライベートキーファイルの権限を設定します。
$ sudo chmod 600 /etc/cockpit/ws-certs.d/0-self-signed.key $ sudo chown root:root /etc/cockpit/ws-certs.d/0-self-signed.key
Cockpitを再起動して、新しい証明書を反映させます。
$ sudo systemctl restart cockpit
ディスカッション
コメント一覧
まだ、コメントがありません