[Interest] SSL & Let's Encrypt certificate expiration

Thiago Macieira thiago.macieira at intel.com
Tue Oct 5 19:52:17 CEST 2021


On Tuesday, 5 October 2021 10:29:09 PDT maitai wrote:
> Hi all,
> 
> Since the Let's Encrypt root certificate expired, we have a few users
> unable to initiate a SSL connexion (most of them on recent Windows 10
> version, app built with qt 5.15.6, but also some linux cases). We are
> using OpenSSL 1.1.1.

Being slightly pedantic for future reference: no Let's Encrypt CA certificate 
expired. What expired was one of the root certificates that signed Let's 
Encrypt. It's not the only certificate, so Let's Encrypt continues to be 
valid.

> After some searches, we found out that the ca-certificates list is empty
> in that cases. In some Linux occurrences, the list becomes "loaded"
> after around 10 minutes, and all was fine until the user restarts the
> application. In some other cases waiting does nothing to fix the issue.

We don't pre-load the CA certificate list and haven't done that for years. We 
rely on OpenSSL loading exactly the certificates it needs on its own.

> I am still scratching my head about this though. Isn't it supposed to be
> useless to do that? Any insight on what is going on there will be
> appreciated.

Needs investigation. I don't understand what's wrong either.

In my case, I noticed that one application on my Android phone was complaining 
of an expired certificate for my server. After debugging a lot, I found that 
my IMAP server (Cyrus) was including the expired certificate in the list of 
certificates it sent the client, but the SMTP and HTTPS servers weren't. So I 
worked to hack the OpenSSL certificate database so it wouldn't send it.

It didn't work. As far as I can tell, in this case, the client application 
found the expired signing certificate in its own database and decided to 
complain, despite having another path to a valid root certificate.

But this points to the possible problem: it might depend on whether the server 
is including this expired certificate in the connection negotiation or not. 
You can test with "openssl s_client -connect host:port -showcerts" and decode 
each one of the ones printed with "openssl x509 -text -noout" to see if the 
expired one is present or not.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel DPG Cloud Engineering





More information about the Interest mailing list