What I'm trying to do:
- I want set up a server that behaves the same as https://valid-isrgrootx1.letsencrypt.org/ (which returns a cert that only chains up to ISRG Root X1) so that I can gain confidence that our existing android clients running an old android OS can hit an endpoint with certs issued stating in January 2020. (see this post from letsencrypt for details) The reason I want to have my own server up is that there are certain endpoints I'd like to hit and have it return
201
so subsequent calls can be made against other endpoints. Without hosting my own server, I cannot have test certain scenarios aside from "user can log in".
My test domain is: api-isrg-root-x1.maishameds.org
OS: ManjaroLinux 20.1.2
I installed certbot via pacman and the version is certbot 1.9.0
. My openssl
version is: OpenSSL 1.1.1h 22 Sep 2020
I ran this command:
sudo certbot certonly --manual --preferred-chain "ISRG Root X1" --preferred-challenges dns
I obtained a cert via this command:
sudo certbot certonly --manual --preferred-chain "ISRG Root X1" --preferred-challenges dns
Then I configured my DNS records so that I have an A record and a TXT record, and the challenge was completed successfully. Files of fullchain.pem / chain.pem / cert.pem / privatekey.pem were generated.
Then I went to identrust and https://letsencrypt.org/certs/ and downloaded the .pem files for:
- (root) ISRG Root X1
- (root) DST Root CA X3
- (Intermediate) Let’s Encrypt R3
But when I run the following:
sudo openssl verify -CAfile /etc/letsencrypt/live/<my_domain>/cert.pem lets-encrypt-r3.pem identrust.pem isrgrootx1.pem lets-encrypt-r3-cross-signed.pem
It says that all of it is verified.
lets-encrypt-r3.pem: OK
identrust.pem: OK
isrgrootx1.pem: OK
lets-encrypt-r3-cross-signed.pem: OK
When I load a website that serves that exact same cert, I see that the chain is:
<my domain> -> R3 -> DST ROOT X3
Behavior differed from what I expected because:
I expected the output of openssl verify
against identrust.pem
to say ERROR
and lets-encrypt-r3-cross-signed.pem
to also say ERROR
and only OK
for lets-encrypt-r3
and isrgrootx1.pem
and I expect that on firefox, the certificate chain when I go to my domain to say: <my domain> -> R3 -> ISRG Root X1
Am I configuring something incorrectly? Why does openssl verify
return OK
for all? Or is it impossible to get a cert that only points to ISRG Root X1 at this moment?