openssl 1.0 vs 1.1 s_client verify CA cert expiration
Matt Caswell
matt at openssl.org
Thu Sep 30 16:50:40 UTC 2021
See:
https://www.openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire/
Matt
On 30/09/2021 17:43, nate wrote:
> Hello there
>
> I support an app stack over here and a short time ago one of the devs
> contacted me saying
> that they were getting some SSL cert errors connecting to a server.
>
> Investigating things it turns out to be the Let's encrypt CA cert
> expiration that
> happened recently, that server is managed by someone else so they are
> trying to
> get them to fix it.
>
> While investigating I saw some strange behavioral differences between
> OpenSSL 1.0 and
> 1.1 specifically regarding checking of the CA cert.
>
> If I run this on OpenSSL 1.0.2g (Ubuntu 16.04)
>
> openssl s_client -connect bad_server_name:443 -servername bad_server_name
> (the server in question uses SNI)
>
> I get at the end a clear:
> Verify return code: 10 (certificate has expired)
>
> If I run on the same OpenSSL:
>
> openssl s_client -connect bad_server_name:443 -servername
> bad_server_name | openssl x509 -noout -dates
>
> I get these dates:
> notAfter=Sep 30 14:01:15 2021 GMT
> notBefore=Aug 31 17:59:09 2021 GMT
> notAfter=Nov 29 17:59:08 2021 GMT
>
> Which clearly shows the expired cert.
>
> If I try the same on OpenSSL 1.1.1f (Ubuntu 20.04), I get only the
> server cert
> not the CA cert dates:
> notBefore=Aug 31 17:59:09 2021 GMT
> notAfter=Nov 29 17:59:08 2021 GMT
>
> Also on the first command there is no error saying the cert is expired
> on OpenSSL 1.1.1f
>
> additional differences it seems 1.1.1f defaults to a verify depth of 2
> and 1.0.2g goes at least
> to 3 (perhaps more).
>
> If I add -verify 3 to 1.1.1f to connect the first bit of output is:
> verify depth is 3
> depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
> verify return:1
> depth=1 C = US, O = Let's Encrypt, CN = R3
> (even if I set verify depth to 10 it doesn't report anything higher than
> the cert above)
>
> However on 1.0.2g I get this as the first bit of output:
> depth=3 O = Digital Signature Trust Co., CN = DST Root CA X3
> verify error:num=10:certificate has expired
>
> Can someone point me to the syntax for 1.1.1f that would get it to
> verify the CA? Or is this
> a bug (maybe already fixed in a newer version not sure).
>
> I am unsure why Let's encrypt would allow any certs to be signed with a
> CA cert that
> was about to expire(especially given their low cert expiration times)
> but that's their
> issue.
>
> thanks
>
> nate
>
More information about the openssl-users
mailing list