Skip to main content

    CAA Account Binding: What accounturi and validationmethods Do

    CAA accounturi and validationmethods narrow issuance to one account and one validation method. What RFC 8657 defines, and the 2027 deadline behind it.

    DR
    Daniel Rehak
    ·
    13 min read
    ·
    Published September 17, 2026
    ·
    Last updated September 17, 2026

    The short answer

    A CAA record names which certificate authority may issue for your domain. RFC 8657 adds two parameters that narrow it further: accounturi pins issuance to one specific account at that CA, and validationmethods limits which domain-control checks that CA will accept. As of the CA/Browser Forum Baseline Requirements in force in September 2026, CAs SHOULD honour both; under Ballot SC098 they MUST honour both from 15 March 2027.

    The three gates a certificate request passes before a CA will issueA request enters at the left and passes through three gates in order. Gate one is the issue or issuewild property, which decides which certificate authority may issue. Gate two is the accounturi parameter, which decides which account at that authority may issue. Gate three is the validationmethods parameter, which decides which domain control validation method is acceptable. Gates two and three are enclosed in a gold dashed boundary labelled as the two gates RFC 8657 adds. Beneath each gate, a line of text names what it turns away: every other CA, every other account, and every other validation method.A plain CAA record closes one gate. RFC 8657 closes two more.added by RFC 8657REQUESTfor your nameGATE 1issuewhich CA?GATE 2accounturiwhich account?GATE 3validationmethodswhich check?ISSUANCEcertificate signedTurned away at each gateGate 1 — every certificate authority you did not name.Gate 2 — every other account at the CA you did name, including an attacker's.Gate 3 — every validation method except the ones you listed.Gate 1 alone still admits anyone who can pass a check at that CA.
    Gate 1 is the gate most domains already have. It is also the widest one: naming a CA you trust does nothing about the other customers of that CA.

    What the two parameters actually do

    Both attach to the issue and issuewild properties of a CAA record. accounturi carries a URI identifying one account at the named CA, and where it is present the CA may only treat that property as authorising issuance if it recognises the URI as the account making the request. validationmethods carries a comma-separated list of validation method labels, and permits issuance only where the method being used appears in that list.

    The gap they close is worth stating plainly. A CAA record that says issue "letsencrypt.org" authorises Let's Encrypt. It does not authorise you at Let's Encrypt. Anyone in the world who can satisfy a domain-control check for your hostname against that CA gets a certificate, and your CAA record raises no objection, because the only question it was ever able to ask is which company signs.

    That is a real gap in a few concrete situations. A hosting provider or CDN holding a wildcard DNS delegation. A stale deployment pipeline nobody decommissioned, still holding a working account key. A staging ACME account that somebody once pointed at production names. None of these is an exotic attack; they are the ordinary mess of an organisation that has been running for a few years, and account binding is the DNS-level answer to all three.

    validationmethods answers a different question. Domain control validation methods are not equally hard to subvert from the network. An adversary who can influence routing to your web server can potentially satisfy http-01 without ever touching your DNS. Restricting the record to dns-01 means a CA will refuse an http-01 authorisation for that name even if it succeeds, which moves the whole validation path into the zone you control and, if the zone is signed, into material an attacker cannot forge.

    When do CAs have to honour them?

    Section 4.2.2.1.2 of the TLS Baseline Requirements says CAs SHOULD process accounturi and validationmethods as specified in RFC 8657, and that effective 15 March 2027 they MUST. That section was created by Ballot SC098, "Process RFC 8657 CAA Parameters", adopted on 13 May 2026 and effective from 16 June 2026 as Baseline Requirements version 2.2.8.

    The distinction matters more than it looks. RFC 8657 has been published since November 2019 and Let's Encrypt has honoured accounturi for years, but until SC098 there was no industry-wide obligation on anyone. The RFC is blunt about the consequence: domains configuring CAA records for a CA must not assume the restrictions implied by these parameters are effective without an explicit statement from that CA. Publish accounturi for a CA that has not implemented it and you get a record that reads like a security control and enforces nothing.

    Three further requirements land on the same 2027 date, and they are the parts that make the parameters usable beyond the ACME world:

    From 15 March 2027What it means for you
    A CA that does not identify accounts by ACME account URL must document its accounturi format in section 4.2 of its CP or CPS, and should follow the acct: URI scheme of RFC 7565.Non-ACME CAs stop being a black box. You will be able to read the accepted URI format out of a published document instead of opening a support ticket.
    A CA may let accounturi name a parent organisational account and still issue to a subordinate ACME account, if it keeps an auditable mapping, has verified the parent authorised the subordinate, and retains the logs.An explicit exception to RFC 8657. It means a large organisation can pin one account URI in DNS without breaking every per-team or per-cluster ACME account underneath it.
    Validation methods with no entry in the IANA ACME registry get labels formed by joining ca-tbr- to the Baseline Requirements subsection number.validationmethods becomes meaningful for OV and EV certificates ordered outside ACME, which is where most commercial issuance still happens.

    One small compatibility note buried in the same section: the canonical form of a validation method label is lowercase, but a CA may match case-insensitively provided it documents that in its CP or CPS. Write your labels lowercase and the question never arises.

    How to write the records

    The parameters go inside the quoted issue value, after the issuer domain name, separated by semicolons. The issuer domain name always comes first. Both parameters are optional and may appear in either order. A record pinning issuance to one Let's Encrypt account and to DNS validation looks like this:

    example.com. IN CAA 0 issue "letsencrypt.org; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234567; validationmethods=dns-01"
    The parts of a CAA issue value carrying both RFC 8657 parametersA single CAA record is broken into its parts. Reading left to right: the owner name example.com, the flags byte zero, the property tag issue, and then the quoted issue value. The issue value is split into three segments separated by semicolons. The first segment is the issuer domain name, marked mandatory. The second is the accounturi parameter, carrying an ACME account URL. The third, highlighted in gold, is the validationmethods parameter carrying a comma-separated list of method labels. A note states that the issuer domain name must come first and that the parameters may appear in either order.One record, four partsexample.com. IN CAA 0 issue "letsencrypt.org;accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234567;validationmethods=dns-01"issuer domain namemandatory, comes firstaccounturione URI, one accountvalidationmethodscomma-separated listSemicolons separate the segments. The issuer domain name must come first;the two parameters may appear in either order, and either may be omitted.
    Everything after the first semicolon is a CA-specific parameter namespace, which is why a CA that has never implemented RFC 8657 simply ignores it.

    Two accounts need two records. RFC 8657 combines separate properties as a union, so a request satisfying either one is permitted:

    example.com. IN CAA 0 issue "example.net; accounturi=https://example.net/account/1234"
    example.com. IN CAA 0 issue "example.net; accounturi=https://example.net/account/2345"

    The same union rule lets you split responsibilities by method. The following pair says account 1234 may only use dns-01 and account 2345 may only use http-01, which is a reasonable way to describe a DNS-driven renewal job and a web-server-driven one that both legitimately exist:

    example.com. IN CAA 0 issue "example.net; accounturi=https://example.net/account/1234; validationmethods=dns-01"
    example.com. IN CAA 0 issue "example.net; accounturi=https://example.net/account/2345; validationmethods=http-01"

    What you must not do is collapse that into one record with two accounturi parameters. It is the most common mistake, it looks entirely reasonable, and it produces a record that authorises nobody at all.

    Two accounts expressed correctly as two records, and incorrectly as two parametersTwo panels side by side. The left panel, marked works, shows two separate CAA records for the same issuer domain, each carrying one accounturi parameter for a different account. Its result line reads: either account may issue. The right panel, outlined in gold and marked authorises nobody, shows a single CAA record carrying two accounturi parameters. Its result line reads: the property is unsatisfiable, so no account may issue. A note underneath states that RFC 8657 defines a property with multiple accounturi parameters as unsatisfiable.Two accounts: two records, never two parametersWORKSCAA 0 issue "ca.example;  accounturi=.../acct/1"CAA 0 issue "ca.example;  accounturi=.../acct/2"ResultAccount 1 or account 2 may issue.AUTHORISES NOBODYCAA 0 issue "ca.example;  accounturi=.../acct/1;  accounturi=.../acct/2"ResultUnsatisfiable. Renewal fails.RFC 8657 section 3: a property with multiple accounturi parameters is unsatisfiable.Separate records are combined as a union; parameters inside one property are not.
    The broken form fails closed and fails quietly: TLS keeps working on the certificate you already have, and the error only surfaces at renewal.

    Remember that issue does not cover wildcards on its own. If you rely on a wildcard certificate, the same parameters have to be repeated on an issuewild property, or the wildcard request will be evaluated against a record that does not exist.

    How do you find your account URI?

    For an ACME CA it is the ACME account URL, which for Let's Encrypt takes the form https://acme-v02.api.letsencrypt.org/acme/acct/1234567, where the trailing number is the account ID. Certbot 1.23.0 and newer prints it directly; older versions keep it in the uri field of the account registration file on disk.

    certbot show_account
    
    # Certbot older than 1.23.0:
    cat /etc/letsencrypt/accounts/acme-v02.api.letsencrypt.org/directory/*/regr.json

    Three things reliably catch people out here. The staging environment issues completely separate account IDs, so an ID copied from a staging run pins your production record to an account that will never make a production request. A host that has been rebuilt without preserving /etc/letsencrypt/accounts comes back with a new account, and the old URI in DNS stops matching. And a managed platform that obtains certificates on your behalf usually holds its own account, so the URI you need is the platform's, not one you can read off your own server.

    That last case is the one to check before you publish anything. If a CDN, load balancer or hosting control panel renews certificates for the same names, its account has to be in the record too, otherwise you will pin issuance to a machine that is no longer the one doing the issuing.

    What if your CA does not speak ACME?

    Then there is no ACME account URL to point at, and the CA defines its own URI format. From 15 March 2027 the Baseline Requirements require such a CA to publish that format in section 4.2 of its CP or CPS. For validation methods, the ca-tbr-<N> labels fill the gap: the number is the Baseline Requirements subsection, so ca-tbr-7 is the DNS Change method of section 3.2.2.4.7 and ca-tbr-19 is the ACME website-change method of section 3.2.2.4.19.

    Certum is a useful worked example, because it is a commercial CA that already supports both parameters outside ACME. It recognises certum.pl and certum.eu as its issuer domain names, takes the accounturi value from the customer account in its certificate management panel, and accepts ca-tbr-7 for DNS-based verification:

    example.com. IN CAA 0 issue "certum.pl; accounturi=<your account URI>; validationmethods=ca-tbr-7"

    This is the part that turns account binding from a Let's Encrypt feature into a general control. An organisation-validated or extended-validation certificate is ordered through a portal, not an ACME client, and until ca-tbr- labels existed there was no way to express "only DNS validation" for that kind of order. If you are choosing where to buy, the DV, OV and EV certificates we issue come from Certum, so the syntax above is the one that applies. For any other CA, ask for its documented position before you publish the record, because RFC 8657 puts the burden of confirming support on you rather than on the CA.

    Four ways to lock yourself out

    RFC 8657 defines three conditions that make a property unsatisfiable, meaning it authorises no issuance whatsoever, and ordinary misconfiguration supplies a fourth. All four fail closed, none of them affects a certificate you already hold, and every one of them surfaces for the first time at renewal.

    1. An accounturi the CA does not recognise. A typo, a deleted account, a URI from a different environment. The property is unsatisfiable, and if it is your only record for that CA, issuance stops.
    2. More than one accounturi parameter on one property. Explicitly unsatisfiable under section 3 of the RFC. Use one record per account instead.
    3. An account at the wrong CA. The RFC gives this as its own worked example: a property naming a domain belonging to CA A with an accounturi identifying an account at CA B is unsatisfiable. The parameter never overrides the issuer domain name.
    4. A validationmethods list that excludes the method your client actually uses. This is the quiet one. Pinning dns-01 is a good idea right up until a colleague switches a renewal job to a webroot plugin, at which point the CA refuses an authorisation that would otherwise have succeeded.

    There is a timing trap layered on top. Section 4.2.2.1 of the Baseline Requirements permits a CA that has processed a CAA record to issue within the record's TTL, or eight hours, whichever is greater. A correction you publish is therefore not necessarily in force the moment it propagates, and neither is a restriction. Lower the TTL on your CAA records before you start changing them.

    What this does not protect

    Nothing in RFC 8657 constrains a CA you did not name, or one that ignores CAA altogether. The parameters let a domain further restrict a CA it already has a relationship with; the capacity of every other CA to issue for your names is, in the RFC's own words, completely unchanged. Before treating this as a perimeter, know where it stops.

    What CAA account binding removes and what it leaves unchangedTwo columns. The left column, headed stops, lists three things account binding removes: another customer of the same CA obtaining a certificate for your name, a second team account inside your own organisation issuing without approval, and issuance through a validation method you did not authorise. The right column, outlined in gold and headed does not stop, lists three things it leaves unchanged: a CA that does not honour CAA at all, a subdomain whose DNS is delegated to someone else who publishes their own CAA records, and a global man-in-the-middle attacker when the zone is not signed with DNSSEC.Where the boundary actually sitsSTOPSAnother customer of the same CApassing a check for your name.A second account inside your ownorganisation issuing off-process.Issuance through a validationmethod you did not authorise.DOES NOT STOPA CA that does not honour CAAat all. Nothing changes there.A delegated subdomain publishingits own CAA records.A global man-in-the-middle whenthe zone is not DNSSEC-signed.Certificate Transparency monitoring is what covers the right-hand column.
    The right-hand column is the reason account binding is a narrowing control rather than a perimeter: it constrains a CA you already trust.

    Delegation beats it. CAA lookups walk up the DNS hierarchy until they find a record. If control over shop.example.com is delegated to another party, that party publishes its own CAA records at that level and yours are never consulted. Account binding at the apex says nothing about a zone you handed to someone else.

    It leans on DNSSEC. A CA supporting these parameters is required to perform CAA validation through a trusted DNSSEC-validating resolver, and since 2025 the Baseline Requirements have required DNSSEC validation on CAA lookups generally, with validation errors such as SERVFAIL explicitly not counting as permission to issue. That protection only exists if your zone is signed. Against an adversary who can intercept all validation traffic for an unsigned domain, the restriction can be forged along with everything else.

    It is public. CAA records are readable by anyone, so publishing account URIs tells the world which accounts you use. Where the same account issues for several domains, that is a correlation anybody can compute. The RFC raises this itself and tells CAs to assume account URIs will become public knowledge.

    None of that argues against using the parameters. It argues for keeping Certificate Transparency monitoring switched on afterwards, because CT is what covers the cases CAA structurally cannot.

    Rolling it out without locking yourself out

    The failure mode is silent, which is what makes the order of operations matter. A wrong parameter does not break TLS and does not break your site; it breaks the next issuance, and on a 90-day certificate that can sit undiscovered for weeks. Prove each step works before you rely on it.

    1. Confirm your CA documents support. Until 15 March 2027 this is optional for them. An undocumented CA is not a reason to skip the record, but it is a reason not to count it as a control.
    2. Lower the CAA TTL first, so the eight-hour floor in section 4.2.2.1 is the only lag you are fighting.
    3. Inventory every account that legitimately issues. Servers, CI pipelines, the CDN, the load balancer, the control panel. Each gets its own record.
    4. Add accounturi alone. Leave validationmethods out of the first change so a failure has one possible cause.
    5. Force a renewal immediately rather than waiting for the scheduled one. On Certbot, certbot renew --force-renewal --cert-name example.com turns a problem you would have found in seven weeks into one you find in seven seconds.
    6. Repeat for issuewild if you use wildcard certificates.
    7. Only then add validationmethods, matching what your client actually does today rather than what you would prefer it did.

    You can read back what is actually published with dig CAA example.com +short, which is worth doing from outside your own network — a split-horizon resolver that answers differently for internal clients has fooled better engineers than either of us.

    A closing opinion, since the parameters are not equally worth your time. For a single domain renewing through one ACME account, accounturi is a genuine improvement that costs one DNS record and closes a real gap. validationmethods is narrower in benefit and wider in blast radius, and it earns its place mainly when your zone is signed and you want the whole validation path inside DNSSEC. If your zone is not signed yet, sign it first. That single change does more for the integrity of your certificate issuance than either parameter can do on its own.

    Frequently Asked Questions

    Answers to common questions about certificates and our services.

    What does the accounturi parameter in a CAA record do?

    It restricts a CAA issue or issuewild property to one specific account at the named certificate authority. The value is a URI identifying that account, and for an ACME CA it is the ACME account URL, for example https://acme-v02.api.letsencrypt.org/acme/acct/1234567. Where the parameter is present, the CA may only treat that property as authorising issuance if it recognises the URI as identifying the account making the request. A property with no accounturi parameter matches any account at that CA.

    Are certificate authorities required to honour accounturi?

    Not yet, but the date is fixed. Section 4.2.2.1.2 of the CA/Browser Forum TLS Baseline Requirements says CAs SHOULD process the accounturi and validationmethods parameters as specified in RFC 8657, and that effective 15 March 2027 they MUST. That language arrived with Ballot SC098, adopted on 13 May 2026 and effective from 16 June 2026. Until the 2027 date passes, support is a per-CA decision and RFC 8657 is explicit that you must not assume the restriction is working without confirmation from the CA.

    Which validation methods can I put in validationmethods?

    Labels from the IANA ACME Validation Methods registry, which is where dns-01, http-01 and tls-alpn-01 live, or a CA-specific label for a method that is not registered there. Let's Encrypt supports the three ACME labels. For non-ACME methods the Baseline Requirements define labels formed by joining the string ca-tbr- to the Baseline Requirements subsection number, so ca-tbr-7 means the DNS Change method in section 3.2.2.4.7 and ca-tbr-19 means the ACME website-change method in section 3.2.2.4.19.

    Can I authorise two ACME accounts for the same domain?

    Yes, but with two records rather than two parameters. Publish one CAA record per account, each naming the same issuer domain and carrying its own accounturi. A request satisfying either record is permitted. Putting two accounturi parameters inside a single property does the opposite of what people expect: RFC 8657 defines a property with multiple accounturi parameters as unsatisfiable, so that record authorises nothing at all.

    Does account binding replace DNSSEC?

    No, it depends on it. RFC 8657 requires a CA supporting these parameters to perform CAA validation using a trusted DNSSEC-validating resolver, because an attacker who can forge your DNS answers can forge the CAA record carrying the restriction. If your zone is not signed, an adversary capable of intercepting all validation traffic for your domain can still pass domain control validation. Signing the zone is the prerequisite, not an alternative.

    Will a wrong accounturi break my website?

    It will not touch live traffic. Certificates already issued keep working until they expire, and browsers never read CAA records. What breaks is the next issuance: your ACME client requests a certificate, the CA evaluates the CAA record, finds the property unsatisfiable, and refuses. On a 90-day certificate that failure can sit unnoticed for weeks, which is why the safe order is to add the parameter and then force a renewal immediately to prove it still works.

    Still Have Questions?

    Contact our support team with questions about certificates, installation, or technical issues.

    Before you pin a record to a CA

    Account binding only means something if the CA named in the record implements it, and until March 2027 that is a per-CA decision rather than a rule. It is worth settling before you buy, not after. Compare the DV, OV and EV certificates we issue — all from Certum, whose issuer domain names and ca-tbr-7 label are the ones used in the examples above.

    Related reading