frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Show HN: Epanet-JS – A local-first, FSL-licensed app for water network sims

https://app.epanetjs.com/
1•lbutler•28s ago•0 comments

CC Signals: A New Social Contract for the Age of AI – Creative Commons

https://creativecommons.org/2025/06/25/introducing-cc-signals-a-new-social-contract-for-the-age-of-ai/
1•rbanffy•3m ago•0 comments

Ask HN: Where do you host your Go apps

1•asim•5m ago•0 comments

Writing Code to Be Read at a Glance

https://jelv.is/blog/Writing-Code-To-Be-Read-at-a-Glance/index.html
1•handfuloflight•6m ago•0 comments

MeshTower

https://heltec.org/project/meshtower/
1•michh•7m ago•0 comments

Show HN: Passgen – Offline C password generator

https://github.com/SilentPuck/passgen
1•silentpuck•8m ago•0 comments

Community Session: Why Design Systems Are at Odds with LLMs [video]

https://www.youtube.com/watch?v=zvINslAc1u0
2•handfuloflight•9m ago•0 comments

Building Accurate Address Matching Systems

https://www.robinlinacre.com/address_matching/
1•RobinL•10m ago•0 comments

Show HN: Brabus Recon Suite – Modular CLI Toolkit for Infra Recon

1•easyprotech•11m ago•0 comments

Isla: 100% Offline AI Powered Journal

https://islajournal.app/
1•handfuloflight•11m ago•0 comments

The narrow search effect and how broadening search promotes belief updating

https://www.pnas.org/doi/10.1073/pnas.2408175122
1•geox•13m ago•0 comments

Copyleft-next: A new non-weak copyleft license inspired by the GNU GPL

https://next.copyleft.org/
1•rapnie•13m ago•4 comments

Critical number of spacecraft in low Earth orbit [pdf]

https://conference.sdo.esoc.esa.int/proceedings/sdc9/paper/305/SDC9-paper305.pdf
2•Gravityloss•13m ago•0 comments

The Liberal Misinformation Bubble About Youth Gender Medicine

https://www.theatlantic.com/ideas/archive/2025/06/transgender-youth-skrmetti/683350/
2•2OEH8eoCRo0•13m ago•1 comments

HighCharts (JS Charting Library) User Guide

https://embeddable.com/blog/how-to-build-dashboards-with-highcharts
1•rogansage•14m ago•0 comments

How Do You Teach Computer Science in the A.I. Era?

https://www.nytimes.com/2025/06/30/business/computer-science-education-ai.html
1•furcyd•16m ago•0 comments

What Happens After A.I. Destroys College Writing?

https://www.newyorker.com/magazine/2025/07/07/the-end-of-the-english-paper
3•adrianhon•21m ago•1 comments

Gartner Predicts over 40% of Agentic AI Projects Will Be Canceled by End of 2027

https://www.gartner.com/en/newsroom/press-releases/2025-06-25-gartner-predicts-over-40-percent-of-agentic-ai-projects-will-be-canceled-by-end-of-2027
2•vaxman•21m ago•0 comments

Serenading Cells with Audible Sound Alters Gene Activity

https://www.scientificamerican.com/article/cells-can-hear-sounds-and-respond-genetically/
1•Bluestein•24m ago•0 comments

Would you trust an AI agent to auto-approve low-value insurance claims?

1•saxon_ai•24m ago•1 comments

A rare asteroid flyby will happen soon, but NASA may be left on the sidelines

https://arstechnica.com/features/2025/06/trump-budget-kills-nasas-golden-opportunity-to-see-a-killer-asteroid-up-close/
11•rbanffy•25m ago•1 comments

Huawei Patents 3,000km Solid-State Battery with 5-Minute Charge

https://carnewschina.com/2025/06/18/huaweis-3000km-solid-state-battery-patent-with-5-minute-charge-ignites-industry-race/
5•dockerd•26m ago•4 comments

Show HN: New Ensō – first public beta

https://untested.sonnet.io/notes/new-enso-first-public-beta/
1•rpastuszak•26m ago•0 comments

After nine years, Ninja has merged support for the GNU Make jobserver

https://thebrokenrail.com/2025/06/30/ninja-jobserver.html
1•TheBrokenRail•26m ago•0 comments

High Precision Folder Matching (HPFM) for faster open source scanning

1•scanosss•29m ago•0 comments

GOP Bill Adds Surprise Tax That Could Cripple Wind and Solar Power

https://www.nytimes.com/2025/06/29/climate/gop-bill-adds-surprise-tax-that-could-cripple-wind-and-solar-power.html
2•donohoe•29m ago•0 comments

Microsoft releases foundation model of quantum wavefunctions

https://arxiv.org/abs/2506.19960
3•ae-foster•30m ago•0 comments

Build Your Own Car

https://caterhamcars.com/en/models/assembly
1•DyslexicAtheist•31m ago•0 comments

OpenTyrian2000 – multi platform SDL3 version of Tyrian 2000 released

https://github.com/andyvand/opentyrian2000/releases/tag/3.0.0-SDL3
6•retro_guy•36m ago•1 comments

Previously Unknown Structure Hiding Inside Human Cells

https://gizmodo.com/biologists-uncover-previously-unknown-structure-hiding-inside-human-cells-2000621339
4•Bluestein•39m ago•0 comments
Open in hackernews

LetsEncrypt – Expiration Notification Service Has Ended

https://letsencrypt.org/2025/06/26/expiration-notification-service-has-ended/
122•zdw•6h ago

Comments

leakycap•6h ago
One could say it expired.

> Providing expiration notifications costs Let’s Encrypt tens of thousands of dollars per year, money that we believe can be better spent on other aspects of our infrastructure.

Appreciate the honesty (they had other reasons, too! but emails are a pain and expensive at their scale)

amenghra•4h ago
They should just build a mobile app for the purpose of receiving these notifications. Make the app $2.99. Turn the expense into a profit. /s
tuananh•3h ago
what's the cost of sending notifications via mobile app? cheaper than email?
tom1337•3h ago
at least for iOS there are no costs associated with using Apple Push Notification Service (APNS) but depending on the way you use it you either need to pay for the infrastructure that sends your notifications to Apple or for a service like OneSignal which does that for you. Not sure what the volume of LE is but I am pretty sure it's a smart move to focus on their core "business" (providing certificates) and let other handle expiration notifications.
bbarnett•2h ago
Mobile app? Now they need to develop that, keep up to date with OS version changes, and far far worse, support end users and their bugs?

And worse of all, worry about Apple and Google's arbitrary rejections?

This seems far more costly than email. Just having one dev keeping those apps going, is likely 20x or more than their email costs per year.

Hamuko•3h ago
I imagine this is best left to third parties like the recommended service linked in the post. I assume that there's also a whole deluge of other services that have similar offerings.
nikolayasdf123•2h ago
that's quite a good idea..
bayindirh•2h ago
As an other option, you install a cron job on your server, and send push notifications via pushover or ntfy.sh whenever it fails to renew.

Pushover is $5 once for personal use, ntfy.sh can be completely self-hostable if you prefer.

I have written a small tool which utilizes pushover for these reasons.

You can receive the notifications on your browser/mobile for free afterwards.

0x073•1h ago
Or just a cronjob that fetches the tls certs and look at the expiration date and then send a mail or X.

So it's even work if you don't have control about the le client.

unilynx•1h ago
Exactly this. Don't look at the renewal proces, look at its output. It'll work for all certificate sources and catch other potential errors too (eg the webserver reporting success but not presenting the new certificate)
bayindirh•2m ago
That'll work too. The idea was to put your own infra in place if you really need that, and it's not very hard to do it, even with completely self-hosted stack.
genewitch•3h ago
tens of thousands of dollars? that's it? No one can just write them a check? switchgear costs more than that!
leakycap•3h ago
If someone were to hand them a check, with that $10,000, they would like to do something other than send reminder emails

That's the point

jbverschoor•2h ago
Not sure why, but many large companies that rely heavily on any open source/free initiative don’t donate. It’s sickening tbh
szszrk•2h ago
Why discuss it here? Let's Encrypt has a shitload of corporate sponsorship. Look at their main page.
udev4096•1h ago
Why not? The sponsorship they get is far from enough. For such a significant CA, it should be a lot more than that
lukan•1h ago
"Not sure why"

Because companies are for profit usually and any donation they make reduces that profit. That's why open source projects that can offer service contracts, have a easier time getting money from the buisness world, because this is something bookkeeping people understand in the corporate language.

