Я создаю сертификат с помощью Letsencrypt, используя контейнер Certbot:
$ mkdir /home/$USER/letsencrypt
$ docker run -it --rm -p 80:80 -p 443:443 -v /home/$USER/letsencrypt:/etc/letsencrypt certbot/certbot certonly --standalone --email user@example.com --agree-tos -d example.com
Я перехожу к созданному сертификату:
$ cd /home/$USER/letsencrypt/live/example.com
Я могу проверить chain.pem
:
$ openssl verify chain.pem
chain.pem: OK
И я вижу, что в chain.pem
:
$ openssl x509 -noout -in chain.pem -subject -issuer
subject=C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
issuer=O = Digital Signature Trust Co., CN = DST Root CA X3
Я не могу проверить cert.pem
(предположительно, потому что ему нужна цепочка):
$ openssl verify cert.pem
CN = example.com
error 20 at 0 depth lookup: unable to get local issuer certificate
error cert.pem: verification failed
Но я также не могу проверить fullchain.pem
:
$ openssl verify fullchain.pem
CN = example.com
error 20 at 0 depth lookup: unable to get local issuer certificate
error fullchain.pem: verification failed
Сертификат, похоже, работает в браузере, но не работает в curl
(и клиенте HTTP http, что является реальной проблемой):
$ curl https://example.com
curl: (60) SSL certificate problem: unable to get local issuer certificate
Я дважды проверил, что fullchain.pem
является объединением cert.pem
и chain.pem
.
Итак: я не понимаю, почему fullchain.pem
нене проверить?