LWN: Comments on "NGINX adds native support for ACME protocol" https://lwn.net/Articles/1033657/ This is a special feed containing comments posted to the individual LWN article titled "NGINX adds native support for ACME protocol". en-us Fri, 19 Sep 2025 09:52:00 +0000 Fri, 19 Sep 2025 09:52:00 +0000 https://www.rssboard.org/rss-specification lwn@lwn.net Why a half ACME client? https://lwn.net/Articles/1034330/ https://lwn.net/Articles/1034330/ WolfWings <div class="FormattedComment"> It's not 'half' a client to only support a subset of all possible challenge types, as the HTTP-01 and DNS-01 challenges in particular cover wildly different use cases which are differently convenient for different scenarios.<br> <p> DNS-01 is require for wildcard certificates which is a common need, it's entirely standalone and detached from your webserver configuration, and it broadly needs to integrate to whatever proprietary API for TXT records your DNS registrar of choice uses; so as a result there's a lot of registrar-specific ACME clients. Are all those only 'half' an ACME client since they don't support HTTP-01 challenges?<br> </div> Tue, 19 Aug 2025 03:53:35 +0000 "Smaller attack surface"? https://lwn.net/Articles/1034004/ https://lwn.net/Articles/1034004/ Cyberax <div class="FormattedComment"> Yours too?!?<br> <p> (I found an AccuBeat rubidium frequency standard on eBay for cheap and couldn't hold myself back from buying it)<br> </div> Sat, 16 Aug 2025 02:36:04 +0000 "Smaller attack surface"? https://lwn.net/Articles/1033995/ https://lwn.net/Articles/1033995/ jdulaney <div class="FormattedComment"> I'll have you know my web server is connected to a GPS disciplined rubidium oscillator<br> </div> Sat, 16 Aug 2025 00:04:05 +0000 Why a half ACME client? https://lwn.net/Articles/1033938/ https://lwn.net/Articles/1033938/ farnz Both CA and user decide what challenge to use; the CA offers support for various challenge types (with differing certificate issuance rules for each type - for example, a wildcard cert from LetsEncrypt needs a DNS challenge), the user selects one to use. Fri, 15 Aug 2025 15:13:49 +0000 Why a half ACME client? https://lwn.net/Articles/1033937/ https://lwn.net/Articles/1033937/ ttuttle <div class="FormattedComment"> Who decides which challenge is used -- the CA or the user? That is, what's wrong with implementing only one challenge, if it's functional?<br> </div> Fri, 15 Aug 2025 15:02:04 +0000 "Smaller attack surface"? https://lwn.net/Articles/1033843/ https://lwn.net/Articles/1033843/ alp <div class="FormattedComment"> Yeah, the locking is downright ugly, but for some applications, given the concurrent userbase size, and aggressive enough connection reuse and TLS session tickets, it works out.<br> </div> Thu, 14 Aug 2025 22:57:13 +0000 NGINX and certificate management https://lwn.net/Articles/1033829/ https://lwn.net/Articles/1033829/ rbtree <div class="FormattedComment"> ZeroSSL used to be the default, but now it's just a fallback for when Let's Encrypt is not available.<br> <p> <a rel="nofollow" href="https://caddyserver.com/docs/caddyfile/directives/tls#acme">https://caddyserver.com/docs/caddyfile/directives/tls#acme</a><br> </div> Thu, 14 Aug 2025 18:13:43 +0000 "Smaller attack surface"? https://lwn.net/Articles/1033825/ https://lwn.net/Articles/1033825/ Cyberax <div class="FormattedComment"> <span class="QuotedText">&gt; Certainly it would be possible for the software case, where the isolation is process isolation or similar rather than potentially separate hardware - still a significant obstacle for most realistic attacks.</span><br> <p> Even for software-based HSMs the PKCS interface is not scalable. It's typically implemented with a big lock around the storage, essentially limiting it to a single thread.<br> <p> <span class="QuotedText">&gt; Also you could do something like RFC 9345 "Delegated Credentials", there the idea is you get a certificate but the signatures from the certified key are used to delegate a further credential, so maybe you make one delegation every 30 minutes</span><br> <p> Another option is to use constrained intermediary CAs, but neither them, nor delegated credentials are widely supported.<br> </div> Thu, 14 Aug 2025 17:51:43 +0000 "Smaller attack surface"? https://lwn.net/Articles/1033802/ https://lwn.net/Articles/1033802/ smurf <div class="FormattedComment"> <span class="QuotedText">&gt; a lot of machines will be wrong by exactly one hour due to "Daylight saving" nonsense</span><br> <p> Certificate expiry is using UTC. The same is true (or should be true) for your local clock if the UI's time zone is set correctly.<br> <p> So the people who fudge with their clocks instead of adjusting the timezone will learn to do this they way they should be doing it. *shrug*<br> </div> Thu, 14 Aug 2025 15:12:05 +0000 Why a half ACME client? https://lwn.net/Articles/1033707/ https://lwn.net/Articles/1033707/ iabervon <div class="FormattedComment"> I think it's for systems where the web server has a private key of its own (not shared with any other software), and you want to get it a certificate for that key. This way, the private key is only ever known to the software that will terminate TLS under ordinary operation, and it uses the challenge type that software already handles for other purposes, resulting in a minimum of additional code having access to the key over what is needed for ordinary operation of this system.<br> <p> Of course, none of this makes sense if you want a keypair used by multiple programs for different services, such that there's no single program that terminates TLS for all connections, but that's only one of the two common use cases.<br> </div> Thu, 14 Aug 2025 12:38:46 +0000 NGINX and certificate management https://lwn.net/Articles/1033705/ https://lwn.net/Articles/1033705/ aszs <div class="FormattedComment"> True... but in this case the subdomains are controlled by different users (and they have access to the cert). If they had wildcard certs they could spoof each other, so we need one per subdomain.<br> </div> Thu, 14 Aug 2025 12:19:47 +0000 "Smaller attack surface"? https://lwn.net/Articles/1033698/ https://lwn.net/Articles/1033698/ tialaramex <div class="FormattedComment"> Certainly it would be possible for the software case, where the isolation is process isolation or similar rather than potentially separate hardware - still a significant obstacle for most realistic attacks.<br> <p> Also you could do something like RFC 9345 "Delegated Credentials", there the idea is you get a certificate but the signatures from the certified key are used to delegate a further credential, so maybe you make one delegation every 30 minutes, and the delegated credential is only good for an hour, but clearly a hardware HSM can keep up with that rate even if the web server is using that credential millions of times per second. Stealing a delegated credential that you can use for at most one hour isn't good, but it's extremely time limited, if you have an attack for this in the morning but I fix it at lunch time then everything is fine before closing.<br> <p> There are practical problems today but nothing which can't be addressed. RFC 9345 points out that clock skew is an issue, a lot of machines will be wrong by exactly one hour due to "Daylight saving" nonsense and others won't have accurate clocks, humans tend to treat 5-10 minutes as acceptable unless they're weird like me. In some applications you don't care - you can guarantee accurate clocks in intended clients, but general web serving won't be one of those.<br> </div> Thu, 14 Aug 2025 10:37:16 +0000 NGINX and certificate management https://lwn.net/Articles/1033689/ https://lwn.net/Articles/1033689/ NYKevin <div class="FormattedComment"> You can get a wildcard certificate if you go to the bother of setting up DNS-01 validation instead of HTTP-01 validation.<br> <p> Unfortunately, NGINX does not (yet) support that, so you pretty much have to use Certbot or something resembling it.<br> </div> Thu, 14 Aug 2025 06:47:29 +0000 "Smaller attack surface"? https://lwn.net/Articles/1033688/ https://lwn.net/Articles/1033688/ Cyberax <div class="FormattedComment"> Does this work for TLS? The last time I checked, the hardware PKCS devices were limited to maybe a dozen requests per second.<br> </div> Thu, 14 Aug 2025 06:23:05 +0000 Why a half ACME client? https://lwn.net/Articles/1033680/ https://lwn.net/Articles/1033680/ witurnpled <div class="FormattedComment"> The client is limited to the HTTP-01 challenge type (and written in Rust).<br> <p> Conceptually, why implement a "half" ACME client directly into the web server rather than let a full ACME implementation properly instrument NGINX for one of its challenge types. I don't see the advantage of the tight integration with the one challenge type here unless one is 1.) exclusively doing HTTP challenges and 2.) somehow does not trust the certbot/lego/... to properly setup NGINX?<br> <p> Also, one mixes the responsibilities/concerns of the web server with TLS key management.<br> </div> Thu, 14 Aug 2025 02:03:10 +0000 "Smaller attack surface"? https://lwn.net/Articles/1033678/ https://lwn.net/Articles/1033678/ alp <div class="FormattedComment"> Some of us would like to, or have to, store the private key in a software (e.g., SoftHSM) or hardware module, and access it over PKCS #11, so that you can use but not steal the private key.<br> </div> Thu, 14 Aug 2025 00:08:09 +0000 NGINX and certificate management https://lwn.net/Articles/1033672/ https://lwn.net/Articles/1033672/ aszs <div class="FormattedComment"> Yeah it's pretty nice and the certs are signed by ZeroSSL not Let's Encrypt -- they don't have the rate limits that Let's Encrypt does.. If you have a lot of subdomains that comes in handy!<br> </div> Wed, 13 Aug 2025 21:44:08 +0000 HAProxy too https://lwn.net/Articles/1033669/ https://lwn.net/Articles/1033669/ bbolli <div class="FormattedComment"> HAProxy also has built-in support for ACME since version 3.2.0.<br> </div> Wed, 13 Aug 2025 20:58:09 +0000 NGINX and certificate management https://lwn.net/Articles/1033668/ https://lwn.net/Articles/1033668/ stephane <div class="FormattedComment"> I have often found the automation of deploying Nginx + Nginx-Certbot + SSL configuration via Ansible to be a bit of a pain. The rather slow development and the curious security management by F5 made me switch to Caddy (<a href="https://caddyserver.com/">https://caddyserver.com/</a>).<br> <p> The integration of SSL/TLS certificate management in Caddy is just fantastic, and so is everything else!<br> </div> Wed, 13 Aug 2025 20:07:48 +0000 "Smaller attack surface"? https://lwn.net/Articles/1033666/ https://lwn.net/Articles/1033666/ NYKevin <div class="FormattedComment"> Yes, read access is by far the more dangerous permission here.<br> <p> In most situations, there would also be the question of whether it's a good idea to add a bunch of parsing code to the HTTP server's codebase. But ACME takes place over TLS, and your counterparty is authenticated before the ACME code even runs. If you don't trust the same CA that is issuing your certificate in the first place, then you have far larger problems than a little extra parsing code.<br> </div> Wed, 13 Aug 2025 19:44:49 +0000 "Smaller attack surface"? https://lwn.net/Articles/1033664/ https://lwn.net/Articles/1033664/ HenrikH <div class="FormattedComment"> Sounds like a marginal benefit since NGINX still needs read access to your private key so it can still do all the damage it wants and does not need to write a new key to your keystore to do any maleficence.<br> </div> Wed, 13 Aug 2025 19:20:43 +0000 "Smaller attack surface"? https://lwn.net/Articles/1033659/ https://lwn.net/Articles/1033659/ smurf <div class="FormattedComment"> I would expect that a server that only serves HTTP(S), including the ".well-known" subpath, plus a separate program that writes to that (and to the cert storage) after renewing a certificate, has the smaller attack surface, at least compared to an NGINX server that does both in the same process. This way NGINX doesn't need write access to my cert store.<br> <p> But maybe that's just me.<br> </div> Wed, 13 Aug 2025 18:35:56 +0000