Je crée un certificat avec Letsencrypt en utilisant le conteneur 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
Je navigue vers le certificat généré :
$ cd /home/$USER/letsencrypt/live/example.com
Je peux vérifier chain.pem
:
$ openssl verify chain.pem
chain.pem: OK
Et je peux voir ce qu'il y a dans 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
Je ne peux pas vérifier cert.pem
(vraisemblablement parce qu'il a besoin de la chaîne) :
$ openssl verify cert.pem
CN = example.com
error 20 at 0 depth lookup: unable to get local issuer certificate
error cert.pem: verification failed
Mais je ne peux pas non plus vérifier fullchain.pem
soit :
$ openssl verify fullchain.pem
CN = example.com
error 20 at 0 depth lookup: unable to get local issuer certificate
error fullchain.pem: verification failed
Le certificat semble fonctionner dans le navigateur, mais échoue dans le système d'information de l'entreprise. curl
(et un client http Android, qui est le vrai problème) :
$ curl https://example.com
curl: (60) SSL certificate problem: unable to get local issuer certificate
J'ai vérifié deux fois que fullchain.pem
est une concaténation de cert.pem
y chain.pem
.
Donc : Je ne comprends pas pourquoi fullchain.pem
ne vérifie pas ?