Remove the DST_Root_CA_X3.crt from Ubuntu 14.04 LTS
I’ve got your back if you’re here trying to see how to install the new Let’s Encrypt ISRG root certificate on older Ubuntu.
Today (with currently only 15 minutes to go) it’s nearly time for the Digital Signature Trust Co., DST Root CA X3 certificate DST_Root_CA_X3.pem
to expire:
$ openssl x509 -enddate -noout -in /etc/ssl/certs/DST_Root_CA_X3.pem
notAfter=Sep 30 14:01:15 2021 GMT
This was the root certificate that Lets Encrypt used to sign their certificates with, but since 2015 Let’s Encrypt have their own new root certificate ISRG Root X1 (see below if you need to install this on your Ubuntu 14.04 box) and are signing with this instead. This normally wouldn’t be a problem were it not for legacy clients that can’t receive the new root certificate and will continue to use the expired one.
In my case, the legacy clients are binaries built and linked against older 1.0.2 versions of openssl. I’m using the Workaround 1 method suggested on openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire:
Just remove the expired root certificate (DST Root CA X3) from the trust store used by the OpenSSL 1.0.2 TLS client to verify the identity of TLS servers. If the new ISRG Root X1 self-signed certificate isn’t already in the trust store, add it.
There is no downside to this workaround apart from the need to modify all the potential OpenSSL 1.0.2 TLS client hosts trust stores.
But as they point out “The removal and addition of certificates from/into the system certificate trust stores is a highly specific operation depending on the operation system”.
In my case on an old Ubuntu 14 LTS server, I did it like this:
sudo sed -i"" 's/mozilla\/DST_Root_CA_X3.crt/!mozilla\/DST_Root_CA_X3.crt/' /etc/ca-certificates.conf
sudo dpkg-reconfigure -fnoninteractive ca-certificates
sudo update-ca-certificates
And there’s no longer a /etc/ssl/certs/DST_Root_CA_X3.pem
file present. But I do still have the newer ISRG Root X1 certificate, which expires in 2035;
$ openssl x509 -enddate -noout -in /etc/ssl/certs/ISRG_Root_X1.pem
notAfter=Jun 4 11:04:38 2035 GMT
Installing the ISRG Root X1 on Ubuntu 14.04
If you don’t have the ISRG Root X1 certificate, you can do it from the latest stable source certificates (requires you to have a working wget
and unxz
or at least a way of getting the uncompressed .tar
file onto your target machine). You might also want to check out the comments to my answer on this at Ask Ubtuntu - some people had to interactively select the new root certificate and/or make changes to way openssl calls rehash.
# Also available at https://askubuntu.com/a/1366719/233579
mkdir -p ~/src
cd ~/src
wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/ca-certificates/20210119~20.04.2/ca-certificates_20210119~20.04.2.tar.xz
unxz ca-certificates_20210119~20.04.2.tar.xz
tar -xf ca-certificates_20210119~20.04.2.tar
cd ca-certificates-20210119~20.04.1
make
sudo make install
sudo dpkg-reconfigure -fnoninteractive ca-certificates
sudo update-ca-certificates
All links, in order of mention:
- how to install the new Let’s Encrypt ISRG root certificate on older Ubuntu: #installing-the-isrg-root-x1-on-ubuntu-1404
- root certificate that Lets Encrypt used to sign their certificates with: https://scotthelme.co.uk/lets-encrypt-old-root-expiration/
- since 2015: https://crt.sh/?id=9314792
- have their own new root certificate: https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/
- ISRG Root X1: https://letsencrypt.org/certificates/
- openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire: https://www.openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire/
- the comments to my answer on this at Ask Ubtuntu: https://askubuntu.com/a/1366719/233579
Recent posts:
- Patch for aarch64 (aka arm64) openssl 1.0.2 'relocation R_AARCH64_PREL64 against symbol OPENSSL_armcap_P error'
- TIL: the `NO_COLOR` informal standard to suppress ANSI colour escape codes
- Copy the contents of a branch into an existing git branch without merging
- Adding search to a static Jekyll site using pagefind
- asdf, python and automatically enabling virtual envs