解決したいこと
まだ、Let's Encryptの証明書をUbuntuが信用してくれてないようです。信用されていないため、拒否されてしまいます。それを解決したいです。
例えば、https://hogehoge.io がLet's EncryptのSSL証明書を使っているときに、
以下のようにUbuntuでcurl
すると、エラー"server certificate verification failed."などといわれて、接続を拒否されることがあります。
$ curl https://hogehoge.io
curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.
環境は以下のとおりです。
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.5 LTS"
(環境はクライアントの環境です。hogehoge.ioが運営されているサーバーの環境は今回は全く関係ありません)
[追記] サーバーの設定ミス
Let's Encryptを使っているサーバーの設定のミスで発生していることが分かったので追記します。
/etc/letsencrypt/live/hogehoge.io/fullchain.pem
をcertとすべきところをcert.pem
にしてました。
その場しのぎの対処方法
上のエラー文にも出ているとおり、-k
か--insecure
を使えば無理やりcurl
できます。
curl -k https://hogehoge.io
ただし、恒久的な対処方法ではないです。
恒久的な対処法
恒久的な対象方法として、
Let's EncryptのRoot Certificatesをインストールします。
# ディレクトリを移動する
cd /usr/share/ca-certificates
# crtをダウンロードする
sudo wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem.txt
# 何らかのエディタで/etc/ca-certificates.confに一行追記する
sudo vim /etc/ca-certificates.conf
一行追記するのは、ダウンロードした lets-encrypt-x3-cross-signed.pem.txt
です。
具体的には以下のように追記します。新しく追加したファイルのパスを**/usr/share/ce-certificetsからの相対パス**で追記すれば良いようです。
... .crtがたくさん並んでいる ...
mozilla/OpenTrust_Root_CA_G2.crt
mozilla/OpenTrust_Root_CA_G3.crt
mozilla/SZAFIR_ROOT_CA2.crt
mozilla/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.crt
# 以下の行を追加する
lets-encrypt-x3-cross-signed.pem.txt
追記後に以下のコマンドで設定を反映させます。
sudo update-ca-certificates
以上で完了です。