jeroenhd•2h ago
Anyone who can write them a cheque can also set up such a service themselves. All of the certificates are freely available in the CT logs, and every domain must have a reachable email address (or they risk their domain being taken from them). You can probably save a lot of money (and be less liable for violating spam laws) by making the free service opt-in, of course.

LE just isn't interested in maintaining such a service. Sending them money won't make them interested all of the sudden; that money can be spent better on setting up an independent free alternative.

heartoffoo•22m ago
A thousand helpful new fremium startups nominating themselves to send email to the overall domain admin email of record when CT indicates an upcoming expiration is hardly the same thing as the ACME server sending an email to the actual email sent at the time of registration.
pydry•1h ago
can you?
KaiserPro•43m ago
Aure, but that only covers a year or so. Its an extra operating expense that might or might not cause them to cut other things to fund.

Its not only the service cost, but as they say, it costs engineering hours, which could be spent elsewhere.

Moreover, SSL cert age check should be something you're looking out for, or letting certbot restart your service for you.

cbenskxk•4h ago
will email still be recuired for getting certs?
dizhn•4h ago
As far as I know. No.
TonyTrapp•3h ago
I don't think it ever was? I never gave my email address to LetsEncrypt but I'm also not using their official client.
cpach•3h ago
Account registration is done by sending a public key to a certain API endpoint. The key will become associated with an account URL that looks like this: https://acme-v02.api.letsencrypt.org/acme/acct/4277968575
wordofx•3h ago
“We don’t want to retain emails”

Also

“Sign up for our newsletter”

gleenn•3h ago
Sending single custom emails is much more effort than bulk-mailing a huge list operationally. Sending bulk can be accomplished by uploading a csv of emails to some enail bulk sender versus code to run at the correct time for the correct user... way easier in bulk and way cheaper
Y_Y•2h ago
Is it truly much more difficult? At worst you could batch them by week and registered email, a one-liner can generate the list of destinations, and then you send that to your newsletter-sender-service and call the email "your cert is expiring next week".
leakycap•2h ago
It is easy to think something like this is easy until you attempt to do it.

Are you really questioning a free SSL Certificate system when it says something is too complex and not worth it?

If you ever set up a free SSL before LetsEncrypt, you'd know they're amazing and you can trust them not to lie to you, especially about this where they've outlined the reasons clearly.

szszrk•2h ago
Of course it's more difficult.

You are talking of a volume of around 600 000 000 domains (based on a plot on their website) that try to renew at best after 8 weeks. And that's just default profile, there are 160h certs profiles now [0].

You think they will ever send nearly as much as (at least) 75 million newsletter mails weekly? Sendgrid's highest value in their pricing slider is 1,25 mil a week.

- [0] https://letsencrypt.org/docs/profiles/

wordofx•1h ago
It has nothing to do with complexity.

> Providing expiration notification emails means that we have to _retain millions of email addresses_ connected to issuance records. As an organization that _values privacy_, removing this requirement is important to us.

A mailing list. Is still retaining emails somewhere. Doesn’t matter if it’s stored in a text file on a usb drive in a vault. It’s still retaining an email list.

Timshel•2h ago
Yeah a list of emails is not similar to a db of email/certificate association ...
Jazgot•2h ago
This pushed me to automate certificate renewal for all my domains. This is much better than waiting for any kind of notifications, and it was very easy. I think this is a very good decision on their part.
toast0•1h ago
These emails were handy to detect when the automation failed.
tialaramex•50m ago
I strongly recommend building affirmative detection. A script which checks everything is OK and either tells everybody "Yeah, everything is OK" or "Here are the problems" means when, inevitably, that script doesn't fire, you don't get the false impression everything is OK.

All "silent success" detection systems will also silently fail and so they're worse than useless in my experience.

nikolayasdf123•2h ago
is there a Slack bot for expiry checks?
general1726•49m ago
Write a lambda in some cloud provider framework and run it every 1 hour to 24 hours and if it finds expired certificate, it will use webhooks to send you a message on Slack or Gotify or whatever.

Or you can just periodically renew the certificate on server using Task Scheduler + win-acme or Cron and certbot.

TekMol•2h ago
Certificates are still a pain in the butt. One of the most cumbersome aspects of the web.

Especially domain wide certs which need DNS auth.

DNS auth would be okish if it was simply tied to a txt entry in the DNS and valid as long as the txt entry is there. Why does LetsEncrypt expire the cert while the acme DNS entry is still there? Which attack vector does this prevent?

