I have a private Apache server, reachable only from my LAN on port 443, with a StartSSL certificate.
Since Firefox 51 was released, I cannot connect to it any longer as the StartSSL root certificate was removed from the trust store.
I considered migrating to Let's Encrypt, but that appears to require a public-facing HTTP server. Is it possible to use Let's Encrypt in my situation?
I would rather avoid paying for an SSL certificate, if at all possible.
If you control DNS for the domain then you can use the dns-01 challenge method to prove ownership by creating a TXT-record.
This can be done manually or automated. I think even the official certbot client now supports dns-01.
A quick Google shows me a bunch of tutorials using various scripts and clients so I won't repeat all of them here. This one specifically automates intranet certificates.
The certbot client has capability to do a manual DNS challenge. The (currently second most popular) answer found in this question How to use Let's Encrypt DNS challenge validation? has all the details, and I just tested it as working.
Basically, you run this command and follow the directions:
You mentioned that you are using Apache, however if you are not bound to it there is a very easy path possible using Caddyserver.
There you only have to define a
Caddyfile
with the following content:Mention the DNS provider you are using in the config and configure the API keys you are via environment variables. Draw from the list of supported providers from the docs.
That's all there is required. The output on the first start will be something like: