Today we've renewed one of our Let's Encrypt certificate using certbot, and it seems it signed it with the new intermediate certificate due to the transition to ISRG's Root.
Unfortunately, we had our certificate distributed on a desktop app with SSL pinning relying on it. This means that our application basically broke.
Just in case, can you think in any way to recover from this situation? Thanks in advance!
Edit: Adding more context, we renewed the cert with the new R3 intermediate cert, while our apps are expecting the old X3 one.
The problem is that every communication fails between our servers and the apps fail due to the ssl pinning, so we don't have a way to unpin it for all our installed base.
Just to confirm, once signed up with the new R3, there is not any chance of getting it signed back with the R3, correctly?
At least we need to try, hope you understand. Thx in advance!
PS: Never, never, never use hard coded intermediate certificates. They can always change, it's always possible that such a certificate must be revoked.
What's would you consider the best alternative then? Sorry for my lack of knowledge here, obviously I have a lot of gaps regarding the proper use of certs .
This is incorrect. The change from X3 to R3 is not related to the ISRG root transition. Intermediates can change at any time and this should not cause any problems. If it does, than the implementation is incorrect.
The ACME server always sends the complete chain, i.e. end leaf certificate including the intermediate certificate used to sign it. Your ACME client should use this feature to either separately store the used intermediate, offer the chain as a complete set or both of these two options.
Two possibilities exist:
You're using an ACME client which is not properly designed, or
You're not using the intermediate certificate provided by your ACME client.
With every renewal, certbot updates all the files, including the intermediate which was used to sign the certificate. You can find the intermediate certificate in chain.pem and the end leaf cert plus intermediate in fullchain.pem.
Yeah, Certbot will change the contents of chain.pem when you do a renewal if the intermediate suggested by the CA (which is based on the intermediate that signed the leaf certificate) has changed. If some part of your environment elsewhere (like TLS clients) assumes that it will never change, then you won't be able to take proper advantage of the way that Certbot is giving you an up-to-date chain.pem file!
Really good answers. What would be in your opinion the proper design to do ssl pinning between a server and a desktop app using the intermediate certificate? I assume that we should have a way to update this cert remotely (for updating old versions). Another option is to stop using this intermediate cert as it could effectively change.