サイトアイコン ex1-lab

CentOS Stream 9のCockpitで、Let’s EncryptのSSL証明書を利用する

centos_logo

centos_logo

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」は以下のような証明書ファイルとなっています

上記をの証明書を、Let’s EncryptのSSL証明書の内容に上書きします。Let’s Encryptで利用する各SSL証明書は以下となります

$ sudo ls /etc/letsencrypt/live/example.com
cert.pem  chain.pem  fullchain.pem  privkey.pem  README

上書きするファイルの種類と詳細は以下となります。

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

 

モバイルバージョンを終了