[Acme] RFC 8555 Last Call Draft Change Request
"Fabian V. Thobe" <fabian@thobe.eu> Tue, 14 July 2026 08:26 UTC
Return-Path: <fabian@thobe.eu>
X-Original-To: acme@mail2.ietf.org
Delivered-To: acme@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id B01031165CB51 for <acme@mail2.ietf.org>; Tue, 14 Jul 2026 01:26:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1784017573; bh=2exz/u6jrSJyictrXitwKTJbTb7Sqe6+gUDdaSFVBnE=; h=From:Date:Subject:To:Cc; b=RW2GgVlC9GvJCvxTXqpAPLaNK0lgEMyD0Fppbh5+AE2w4moHN4J6TkyNSd7GvHYC1 YGvHCSxoH5vzi8nRzDXg3e/UpOykv1YDHJSVgUk3oi/cNarHA8fYH/SQGmZ+ahxfrI +8+5Qf8gcDbhTKGI2REx3qSeeU0yn18utN0VhJi0=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.087
X-Spam-Level:
X-Spam-Status: No, score=-2.087 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_FONT_LOW_CONTRAST=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, TVD_PH_BODY_ACCOUNTS_PRE=0.001, T_KAM_HTML_FONT_INVALID=0.01] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (1024-bit key) header.d=thobe.eu
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BTvnsf0naKnN for <acme@mail2.ietf.org>; Tue, 14 Jul 2026 01:26:12 -0700 (PDT)
Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 8D2DA1165C976 for <acme@ietf.org>; Tue, 14 Jul 2026 01:26:03 -0700 (PDT)
Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-470174001a0so342985f8f.0 for <acme@ietf.org>; Tue, 14 Jul 2026 01:26:03 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1784017557; cv=none; d=google.com; s=arc-20260327; b=eC99bYIIcxbleCVidQp39i0Qpow4kLNaBDBba50vo1xfkXiPs963WmxSr/K88Mg7WM HYGO8LcUY4LWGu1s5Rpg+bdTzAS2uhILLJ89o3a0Qznx0hsWgYiGGp9dpyWsSUGODna9 kZnKmuU49JqNFU3B1odyNLgDP2qlb7qcjTcidYuc2u/JfclFlfethFmhoix4CeowDmMx Gft5mnVL/XvJBcAHDUpHr+Xe+/a96zEwPkKaixmafv7Wa8sAmxFBtx58a/NqFwWep34t 8U6QXdPW/QemHDT9lZQSoiRFo6vThi1ZqOtTdliIqZlfwDTMyG4qXGGJHBOo/n8oTnBg xfmw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:mime-version:dkim-signature; bh=JYGdSFtSUnI70fgtmNtkHcj5zeywrxEFJdTszSeWVz4=; fh=6VAGZu3qvXrgWF/BLZCn2XU4JHGzuunZDN5+F6nsf+c=; b=KwBUSDedhPdRzn6GJpyNyibw4aiwj8/ydpwkaVc6spv124IxpLdI4xV32Mp8iLapit uNkqj+NV2hmxKQwgJ6cYp7aDW2rfj6P6HDIBHJU3jzc46l0oOnAI5xjZGR70jQCWZooh TYFL52sZWbhxBqkC1Lt35kWyacTL2OukpYORUn+T7XWrzXo09uDSf3dJrs2jWUnz77oB /SOqYrHE896Z1YyWjXvadPyiI49hT807eRvwpfKV1fjvt1UGvVXslI46lOqFmRSa2D12 NE/7NH8nyebJcfDrbKbofluUUyrbE/plyy1+7aETPRh1dDRBwk9sZ5hDx0SX+ZW3qEwo 0NAQ==; darn=ietf.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thobe.eu; s=google; t=1784017557; x=1784622357; darn=ietf.org; h=content-type:cc:to:subject:message-id:date:from:mime-version:from :to:cc:subject:date:message-id:reply-to:content-type; bh=JYGdSFtSUnI70fgtmNtkHcj5zeywrxEFJdTszSeWVz4=; b=RO2xmD/dUqOWsarESA7dLwv6cHeIjjTSw9EBlyR2vjwN3zj0Mlikrn6NwCSU1s16I5 GlKHP3vFIpxH5Ogq2yE3PVUZUp6R4ZJNv5I/9bq5wVdyFKlAVr8br1g9WdqQmDPzbWSS OHV/+wSjzJSGuGwvIRnpoBxUg5w8v+8hfhMYs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784017557; x=1784622357; h=content-type:cc:to:subject:message-id:date:from:mime-version :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to:content-type; bh=JYGdSFtSUnI70fgtmNtkHcj5zeywrxEFJdTszSeWVz4=; b=dMg/jjGqPBXV1Umojqs7fIrJNIBPckY+idn2Gq/SAgZfb4Sl6+2kjnrS/NFS1HbVlU oCTObJWSAPpEmPyY4St42n+lNIR1HmOu1xrIEvljzqXi4Yq903SVgkg5BjOam8OhxINw 9YxSKsfqC/rTmqIUteaabjI+u2jJ+wYhS/VQ8UJgACtbvPSJN4TeXSc6el22pFCOnVX9 M32R4nJum9TSjA4MeFol1+KOfaWX3Fes8wlMDNOQ/1E0JZ696XCPfz8qsWVY/QKmXKY3 pwDoGH7dum2KY/5LhQu4m9l4I7Pmv8HXynx/QOB9IICu6N3NN334JlMxGryi+94Cn4s9 aHmg==
X-Gm-Message-State: AOJu0YxxMqazwBouDpd5xGogWgxIWxrvWfEOVZSXItSDSdBOFQ7e6UFs YqNoBAM2CFSICy3BNVe1iKFzJkapzCe9dHkiV27oqX6Wod+Yj0qxbmf2Ab5oRNPNxrvSfYdZRnb RpgLBcEGwq4AwMKrlKXDT8H0JUShv12JNyU8m0bfBFi89lVMQ+q7Gjxg=
X-Gm-Gg: AfdE7ck5yJM6L/1zNrce+Pb2/0jLsgw4UQHGlS0TTLz7ir9KkzfzVxq4o7IcfkOUJ4+ j8O3RYKZ4r7Olp6HS7xpc86rDAJOXbP/JxfORlfi7yXcxG9wa/gTmQWpiq/j3CjXPWkhhDS5ZBS YwnzagFrHrRwEwVjNqS+WIwdNmuUHr4MgPbviJYGbqYxRaUBytRCgTUJuxzxMfOBpMW0wI1BdPt 5JI/rwbN1FZPlJ8MJ1E2vBMkfe5phKewGO126LXOA6SHDAR4IEFZWmIm3IdOencPtjHOF3ftbfJ aWxRcw73uhfbaUzEFM8Jo6e5yw==
X-Received: by 2002:a05:6000:2086:b0:45e:64b3:af44 with SMTP id ffacd0b85a97d-47f2dcd79a6mr13901611f8f.36.1784017557094; Tue, 14 Jul 2026 01:25:57 -0700 (PDT)
MIME-Version: 1.0
From: "Fabian V. Thobe" <fabian@thobe.eu>
Date: Tue, 14 Jul 2026 10:25:45 +0200
X-Gm-Features: AUfX_mwsWKdQaKnEvpX0X2Js86i19M5lCKv7Xuq6ulHxvP5bSXU1L8TD6i4Ot04
Message-ID: <CADn23j4Ugi5_DXA65u4CZubMOqJMLwgM1jiqHG4poJm-dZUOaQ@mail.gmail.com>
To: acme@ietf.org
Content-Type: multipart/alternative; boundary="000000000000c393d106568df443"
Message-ID-Hash: 27Y43XAO2ABGXDF3OUDXXQZOLHF7RWTN
X-Message-ID-Hash: 27Y43XAO2ABGXDF3OUDXXQZOLHF7RWTN
X-MailFrom: fabian@thobe.eu
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-acme.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: dev@propstat.org, alexis@eff.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Acme] RFC 8555 Last Call Draft Change Request
List-Id: Automated Certificate Management Environment <acme.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/acme/tpvOoBqHcEhSoPP-C0UaBtERgeY>
List-Archive: <https://mailarchive.ietf.org/arch/browse/acme>
List-Help: <mailto:acme-request@ietf.org?subject=help>
List-Owner: <mailto:acme-owner@ietf.org>
List-Post: <mailto:acme@ietf.org>
List-Subscribe: <mailto:acme-join@ietf.org>
List-Unsubscribe: <mailto:acme-leave@ietf.org>
Dear RFC8555 Committee, In cc: Alexis Hancock from EFF as some content involves also Certbot *TL;DR * A mechanism for authorization invalidation independent of the account key appears necessary to ensure that domain ownership, and not a historical authorization state, remains the ultimate source of trust. *Background* While working on improvements to the DNS Route53 plugin for Certbot (Certbot PR #10729 <https://github.com/certbot/certbot/pull/10729>) to better meet the security requirements of a European government entity, we identified a potentially critical issue related to cached DNS-01 authorizations. Specifically, we observed during the PR related manual testing that certificate issuance remained possible even after the certbot DNS credentials had been revoked upon credential change. While we initially suspected a regression related to previously used AWS credentials, further investigation revealed that the root cause lies in RFC8555 mandated procedures handling of DNS authorizations. *Relevant Sections of RFC 8555* *7.5.2. Deactivating an Authorization* The server must verify that deactivation requests are signed by the account key corresponding to the authorization. *7.3.6. Account Deactivation* Similarly, account deactivation requires a valid signature from the account key. *In both cases, the ability to revoke or deactivate authorizations is strictly tied to possession of the account key.* *Threat Analysis* *High-Level Concern* The current model creates a situation in which DNS-01 authorizations may remain valid even when DNS credentials are revoked and the account key is no longer accessible for a lack of re-authorization. If a legitimate owner loses control of the account key, whether through compromise or operational loss, there is no reliable mechanism to invalidate existing authorizations. This creates a scenario where a malicious actor in possession of the account key can continue issuing certificates without the knowledge or consent of the legitimate domain owner. Hereby the fact that Let's Encrypt clearly democratized encryption with valid certificates is of high importance: systems in subpar environments or environments subject to financial constraints regarding the procurement are much more vulnerable than large enterprises or organizations. Especially in the highly open source dependent political NGO sector I see significant risks as the infrastructure owner might be a malicious actor allowing various "men in the middle" scenarios. A mechanism for authorization invalidation independent of the account key appears necessary *to ensure that domain ownership, and not historical authorization state, remains the ultimate source of trust*. *Observed Risk Scenarios* Several already observed risk scenarios emerged: - Lack of recoverable or uncompromised physical infrastructure after ransomware incidents makes the account keys irrecoverable; - Preference for full system rebuilds over restoration due to uncertainty about compromise timelines; - Missing or incomplete secret management practices; - Operational pressure leading to deviations from established recovery procedures In these scenarios, loss of the ACME account key is a realistic and, maybe even already a recurring outcome. *Expanded Risk Considerations* Additional risks arise in environments where DNS infrastructure itself may be compromised or controlled by malicious actors, including: - Man-in-the-middle attacks via compromised DNS resolution chains - Centralized or state-controlled infrastructure introducing systemic risks - Limited infrastructure diversity in certain regions In such cases, cached authorizations amplify the attack surface by allowing continued certificate issuance independent of current DNS control. *Proposed Mitigations* 1. *Lightweight Option: No-Cache Mechanism for DNS-01* Introduce a mechanism to explicitly disable authorization caching for DNS-01 challenges. (Reference: https://github.com/letsencrypt/boulder/issues/8870) 2. *Break-Glass Recovery via Proof of Ownership* Introduce a recovery mechanism allowing domain owners to invalidate all existing authorizations (not the account) through a fresh proof-of-ownership challenge (e.g., DNS-based). This would: - Provide a recovery path in case of account key loss - Prioritize domain ownership verification over authorization persistence - Align with the core purpose of certificates: authentication, not just encryption *Additional notes regarding awareness* In discussions with peers across banking, healthcare, public sector, and commercial environments (many operating under ISO 27001 or similar frameworks), a lack of awareness regarding cached issues become apparent (despite all of us using Let's Encrypt in private or professional settings). Notably, none of the professionals consulted were aware that DNS-01 authorizations are cached in a way that allows continued certificate issuance after DNS credentials are revoked. There is also no clear indication of this behavior in common tooling. As a result all of us assumed that: - Revoking DNS credentials is widely assumed to fully mitigate risk - No standard procedures were required for responding to account key loss Given that the tooling does not surface or warn about cached authorizations, there might also be a problem regarding the value of account keys. To be honest among 9 people, two of us even had a false risk assessment in the ISO 27001 assessments, in one case fully audited by a market leading entity. There might be a disconnect between what's documented at Let's Encrypt and what effectively reaches the community as literally there's no section neither about risks nor backup in the Certbot documentation, the discovery of the non-ephemeral nature of authorizations requires research, this is also reflected in the answers of AI agents (see below), all major AIs apart from Claude responded wrongly. An issue and offering to fix at least some oddities of certbot behaviour was not favourably received (https://github.com/certbot/certbot/issues/10731) As outlined above, the current ACME model prioritizes usability and automation but does not fully address scenarios involving loss of account keys. Given the widespread adoption of ACME and the increasing reliance on short-lived certificates, this gap presents a meaningful security risk undermining the efforts to shorten certificate lifetime for security as any effort is undermined by the malicious can simply order a new certificate with obtained account keys. I would be happy to provide a more detailed proposal, including draft specification language and an expanded threat analysis, if that would be helpful. Attachments *Boulder Issue:* Feature Request: Add an opt-in mechanism to disable DNS-01 authorization reuse (--no-cache) for one Time DNS-01 Challenge Usage #8870 https://github.com/letsencrypt/boulder/issues/8870 *Certbot PR * dns-route53: cerbot credentials.ini file support + fix duplicate TXT record on apex/wildcard #10729 https://github.com/certbot/certbot/pull/10729 *Certbot Issue *[Bug]: Invalid / Revoked credentials allow renewal due to lack of revalidation of credentials and continued use of DNS-01 Auth #10731 https://github.com/certbot/certbot/issues/10731 *Example Observation* A Certbot renewal executed with invalid DNS credentials still succeeded, without indicating that cached authorizations were used: (venv) zeus@mi-certbot-staging:~/certbot$ sudo venv/bin/certbot certonly \ --dns-cloudflare -d "*.domain.com" --dns-cloudflare-credentials \ ~/cfinvalid --staging [...] Renewing an existing certificate for *.domain.com Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/domain.com/fullchain.pem *Generative AI answers to the question:are dns challenges on certbot remade on every renewal?* 1. *Gemini* Unconditional Yes Yes, DNS challenges are remade on every single renewal. Every time Certbot attempts to renew a certificate, it initiates a fresh "order" with the Certificate Authority (such as Let's Encrypt). This order generates a brand-new, completely randomized token. 2. *Co-Pilot * Unconditional Yes "Yes — DNS‑01 challenges are recreated every time Certbot renews your certificate, unless your DNS plugin/provider supports persistent TXT records (almost none do). Certbot must prove domain control again at each renewal, so it generates a new TXT value for _ acme-challenge.yourdomain.com every time." 3. *ChatGPT* Unconditional Yes "Yes. If you're using a DNS-01 challenge with Certbot, the challenge is generated fresh for every certificate issuance and every renewal." 4. *Claude* Correct Answer Not automatically, no — it depends on the ACME server's authorization caching, not on certbot itself. Fabian V. Thobe +39 331 6355 270 / fabian@thobe.eu Via Filippo Corridoni 68, 56125 Pisa
- [Acme] RFC 8555 Last Call Draft Change Request Fabian V. Thobe
- [Acme] Re: RFC 8555 Last Call Draft Change Request Mike Ounsworth
- [Acme] Re: RFC 8555 Last Call Draft Change Request Corey Bonnell
- [Acme] Re: RFC 8555 Last Call Draft Change Request Fabian V. Thobe
- [Acme] Re: RFC 8555 Last Call Draft Change Request Fabian V. Thobe
- [Acme] Re: RFC 8555 Last Call Draft Change Request Corey Bonnell
- [Acme] Re: RFC 8555 Last Call Draft Change Request Ilari Liusvaara
- [Acme] Re: RFC 8555 Last Call Draft Change Request Michael Richardson
- [Acme] Re: RFC 8555 Last Call Draft Change Request Michael Paoli
- [Acme] Re: RFC 8555 Last Call Draft Change Request Mike Ounsworth
- [Acme] Re: RFC 8555 Last Call Draft Change Request Aaron Gable
- [Acme] Re: RFC 8555 Last Call Draft Change Request Seo Suchan
- [Acme] Re: RFC 8555 Last Call Draft Change Request Fabian V. Thobe
- [Acme] Re: RFC 8555 Last Call Draft Change Request 皮皮猪
- [Acme] Re: RFC 8555 Last Call Draft Change Request Aaron Gable
- [Acme] Re: RFC 8555 Last Call Draft Change Request Corey Bonnell
- [Acme] Re: RFC 8555 Last Call Draft Change Request Michael Richardson
- [Acme] 回复:Re: RFC 8555 Last Call Draft Change Req… 皮皮猪