I'm sorry but if you aren't using automated renewals then you are not using let's encrypt the way it's intended to be used. You should take this as an opportunity to get that set up.
post
I've been dreading this switch for months (I still am, but I have been, too!) considering this year and next year will each double the amount of cert work my team has to do. But, I'm hopeful that the automation work I'm doing will pay off in the long run.
Are you not using LE certbot to handle renewals? I can't even imagine doing this manually.
Personally, yes. Everything is behind NPM and SSL cert management is handled by certbot.
Professionally? LOL NO. Shit is manual and usually regulated to overnight staff. Been working on getting to the point it is automated though, but too many bespoke apps for anyone to have cared enough to automate the process before me.
I'm in the same boat here. I keep sounding the alarm and am making moves so that MY systems won't be impacted, but it's not holding water with the other people I work with and the systems they manage. I'm torn between manual intervention to get it started or just letting them deal with it themselves once we hit 45 day renewal periods.
Can you not just setup an nginx reverse proxy at the network edge to handle the ssl for the domain(s) and not have to worry about the app itself being setup for it? That's how I've always managed all software personal or professional
Unfortunately some apps require the certificate be bound to the internal application, and need to be done so through cli or other methods not easily automated. We could front load over reverse proxy but we would still need to take the proxy cert and bind to the internal service for communication to work properly. Thankfully that's for my other team to figure out as I already have a migration plan for systems I manage.
Why can't you just have a long lived internally signed cert on your archaic apps and LE at the edge on a modern proxy? It's easy enough to have the proxy trust the internal cert and connect to your backend service that shouldn't know the difference if there's a proxy or not.
Or is your problem client side?
That’s actually a really good idea. I’m not the person you replied to, but I’m taking notes.
One such app I can think of would be a client side issue. If the public cert doesnt match the back end private cert it will sever the connection and mark it as insecure. Hopefully I won't need to deal with it much longer though.
I just heard back from my other team that "this project sounds great for your team" even though they manage many of their own apps and certificates. Perhaps I should just let them burn then!
Luckily I am using only traefik and everything goes through it that it needs for.
Can't imagine how annoying it would be to interface with every equipment so there are no https errors...
Reducing the validity timespan will not solve the problem, it only reduces the risk. And how big is that risk really? I'm an amateur and would love to see some real malicious case descriptions that would have been avoided had the certificate been revoked earlier...
Anybody have some pointers?
No, but I have a link showing how ISPs and CAs colluded to do a MITM https://notes.valdikss.org.ru/jabber.ru-mitm/
Shorter cert lifespan would not prevent this.
It really just helps in cases where you get hacked, but the hacker doesn't have continued access. Say someone physically penetrates into your building, grabs the key through an unlocked station, and leaves.
That being said, like you mentioned, if someone is going through this effort, 45 days vs 90 days likely won't matter. They'll probably have the data they need after a week anyways.
Encryption key theft really requires a secondary attack afterwards to get the encrypted data by getting into the middle and either decrypting or redirecting traffic. It's very much a state level/high-corporate attack, not some random group trying to make a few bucks.
As some selfhosting novice who uses NPM with auto renewal - I feel that I shouln't be ocncerned.
I still think the web would have been better off if certificates were signed and part of a web of trust like in GPG/PGP. It wouldn't stop sites from using trusted CAs to increase their trust levels with browsers, but it would mean that tiny websites wouldn't need to go through layers of mandatory bullshit and inconvenience. Also means that key signers could have meaningful business relationships rather than being some random CA that nobody has a clue about.
So what's the floor here realistically, are they going to lower it to 30 days, then 14, then 2, then 1? Will we need to log in every morning and expect to refresh every damn site cert we connect to soon?
It is ignoring the elephant in the room -- the central root CA system. What if that is ever compromised?
Certificate pinning was a good idea IMO, giving end-users control over trust without these top-down mandated cert update schedules. Don't get me wrong, LetsEncrypt has done and is doing a great service within the current infrastructure we have, but ...
I kind of wish we could just partition the entire internet into the current "commercial public internet" and a new (old, redux) "hobbyist private internet" where we didn't have to assume every single god-damned connection was a hostile entity. I miss the comraderie, the shared vibe, the trust. Yeah I'm old.
Will we need to log in every morning and expect to refresh every damn site cert we connect to soon?
Automate your certificate renewals. You should be automating updates for security anyway.
This is one of the reasons they're reducing the validity - to try and convince people to automate the renewal process.
That and there's issues with the current revocation process (for incorrectly issued certificates, or certificates where the private key was leaked or stored insecurely), and the most effective way to reduce the risk is to reduce how long any one certificate can be valid for.
A leaked key is far less useful if it's only valid or 47 days from issuance, compared to three years. (note that the max duration was reduced from 3 years to 398 days earlier this year).
From https://www.digicert.com/blog/tls-certificate-lifetimes-will-officially-reduce-to-47-days:
In the ballot, Apple makes many arguments in favor of the moves, one of which is most worth calling out. They state that the CA/B Forum has been telling the world for years, by steadily shortening maximum lifetimes, that automation is essentially mandatory for effective certificate lifecycle management.
The ballot argues that shorter lifetimes are necessary for many reasons, the most prominent being this: The information in certificates is becoming steadily less trustworthy over time, a problem that can only be mitigated by frequently revalidating the information.
The ballot also argues that the revocation system using CRLs and OCSP is unreliable. Indeed, browsers often ignore these features. The ballot has a long section on the failings of the certificate revocation system. Shorter lifetimes mitigate the effects of using potentially revoked certificates. In 2023, CA/B Forum took this philosophy to another level by approving short-lived certificates, which expire within 7 days, and which do not require CRL or OCSP support.
note that the max duration was reduced from 3 years to 398 days earlier this year)
That's a lot easier said that done for hobbyists that need a certificate for their home server. I will give you a real world example. I run Ubuntu Linux (but without snaps) on my main desktop machine, however like the person you replied to I am old and I don't have a good memory so when I do use Linux I try to take the easiest approach possible. But I also have a server running on a Raspberry Pi, and another family member (that has a Mac) that I exchange XMPP-based instant messages with. The server runs Prosody, and on my Ubuntu box I run Gajim (the one from the apt repository which is version 1.8.4, I have no idea why they won't put a newer version in the repo). The other family member uses some MacOS-based XMPP client. The problem is that if there is not a valid certificate on the server, Gajim refuses to send or receive anything other than plain-text messages. It won't sent or receive files or pictures, etc. unless the certificate is valid.
However the Raspberry Pi does other things as well (it would be silly to dedicate a Pi to just running Prosody) and one of those other things puts a pseudo-web server of sorts on port 80, which is only accessible from the local network. So I can't use Certbot because it insists on being able to connect to a web server. Even if I had a general web server on the Pi, which I don't have and don't want, it would be restricted for local access only. Also, I'm not paying for a DNS address for my own home server. What I found I could do is get a DuckDNS address (they are free) and use that to get a LE certificate. But the procedure is very manual and kind of convoluted, you have to ssh into the server using two separate sessions and enter some information in each one, because of the absolutely asinine way LE's renewal process works if you don't have a web server. I hate doing it every 90 days and if I have to do it every 45 days I'll probably just give up on sending and receiving files.
I should also mention that it took me hours to figure out the procedure i am using now, and it seems so stupid because I have that server locked down with two firewalls (one on the router and then iptables on the server) I don't even want a certificate but the designers of Gajim in their infinite wisdom(?) decided not to give users the option to in effect say "I trust this server, just ignore an expired or missing certificate." And the designers of LE never seemed to consider that some people might need a certificate that are not running a web server (and don't want to run one) and provide some automatic mechanism for renewing in that situation. And just because someone uses Linux does not mean we are all programmers or expert script writers. I can follow "cookbook" type instructions (that is the ONLY way I got Prosody set up) but I can't write a script or program to automate this process (again, I'm OLD).
I know somebody's going to be tempted to say I should use some other software (other that Prosody or Gajim). I tried other IM clients and Gajim is the only one that works the way I expect it to. As for Prosody, I have from time to time tried setting up other XMPP servers that people have suggested and could never get any of them to work. As I said, had I not found "cookbook" type instructions for setting up Prosody I would probably not be running that either, it was a PITA to get working but not that it IS working I don't want to go through that again. And Prosody isn't the problem, it works perfectly fine without a valid certificate, but pretty much every Linux IM client I have tried either loses functionality or won't work at all if the server doesn't have a valid certificate. And no I don't run or use Docker, nor do I have any desire to (especially on a Raspberry Pi).
EDIT: After giving this some thought I decided look further into this, and discovered that while Certbot can't handle this, it's possible that a script called acme.sh can. See https://github.com/acmesh-official/acme.sh?tab=readme-ov-file (also https://github.com/acmesh-official/acme.sh?tab=readme-ov-file#8-automatic-dns-api-integration - may need to scroll up just a bit, the pertinent item is "8. Automatic DNS API integration"). I haven't tried it yet (just manually renewed yesterday) but it looks promising if I can figure it out. Thought I'd post the links for anyone else that might be in the same situation.
Caddy can manage certs out of the box for you, you don't even need to understand how it works. Just add a url to your Caddy file, make sure the domain points to your Caddy server, have port 80 and 443 open, and you are done.
That's a lot easier said that done for hobbyists that need a certificate for their home server.
I'd you're going to self host you need to learn. I have no time for kids who just want "Google but free" and don't want to spend any time learning what it takes to make that happen.
we shouldn't need to pay for a domain to be able to self host.
You don't need to if you're just using things locally.
But also - domains are cheap.
yes you need if you want HTTPS that is accepted by the smartphone client apps of your services.
domains are a constant expense
They're cheap. You can also generate your own certs and use your own ca. But otherwise yes - quit yer bitching and learn how to do things right.
You can also generate your own certs and use your own ca.
I do this, with a custom root cert, but it has problems. some apps don't accept it, some only accept it by totally disabling cert verification.
installation is also very cumbersome: you go to a weird, badly structured menu on your phone deep in the settings, and select the certificate from storage where apps could have had replaced it while you were navigating the menu.
it does not ask you for confirmation, does not show anything important about the cert, like its fingerprint you could use to quickly check its not been modified, any name constraints, validity period, etc. users cannot tell what that cert will grant its creator, because the system does not tell them anything so that they could decide, other than a generic "your connection may be monitored" message at all times. and when they refuse to install your cert, they are right, because this way it is very risky.
so please tell me "how to do things right", or shut up if you can't tell any useful info
But can you imagine the load on their servers should it come to this? And god forbid it goes down for a few hours and every person in the world is facing SSL errors because Let’s Encrypt can’t create new ones.
This continued shortening of lifespans on these certs is untenable at best. Personally I have never run into a situation where a cert was stolen or compromised but obviously that doesn’t mean it doesn’t happen. I also feel like this is meant to automate all cert production which is nice if you can. Right now, at my job, all cert creation requires manually generating a CSR, submit it to a website, wait for manager approval, and then wait for creation. Then go download the cert and install it manually.
If I have to do this everyday for all my certs I’m not going to be happy. Yes this should be automated and central IT is supposed to be working on it but I’m not holding my breath.
I doubt they will drop below 1-2 weeks. Any service outage would turn into a ddos when service was restored.
The current automation guidelines and defaults renew certs 30 days from expiry. So even today certs aren’t around for more than 60 days, it’s just that they’re valid for 90.
Additionally you can fairly easily monitor certs to get an alert if you drop below the 30 day threshold and automatic cert renewal hasn’t taken place.
I use Grafana self hosted for this with their synthetic monitoring free tier but it would be relatively trivial to roll your own Prometheus-exporter to do the same.
The entire renewal process is fairly cheap, resource wise. 7 day certificates are already a thing.
In terms of bandwidth you could easily renew a billion certificates a day over a gigabit connection, and in terms of performance I recon even without specialized hardware a single system could keep up with that, though that also depends on the signature algorithms employed in the future of course.
The dependence on these servers is the far bigger problem I'd say.
This shortening of lifetimes is a slow change, so I hope there will be solutions before it becomes an issue. Like keeping multiple copies of certificates alive with different providers, so the one in use can silently fall through when one provider stops working. Currently there are too few providers for my taste, that would have to improve for such a system to be viable.
Maybe one day you'll select a bundle of 5 certificate services with similar policies for creating your certificate the way you currently select a single one in certbot or acme.sh
Partition the internet... Like during the Morris worm of '88, where they had to pull off regional networks to prevent the machines from being reinfected?
The good old days were, maybe, not that good. :)
Well that could be considered the point where we lost our innocence, yeah. :(
Imagine trying to do this (excluding China, Russia and some middle eastern or african countries) in the western world.
I would assume total anarchy (especially in the stock trade lol)
The current plan is for the floor to be 47 days. https://www.digicert.com/blog/tls-certificate-lifetimes-will-officially-reduce-to-47-days, and this is not until 2029 in order to give people sufficient time to adjust. Of course, individual certificate authorities can choose to have lower validity periods than 47 days if they want to.
Essentially, the goal is for everyone to automatically renew the certificates once per month, but include some buffer time in case of issues.
Is this the same trust that would infect a box in under a minute if not behind a router?
The same trust of needing to scan anything you downloaded for script kiddie grade backdoors?
Zero click ActiveX / js exploits?
Man I'm probably the same age and those are some intense rose colored glasses 😅
Oh, definitely rose-coloured, but I am thinking even before those days... like when access to Usenet was restricted to colleges and universities, dial-up BBSes ... and I didn't use Windows or MacOS at all back then. ActiveX and js didn't even exist back then. Boot-sector floppy viruses did, but those were easy to guard against.
Ah yeah, those were interesting times. (Although there were some historically interesting viruses back in the day for those floppies too)
Fond memories though. Learning basic on a cartridge... Using literal cassettes for storage. That horrifying sound of a 5" floppy drive struggling to read that file you really needed. Good times.
Generally speaking that was probably what most of us would identify as pre internet times - but usenet / BBS / and early internet and prior definitely was more bright eyed and optimistic. Probably because it was more about learning and tech and less about monotizing every square inch of your existence 😂
Not exactly what you mean because there are also bad actors but take a look at i2p, in some ways it feels like an retro internet.
where we didn't have to assume every single god-damned connection was a hostile entity
But you always did, it was always being abused, regularly. That's WHY we now use secure connections.
I think I'm just not picking up whether you're actually trying to pitch a technical solution, or just wishing for a perfect world without crime.
You can already get 6-day certificates if you want to https://letsencrypt.org/2025/01/16/6-day-and-ip-certs
Seeing as most root CA are stored offline compromising a server turned off is not really possible.
I'm more annoyed that I have 10 year old gear that doesn't have automation for this.
Oh, I'm really just pining for the days before the 'Eternal September', I suppose. We can't go back, I know. :/
Signing (intermediate) certs have been compromised before. That means a bad actor can issue fake certs that are validated up to your root ca certs
While you can invalidate that signing cert, without useful and ubiquitous revocation lists, there’s nothing you can do to propagate that.
A compromised signing certs, effectively means invalidating the ca cert, to limit the damage
minor panic, oh, "2028".
Might as well adjust the setting now. I had that same feeling for something they changed several years ago and never got around to changing it til all my stuff went down lol.
Reducing the valid time will not solve the underlying problems they are trying to fix.
We're just gonna see more and more mass outages over time especially if this reduces to an uncomfortably short duration. Imagine what might happen if a mass crowdflare/microsoft/amazon/google outage that goes on perhaps a week or two? what if the CAs we use go down longer than the expiration period?
Sure, the current goal is to move everybody over to ACME but now that's yet another piece of software that has to be monitored, may have flaws or exploits, may not always run as expected... and has dozens of variations with dependencies and libraries that will have various levels of security of their own and potentially more vulnerabilities.
I don't have the solution, I just don't see this as fixing anything. What's the replacement?
clearly the most secure option is to have certificates that are only valid for 30 seconds at a time
Let's be extra safe. New cert per every request
Well it should be as short as possible while still being practical. LE doesn't have infinite server compute, renewal also takes some amount of time, plus if they make the validity too short people might stop using them (pretty evident judging from sentiment here) and move to other CAs and make what they do pointless.
45 days are still plenty of time yet people are already complaining. Does make me worry.
top 92 comments