Also, why not support file based auth in .well-known/acme-challenge/... for domain wide certs? Which attack vector does that prevent?

matharmin•2h ago
Certificates have a static expiry date by design - it's not "LetsEncrypt expiring the cert". There is no way to avoid expiring a cert if the DNS entry is still there - all you can do is make it easier to renew the cert. That means it must be automated, in which case it doesn't matter if you need to re-create a DNS entry.

In my experience, it takes a little effort to set things up the first time, but from then on it just works.

rjst01•2h ago
I think the parent commenter would be satisfied if they could authorize their DNS by creating a DNS challenge entry one time, and then continue to renew their certificate as long as that entry still existed.

And I'm sympathetic to the concerns that automating this type of thing is hard - many of the simpler DNS tools - which otherwise more than cover the needs for 90% of users - do not support API control or have other compromises with doing so.

That said, I do think LE's requirements here are reasonable given how dangerous wildcard certs can be.

jeroenhd•1h ago
> many of the simpler DNS tools -...- do not support API control

That's on the DNS provider in my opinion. They can, if they want to, make things easy and automatic for their customers, but they choose not to. There's a whole list of provider-specific plugins (https://eff-certbot.readthedocs.io/en/stable/using.html#dns-...) with many more unofficial ones available (https://pypi.org/search/?q=certbot-dns-*). Generic ones, like the DirectAdmin one, will work for many web hosts that don't have their own APIs.

If you like to stick with whatever domain provider you picked and still want to use Let's Encrypt DNS validation, you can create a CNAME to another domain on a domain provider that does have API control. For instance, you could grab one of those free webhosting domains (rjst01.weirdfreewebhostthatputsadsinyourhtml.biz) with DirectAdmin access, create a TXT record there, and CNAME the real domain to that free web host. Janky, but it'll let you keep using the bespoke, API-less registrar.

I imagine you could set up a small DNS service offering this kind of DNS access for a modest fee ($1 per year?) just to host API-controllable CNAME DNS validation records. Then again, most of the time the people picking weird, browser-only domain registrars do so because it allows them to save a buck, so unless it's free the service will probably not see much use.

jeroenhd•1h ago
> Why does LetsEncrypt expire the cert while the acme DNS entry is still there?

That's like saying "why does the government expire my passport/driver's license when I haven't changed my name". That's not how it works; the document is stamped valid for a specific amount of time, and you get a new document with a new expiration time when you renew it.

The certificate from LE will expire automatically 90 days after it was provided, that's why you need to renew it before the 90 days are up.

If you hate setting up automated certificate renewal, you can still get longer-lasting certificates from paid certificate providers. It used to be that you needed to pay a company to generate a certificate for you every year, now you just get the option to have a free one every 90 days.

> Also, why not support file based auth in .well-known/acme-challenge/... for domain wide certs

An ACME challenge file on a web server proves that you control a specific server at a specific domain, so you get a certificate for a specific domain.

A DNS entry proves you control the entire domain, so you (can) get a certificate for the domain.

By uploading a file to tekmol.freewebhost.com, you haven't proven that you control either .freewebhost.com or .tekmol.freewebhost.com. You have just proven that you control tekmol.freewebhost.com.

hn_throw2025•1h ago
> If you hate setting up automated certificate renewal, you can still get longer-lasting certificates from paid certificate providers. It used to be that you needed to pay a company to generate a certificate for you every year, now you just get the option to have a free one every 90 days.

I took the easier route and let Cloudflare generate and handle certs for my domains. I’m on the free tier. I secure traffic between them and my host with an origin cert. By default those are valid for 15 years.

I know CF is frequently criticised around here, but wanted to mention it as an option.

jeroenhd•1h ago
That works too, of course. You don't even need a specific certificate or even an open port by leveraging Cloudflare tunnels, which means you can host your website on a local server behind three layers of NAT if you had to.

And it's not just Cloudflare; there are plenty of other redirect-everything-through-a-CDN hosts available. If you don't mind giving Cloudflare control of your website (and barring visitors from countries like India where CGNAT makes everyone fill out CAPTCHAs every page load), this approach will take care of just about everything.

hn_throw2025•46m ago
Agreed. It’s about priorities and tradeoffs.

I’ve been impressed with how much I get on the free tier (my sites are small). With the DDoS protections, rate limit, WAF rules, and Turnstile, it feels like I can keep a significant amount of abusive traffic from reaching my host. It’s a pretty compelling tradeoff for me, anyway.

sofixa•45m ago
> If you hate setting up automated certificate renewal, you can still get longer-lasting certificates from paid certificate providers.

Not for much longer, the maximum lifetime of a public certificate will progressively go down to 47 days by March 2029.

dotancohen•39m ago

  > That's like saying "why does the government expire my passport/driver's license when I haven't changed my name". That's not how it works; the document is stamped valid for a specific amount of time, and you get a new document with a new expiration time when you renew it.
That does not answer the question, why?
ericpauley•18m ago
Because certificate lifetimes need to be determined when they’re issued. They aren’t dynamic and so can’t be changed in response to whether an acme challenge file exists.
AnthonyMouse•16m ago
The government expires your driver's license because they want to charge you for a renewal. You can tell that this is the only reason because it's the only thing they want in order to give you a new one. They do nothing to confirm that you still know how to drive.

But Let's Encrypt doesn't charge anything. All they want is to confirm that you still control the domain. So why doesn't "the DNS record they had you add to begin with is still there" satisfy that requirement and allow you to repeatedly renew the certificate until it stops being there?

Tie the DNS challenge to the public key in the certificate. Then as long as it hasn't changed you can update the certificate without giving the update process modify access to the DNS server.

bravesoul2•12m ago
Passport is a good example. So is bank notes. They expire to add new security features.
maxnoe•1h ago
Since my DNS provider(IONOS) has an API and there is a plugin for my Webserver (caddy), DNS certificates were completely painless, even for *.<my domain>.

The solutions exist, depensa on the providers and your client.

rjst01•1h ago
> DNS auth would be okish if it was simply tied to a txt entry in the DNS and valid as long as the txt entry is there. Why does LetsEncrypt expire the cert while the acme DNS entry is still there? Which attack vector does this prevent?

An attacker should not gain the ability to persistently issue certificates because they have one-time access to DNS. A non-technical user may not notice that the record has been added.

> Also, why not support file based auth in .well-known/acme-challenge/... for domain wide certs? Which attack vector does that prevent?

Control over a subdomain (or even control over the root-level domain) does not and should not allow certificate issuance for arbitrary subdomains. Consider the case where the root level domain is hosted with a marketing agency that may not follow security best practices. If their web server is compromised, the attacker should not be able to issue certificates for the secure internal web applications hosted on subdomains.

udev4096•1h ago
We would be better off if people started using DANE. No centralized authority, you control the keys
jgaa•2h ago
When I received the first warning email about this, I wrote a simple library and cli to validate all my certs for me.

https://github.com/jgaa/openvalify

samlinnfer•2h ago
I just have a cronjob that does:

    #!/usr/bin/env bash

    cert_check() {
        server=$1
        host=$2
        port=$3

        str=`ssh "$server" "echo | openssl s_client -servername $host -connect localhost:$port | openssl x509 -noout -checkend 604800"` || true
        if ! echo "$str" | grep -q 'Certificate will not expire' ; then
            echo "$str" | ./send-email.py "Certificate \"$host\" on $server will expire in 7 days" \
        fi
    }

    cert_check name myserver.com 443
masklinn•1h ago
If you’re automating the check why not automate the renewal directly?
detaro•1h ago
who says they don't have the renewal automated?
jeroenhd•1h ago
I've missed expired certificates because of a configuration issue that broke the certbot automation. Granted, I could've read the certbot journalctl output, but 99.9% of the time that's a waste of time. Not like there was anything mission-critical on there.
throw0101b•9m ago
> https://github.com/jgaa/openvalify

I don't begrudge people writing a tool to learn, but it should be noted that this wheel has already been invented:

* https://github.com/matteocorti/check_ssl_cert

* https://exchange.nagios.org/directory/Plugins/Security/check...

* https://github.com/narbehaj/ssl-checker

* https://github.com/Matty9191/ssl-cert-check

whatever1•2h ago
Is it the right time to rant about the cert expiration as a concept? I understand why certs might be revoked. But expire?
unilynx•2h ago
Can't remove a certificate from the revocation lists until it's expired, leading to boundless growth of those lists.

Risk of private keys/certificates from old backup media being leaked (remembering the adobe password leak...) and then suddenly coming back online and working until someone figures out how to revoke them

borplk•2h ago
At a minimum I consider it like an automatic "garbage collection" mechanism that prevents dead and abandoned things to remain "valid forever".

It also helps with things such as change of ownership so after a certain period of time you can have the peace of mind that certs potentially issued by the previous owners are not lingering around as active (I understand things such as revoking and pinning can help with this too but It's nice to have a plain time based expiry too).

em-bee•1h ago
revoking certs does not work. it is so bad that the end result is that by 2029 certificates will not be allowed to be valid longer than 47 days: https://news.ycombinator.com/item?id=43693900
layer8•33m ago
TLS server certificates, that is. It’s perfectly fine for other uses of certificates.
scrapheap•1h ago
Revoking certificates and expiring certificates tackle two different security issues.

You revoke a certificate when you believe that it might have been compromised. Expiring certificates helps protect you when you've unknowingly been compromised.

So let's say that one of your employees accidentally pushed a private key for one of your certificates up to GitHub and you notice it. That's when you should immediately rotate that certificate and revoking the old one.

Now let's say that the same thing happened but you didn't notice. That's where the certificate expiring comes into play. For a Lets Encrypt certificate there's currently going to be a maximum of 90 days where someone could find that private key and work out a way to exploit it, after that period the certificate would have expired and no longer be being used.

tialaramex•1h ago
One reason is Agility. Natural turnover due to expiration puts a reasonable maximum on the time needed to make any improvement that's not a flag day (a flag day is a situation where everybody in the ecosystem, so for today's Web that's billions of people, co-ordinates).

Improvements can be changes to cryptographic algorithms, like "Don't use SHA-1" or to the nuances of the certificate document like "Don't use this X509 feature" or to the CA infrastructure like "Don't issue certificates for names which don't exist".

Shortened certificate lifetimes improve agility by bringing forward that horizon. We can say "Stop doing X by August" tomorrow, and by Christmas 2026 there are no trusted end entity certificates which relied on X. A few years ago that took 3-5 years, at the turn of the century it was more than a decade and we repeatedly paid a price for that.

zarzavat•33m ago
Let's say you buy a domain name from someone. Do you really want the previous owner of the domain to own a certificate for your website until the end of time? Sure you can get it revoked but certificate expiration ensures that it will expire even if it doesn't get revoked. That's a vital part of the security model.
bravesoul2•13m ago
While 90d might be short, 10 years is too long (encryption changes!)
scrapheap•1h ago
This makes sense to me. You should never rely on your CA to let you know that a certificate is due to expire soon, you should have your own monitoring in place that actively checks this for you.
kassner•28m ago
I do agree with you, and setting up your own monitoring is key. I have that.

Yet it was still valuable to find those that fell through the cracks. At work, the emails prevented a couple of outages by expired cert, because a dev that left was renewing them by hand and we only found out when they left and the catch-all started to bubble them up to support.

Things fall through the cracks, or people are in a pinch and just forget to add the cert to the in-house monitoring system. The emails were a wonderful failsafe.

I wish I could just query LE to tell me all existing certain where the account is under my domain name. Extremely helpful to assemble a SBOM.

bo1024•25m ago
As a hobbyist without a lot of time for sysadmin, it would be nice if basic email monitoring was a standard package (apt install letsencrypt-monitors or something).
bravesoul2•15m ago
Use one of the myriad uptime monitoring services.
udev4096•1h ago
I can't believe they didn't end it soon. Majority of the users have automatic renewals in place which makes this completely unnecessary
bkolobara•19m ago
It still helps sometimes. I was changing some settings on the server and messed up the automatic renewal. Getting an email from them saved me a lot of issues.
weird-eye-issue•1h ago
A company like Postmark should have just given them a free account on the condition they mentioned them at the bottom of emails or something

It's a valuable service for the average person to get these emails without having to set up separate monitoring

bravesoul2•17m ago
At least there is this:

> For those who would like to continue receiving expiration notifications, we recommend using a third party service such as Red Sift Certificates Lite (formerly Hardenize). Red Sift’s monitoring service providing expiration emails is free of charge for up to 250 certificates. More monitoring options can be found here.

cosmodev•27m ago
I was using this with Certbot for 17 different domains it's a bit sad to see it go. I’m not even sure if I ever relied on the notifications, but just knowing it existed gave some peace of mind.