Since the beginning of this year, Let’s Encrypt rolled out a new shortlived profile for certificates that make them valid for only 160 hours. The intention, as they say, is to encourage automation and reduce the window of certificate compromise (because revocation is somewhat a flakey thing).
Yet, I haven’t seen a lot of news about it since then. Hence the question: is this shorter cert thingy something you considered and deployed for your homelab?
As for me I’ve set up lego-acme with profile: "shortlived" on my rig. Lego runs on a bihourly cronjob, but only renews when a cert has >=3 days to expiry. It’s been pretty much a set-and-forget experience, although some more monitoring would be nice.
One step closer to single use certificates. Great…
Not 6 day but already set under what it’s going to be worldwide in 2029. https://www.digicert.com/blog/tls-certificate-lifetimes-will-officially-reduce-to-47-days
I’m happy with 90 day certs for homelab stuff: I’m not worried about anyone MITMing my network. I figure the short lived certs are more important for people who provide services with a significant external user-base, or who process sensitive transactions.
I have my certbot set to check every 12 hours and renew at 60 days. Renewing every 3 days would be 20x more load on Let’s Encrypt systems, and that feels like abuse of a free service for my use case.
I think they encourage that increased frequency by offering shortlived certs to begin with…
Although do note that normal certificates will reduce its lifetime to 45 days over the next few years
I migrated from vanilla Nginx Proxy Manager to NPMplus (because of CrowdSec), and it defaults to short-lived certificates. Other than temporarily making my Uptime Kuma SSL monitors completely freak out because my certificates “were too close to expiration”, everything still works exactly the same.
Interesting, I didn’t know NPMplus was a thing. Looks like I’ve got some researching and possibly reconfiguring to do…
I plan to operate on expired certificates for two to four years, forcing all three of my users to click past a terrible warning.
Then I will automate my six day certificate rotation with Ansible (officially), but maybe actually with a stupid bash script in CRON (unofficially).
Honest, non-techie question: How is it an advantage? Given modern crypto isnt it more likely that a mitm didn’t crack the crypto but instead got somehow else in the middle and just can “ignore” certs renewals?
Several reasons
- If a private key leaks, a shorter certificate lifespan limits the fallout
- Faster upgrades to new cryptographic standards. If some of the crypto methods used get broken, short lived certificates means they get replaced with newer methods faster
- Short lived certificates force sysadmins to automate the renewal process. This prevents expired certificates due to forgetting the manual renewal.
- Certificate lifetime and domain ownership mismatch. You could buy a 2 year certificate for somedomain.com and then sell the domain or just let it expire and have it picked up by someone else. You then have a valid certificate for a domain you no longer ow and you could MitM traffic for the new owner’s website.
You make some good arguments so I’m not attacking you at all, just my thoughts on your points. These short renewal times are getting to the point of ridiculousness and creating another point of failure with little time to do anything about it. I find these super short certs less than useful, create many more possible problems, and not really necessary except for a small set of circumstances. And I have been in IT as a web dev/sys admin/systems architect for over 30 years now.
- If a private key leaks you’ve likely done something wrong. Practice better key management and don’t be stupid
- Updating certs to keep up with new crypto standards is useless. For one they don’t change that often and if there is a pressing reason you can’t update earlier.
- Yes the processes have to be automated which is not a bad idea at all. But you are completely relying on the service to not be down and that something on your end hasn’t also broken. Anybody that hasn’t ever been a sys admin has had several automated process die for no apparent reason.
- This could actually be an issue but totally out of your control. This is only relevant if you domain hop frequently and if your that worried about security, you aren’t doing that.
Short lived certificates force sysadmins to automate the renewal process. This prevents expired certificates due to forgetting the manual renewal.
That was already the case with the 90 day ones. No sane person is going to be manually renewing certificates every 3 months.
Emphasis on “sane”
My last job had an Onlineshop, 4years in a row the colleague dealing with ssl wad on vacation when the cert ran out.
Your colleague sucked at automation. Normally, I’d say no one should be bothered on vacation, but in this case you should have called him on his vacation, since he didn’t value anyone else’s time either.
The manager sucked. There’s a lot of solutions to this issue but cross training and proper backup preparation are the most ideal ones.
A private key leaking is bad, since anyone with the private key can decrypt data that was encrypted with it.
Traditionally, the way that leaked certs were handled was via Certificate Revocation Lists (CRL). CRLs contain lists of revoked certificates - their serial number, revocation date, and the reason why they were revoked.
However, CRLs are imperfect. Checking for revoked certificates every time you go to a site would slow things down a lot, as the lists are now too large to check and download real-time. Modern browsers and other TLS clients periodically download the lists in the background. Also, it might take a while between when the certificate is compromised and when the company notices the compromise.
Because of this, the CA/Browser forum (a group with all the major browser and TLS certificate vendors) have started dropping the max lifetime of certificates. The idea is that even if a private key does leak, the time frame that it’s usable for will be significantly shorter and any leaks should (in theory) cause less damage.
- The original maximum duration was 39 months: Three years plus an extra three months leeway for obtaining and deploying new certificates.
- March 2018: Reduced to 825 days
- September 2020: Reduced to 398 days
- March 2026: Reduced to 200 days
- March 2027: Planned to reduce to 100 days
- March 2028: Planned to reduce to 47 days
All modern deployments, regardless of if they’re using free or paid certs, should have their renewals fully-automated, so in theory the validity period shouldn’t matter as much as it did in the past. All major vendors (Let’s Encrypt, DigiCert, Sectigo, GlobalSign, AWS, SSL .com, etc) support ACME now. Reducing the validity is also a forcing function t o ensure automation is actually implemented.
somehow else in the middle and just can “ignore” certs renewals?
I’m not sure that’s possible, since an attacker in the middle shouldn’t be able to obtain a valid certificate for the domain. Certificates have a “not valid after” date encoded into them, after which the certificate is considered invalid and you get an error.
The real value is in the agility needed to update certs every six days.
Six days is still too long to leave a compromised key in play, but anyone who can rotate their keys every six days can probably also rotate their keys quite quickly if there’s a comprise.
You’re gonna get different viewpoints, ranging from “yeah, but it’s popular” to “shut up”.
I’m using Nginx Proxy Manager. Apparently my letsrenew certs are good for 2 yrs and I don’t see any way to configure that in the ui.
Thank you for sharing. I had missed the announcement, so pleased to know the option is available.
I have fully automated the creation and renewal of my certs and have just short of 50 certs that I manage in total. Every single one automated using NixOS / ACME / lego.
Technically I could easily implement this, just have to switch my config.
Honest question, are there any particular security benefits to this (especially for a home lab)?
I can understand the short lived time span further reduces risk of compromise, yet the existing time span is already “much shorter than traditional certificates”. Does it have a substantial impact on our security posture?
At work, I used ssh-signed certificates for Linux server access - those certs are only valid for about 15 minutes.
The whole idea of shorter lifetime certificates is to address if a certificate is compromised. (Especially for client certificates which, iirc, Let’s Encrypt no longer offers).
For a home lab? With no externally accessible services? Short-lived certs aren’t really a big deal. Nobody is going to be hacking your homelab, stealing your private keys, poisoning your internal DNS, and pointing you to a different, malicious service.
If you’re a developer for an important open source project, they might.
Attacking the xz project wasn’t done because the attacker cared about anything that the xz maintainer had. It was because he was trusted and the software he maintained had been given a fair bit of trust by certain maintainers and could be compromised and used as a vector into other systems that indirectly relied on that open-source project.
Using OpenBao as my CA so I’ve had 24hr certs for a while now.
Certbot came with a systemd timer running twice a day (0, 12 +12h random) that only renews –iirc– when the certificate has 30 days or less to live. Also I looked it up and my (version 6.7) Certbot neither mentions the option with the --help option, nor in the manual (where there is just one instance of “profiles exist, no other details given”).
So they probably need another way than a random blog post when they want users to use (or even just know about) that option…
It’s been pretty much a set-and-forget experience
Yeah, that’s what it always has been. So no need to change anything unless they make it the new standard on their side with an update…








