HTTP Message Signatures
Overview
HTTP Message Signatures (RFC 9421) is the IETF standard for signing selected parts of an HTTP request or response, so the receiver can check who signed them and that they arrived unchanged, even through proxies [1]. The sender lists the covered parts, such as the method, the host or chosen header fields, in a Signature-Input header and puts the signature in a Signature header; either side can ask for a signature with Accept-Signature [1]. The standard leaves key distribution and policy to each application, and newer work builds on it, including Web Bot Auth for bots and agents, WIMSE for workloads and the AAuth draft [1][10][11][12]. It replaced the older Cavage draft, and Mastodon, which still needs that draft for compatibility, has been adding RFC 9421 support since 2025 [1][8][16][18][19].
Who uses it
- OpenAI, ChatGPT agent —
https://chatgpt.com/.well-known/http-message-signatures-directory· Checked 2026-10-28 · label sig1 over "@authority";req and content-digest; Ed25519 signature verified; Content-Digest matches the body [31] - Google, Google-Agent (experimental) —
https://agent.bot.goog/.well-known/http-message-signatures-directory· Checked 2026-10-28 · label g over "@authority";req; Ed25519 signature verified [32]. Google tells sites: "Verify the Signature header according to the Signature-Input, following the HTTP Message Signatures standard (RFC 9421)." [27] - Browserbase —
https://www.browserbase.com/.well-known/http-message-signatures-directory· Checked 2026-10-28 · labels binding0 and binding1 over "@authority", one per key; both Ed25519 signatures verified [33] - Shopify, Cloudsurf —
https://cloudsurf.shopify.io/.well-known/http-message-signatures-directory· Checked 2026-10-28 · label sig1 over "@authority";req; Ed25519 signature verified [34] - mastodon.social —
https://mastodon.social/api/v2/instance· Checked 2026-10-28 · reports Mastodon version 5.0.0-nightly.2026-10-28 [35], a later version than 4.5.0, which turned RFC 9421 verification on unconditionally, and 4.7.0, which added outgoing RFC 9421 signatures as a fallback [17][18]
Who reads it
- Cloudflare, Verified Bots and Signed Agents (Message Signatures are now part of our Verified Bots Program, simplifying bot authentication, 2025-07-01) · vendor says:
“HTTP Message Signatures is a primitive that is useful beyond Cloudflare – the IETF standardized it as part of RFC 9421.” [20]
- Cloudflare, Verified Bots and Signed Agents (Web Bot Auth · Cloudflare bot solutions docs, last updated 2026-10-08) · vendor says:
“Cloudflare's implementation of Web Bot Auth does not support every component and parameter defined in IETF RFC 9421.” [21]
- Akamai, edge bot verification (Redefine Trust with Web Bot Authentication | Akamai, 2025-11-10, via Wayback) · vendor says:
“The Akamai edge retrieves the bot's signature directory, validates the signature using RFC 9421 rules, and confirms the request's authenticity without adding complexity for origin systems.” [22]
- AWS WAF (AWS WAF announces Web Bot Auth support - AWS, 2025-11-21) · vendor says:
“Web Bot Auth is an authentication method that leverages cryptographic signatures in HTTP messages to verify that a request comes from an automated bot.” [23]
- Vercel, Bot Protection (Vercel's bot verification now supports Web Bot Auth - Vercel, 2025-08-12) · vendor says:
“Now, Bot Protection can use HTTP Message Signatures to verify traffic automation from dynamic and distributed sources.” [24]
- Mastodon (Release v4.4.0 · mastodon/mastodon · GitHub, 2025-07-08) · vendor says:
“Add experimental support for receiving HTTP Message Signatures (RFC9421)” “This currently only covers verifying such signatures (inbound HTTP requests), not issuing them (outbound HTTP requests).” [16]
- Mastodon (Release v4.5.0 · mastodon/mastodon · GitHub, 2025-11-06) · vendor says:
“Change support for RFC9421 HTTP signatures to be enabled unconditionally” [17]
- Mastodon (Security - Mastodon documentation, checked 2026-10-28) · vendor says:
“This version of HTTP Signatures is still required for compatibility with older Mastodon versions (including the still supported 4.4.0) and other fediverse implementations, but we strongly suggest implementers to also implement the up-to-date HTTP Message Signatures (RFC9421) specification, starting with verification, as we intend to eventually move away from this earlier draft.” [19]
- Adyen, Agentic Commerce Suite UCP API (AI agent API integration with UCP | Adyen Docs, undated, checked 2026-10-28) · vendor says:
“Session operations also require UCP HTTP Message Signatures (RFC 9421) for request integrity and origin verification.” [25]
- Visa, Trusted Agent Protocol (Getting Started - Trusted Agent Protocol, undated, checked 2026-10-28) · vendor says:
“The Trusted Agent Protocol: This is the official rulebook that details the technical processes for recognizing a Visa-approved agent, including the cryptographic standards (RFC9421), required message signature fields, and the process for validating an agent's intent.” [26]
Recent coverage
- Daniel Stenberg, *daniel.haxx.se* (2026-07-27) — https://daniel.haxx.se/blog/2026/07/27/http-message-signatures-with-curl/:
“The recently published RFC 9421 describes how to do HTTP Message Signatures, and starting just now, curl experimentally supports them.” “This feature is already merged into git and will be part of the pending curl 8.22.0 release.” The curl changelog lists "RFC 9421 HTTP Message Signatures support" under 8.22.0, 2026-09-02 [29] [28]
- *wolfSSL blog* (2026-06-12) — https://www.wolfssl.com/native-http-message-signatures-in-curl-powered-by-wolfssl-part-3/:
“This post is about what we're contributing: native RFC 9421 support at the plumbing layer — curl and libcurl, with wolfCrypt providing the Ed25519 math.” [30]
See also
References
- A. Backman, J. Richer, M. Sporny, RFC 9421: HTTP Message Signatures (IETF, Standards Track), February 2024: "This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message." "This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier." "This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange." "This is an Internet Standards Track document." "The Signature-Input field is a Dictionary Structured Field (defined in Section 3.2 of [STRUCTURED-FIELDS]) containing the metadata for one or more message signatures generated from components within the HTTP message." "The Signature field is a Dictionary Structured Field (defined in Section 3.2 of [STRUCTURED-FIELDS]) containing one or more message signatures generated from the signature context of the target message." "While a signer is free to attach a signature to a request or response without prompting, it is often desirable for a potential verifier to signal that it expects a signature from a potential signer using the Accept-Signature field." "An application will usually use the keyid parameter of the signature parameters (Section 2.3) and define rules for resolving a key from there, though the appropriate key could be known from other means such as preregistration of a signer's key." "This specification was initially based on [SIGNING-HTTP-MESSAGES]." "The editors would like to thank the authors of [SIGNING-HTTP-MESSAGES] -- Mark Cavage and Manu Sporny -- for their work on that Internet-Draft and their continuing contributions." — https://www.rfc-editor.org/rfc/rfc9421.html
- RFC Editor, RFC 9421: HTTP Message Signatures | RFC Editor (info page; shows the two errata inline), checked 2026-10-28: "RFC 9421: HTTP Message Signatures | RFC Editor" "2024-10-29" — https://www.rfc-editor.org/info/rfc9421/
- IETF Datatracker, HTTP Message Signatures RFC 9421, checked 2026-10-28: "RFC - Proposed Standard (February 2024)" "Was draft-ietf-httpbis-message-signatures (httpbis WG)" "Paul Wouters" — https://datatracker.ietf.org/doc/rfc9421/
- IETF Datatracker, HTTP Message Signatures draft-ietf-httpbis-message-signatures-19 history, checked 2026-10-28: "2020-04-10" "draft-richanna-http-message-signatures" "draft-cavage-http-signatures" "2023-07-26" "2023-08-16" — https://datatracker.ietf.org/doc/draft-ietf-httpbis-message-signatures/history/
- RFC Editor, RFC Errata for RFC 9421 (two verified errata, IDs 8102 and 8103, reported 2024-09-15 and verified 2024-10-29), checked 2026-10-28: "Errata-ID: 8102" "Errata-ID: 8103" "2024-09-15" "2024-10-29" "@signature-params" — https://errata.rfc-editor.org/search/?rfc_number=9421&presentation=records
- IANA, HTTP Message Signature registries (created 2023-08-18, last updated 2026-10-23; experts Justin Richer and Manu Sporny), checked 2026-10-28: "2023-08-18" "2026-10-23" "Justin Richer, Manu Sporny" "rsa-pss-sha512" "rsa-v1_5-sha256" "hmac-sha256" "ecdsa-p256-sha256" "ecdsa-p384-sha384" "ed25519" "ml-dsa-44" "ml-dsa-65" "ml-dsa-87" — https://www.iana.org/assignments/http-message-signature
- IANA, Hypertext Transfer Protocol (HTTP) Field Name Registry (CSV export; Accept-Signature, Signature and Signature-Input listed as permanent, citing RFC 9421), checked 2026-10-28: "Accept-Signature,permanent," "Signature,permanent,Dictionary" "Signature-Input,permanent,Dictionary" — https://www.iana.org/assignments/http-fields/field-names.csv
- IETF Datatracker, Signing HTTP Messages draft-cavage-http-signatures-12, checked 2026-10-28: "Mark Cavage" "Manu Sporny" "2019-10-21" "Replaced by draft-ietf-httpbis-message-signatures" — https://datatracker.ietf.org/doc/draft-cavage-http-signatures/
- IETF Datatracker, HTTP Message Signatures for automated traffic draft-ietf-webbotauth-httpsig-protocol-00, checked 2026-10-28: "Active Internet-Draft" "webbotauth WG" "2026-09-01" — https://datatracker.ietf.org/doc/draft-ietf-webbotauth-httpsig-protocol/
- T. Meunier, S. Major, HTTP Message Signatures for automated traffic (draft-ietf-webbotauth-httpsig-protocol-00), 2026-09-01: "A directory served at the well-known URI registered in Section 8.1 MUST be served with media type application/http-message-signatures-directory+json." "A verifier using a corresponding directory response signature as proof MUST validate it using the key provided by the directory and MUST validate the Content-Digest field against the response body." "tag MUST be http-message-signatures-directory" — https://www.ietf.org/archive/id/draft-ietf-webbotauth-httpsig-protocol-00.html
- J. Salowey, Y. Sheffer, WIMSE Workload-to-Workload Authentication with HTTP Signatures (draft-ietf-wimse-http-signature-08, Active Internet-Draft, wimse WG; WG state "Submitted to IESG for Publication", IESG state "Publication Requested", intended Proposed Standard, as of 2026-10-28), latest revision 2026-10-20: "We define a profile of the HTTP Signatures protocol [RFC9421] to protect the service traffic." — https://datatracker.ietf.org/doc/draft-ietf-wimse-http-signature/
- D. Hardt, AAuth Protocol draft-hardt-oauth-aauth-protocol-11 (individual Internet-Draft), last updated 2026-09-25: "Every agent instance has its own identifier and signing key, and every request it makes is bound to that key by an HTTP Message Signature ([RFC9421])" — https://datatracker.ietf.org/doc/draft-hardt-oauth-aauth-protocol/
- R. Polli, L. Pardue, RFC 9530: Digest Fields | RFC Editor, February 2024: "For example, HTTP Message Signatures [SIGNATURES] could be used to sign Integrity fields, thus providing coverage for HTTP content or representation data." — https://www.rfc-editor.org/info/rfc9530/
- J. Richer, F. Imbault, RFC 9635: Grant Negotiation and Authorization Protocol (GNAP) | RFC Editor, October 2024: "This method is indicated by the method value httpsig and can be declared in either object form or string form." — https://www.rfc-editor.org/info/rfc9635/
- C2SP, Post-Quantum Algorithms for HTTP Message Signatures | C2SP (httpsig-pq v1.0.1), 2026-10-21: "This document specifies three HTTP Message Signature algorithm identifiers for the ML-DSA signature schemes standardized in FIPS 204." — https://c2sp.org/httpsig-pq@v1.0.1
- Mastodon, Release v4.4.0 · mastodon/mastodon · GitHub, 2025-07-08: "Add experimental support for receiving HTTP Message Signatures (RFC9421)" "This currently only covers verifying such signatures (inbound HTTP requests), not issuing them (outbound HTTP requests)." — https://github.com/mastodon/mastodon/releases/tag/v4.4.0
- Mastodon, Release v4.5.0 · mastodon/mastodon · GitHub, 2025-11-06: "Change support for RFC9421 HTTP signatures to be enabled unconditionally" — https://github.com/mastodon/mastodon/releases/tag/v4.5.0
- Mastodon, Release v4.7.0 · mastodon/mastodon · GitHub, 2026-08-20: "Add outgoing RFC9421 HTTP Message Signatures as fallback to earlier draft" "Add support for Ed25519 signatures in HTTP Message Signatures" — https://github.com/mastodon/mastodon/releases/tag/v4.7.0
- Mastodon, Security - Mastodon documentation (undated), checked 2026-10-28: "This version of HTTP Signatures is still required for compatibility with older Mastodon versions (including the still supported 4.4.0) and other fediverse implementations, but we strongly suggest implementers to also implement the up-to-date HTTP Message Signatures (RFC9421) specification, starting with verification, as we intend to eventually move away from this earlier draft." — https://docs.joinmastodon.org/spec/security/
- Cloudflare, Message Signatures are now part of our Verified Bots Program, simplifying bot authentication (Cloudflare blog), 2025-07-01: "HTTP Message Signatures is a primitive that is useful beyond Cloudflare – the IETF standardized it as part of RFC 9421." — https://blog.cloudflare.com/verified-bots-with-cryptography/
- Cloudflare, Web Bot Auth · Cloudflare bot solutions docs, last updated 2026-10-08: "Cloudflare's implementation of Web Bot Auth does not support every component and parameter defined in IETF RFC 9421." — https://developers.cloudflare.com/bots/reference/bot-verification/web-bot-auth/
- Rupesh Chokshi, Akamai, Redefine Trust with Web Bot Authentication | Akamai (Akamai blog), 2025-11-10. Read through the Wayback Machine copy of 2026-06-09, because the live page returned 403 to our fetches: "The Akamai edge retrieves the bot's signature directory, validates the signature using RFC 9421 rules, and confirms the request's authenticity without adding complexity for origin systems." — https://web.archive.org/web/20260609113733/https://www.akamai.com/blog/security/redefine-trust-web-bot-authentication
- AWS, AWS WAF announces Web Bot Auth support - AWS (What's New), 2025-11-21: "Web Bot Auth is an authentication method that leverages cryptographic signatures in HTTP messages to verify that a request comes from an automated bot." — https://aws.amazon.com/about-aws/whats-new/2025/11/aws-waf-web-bot-auth-support/
- Vercel, Vercel's bot verification now supports Web Bot Auth - Vercel (changelog), 2025-08-12: "Now, Bot Protection can use HTTP Message Signatures to verify traffic automation from dynamic and distributed sources." — https://vercel.com/changelog/vercels-bot-verification-now-supports-web-bot-auth
- Adyen, AI agent API integration with UCP | Adyen Docs (undated), checked 2026-10-29: "Session operations also require UCP HTTP Message Signatures (RFC 9421) for request integrity and origin verification." "Integrate with the Adyen Agentic API to enable your AI agent platform to make transactions with Adyen merchants using the Universal Commerce Protocol (UCP)." — https://docs.adyen.com/online-payments/agentic-commerce/agent-platform/ai-agent-integration-ucp
- Visa, Getting Started - Trusted Agent Protocol (Visa Developer, undated), checked 2026-10-28: "The Trusted Agent Protocol: This is the official rulebook that details the technical processes for recognizing a Visa-approved agent, including the cryptographic standards (RFC9421), required message signature fields, and the process for validating an agent's intent." — https://developer.visa.com/docs/trusted-agent-protocol
- Google, Google's Guide to Authenticating Requests with Web Bot Auth (Experimental) (undated), checked 2026-10-28: "Verify the Signature header according to the Signature-Input, following the HTTP Message Signatures standard (RFC 9421)." — https://developers.google.com/crawling/docs/crawlers-fetchers/web-bot-auth
- Daniel Stenberg, HTTP Message Signatures with curl | daniel.haxx.se, 2026-07-27: "The recently published RFC 9421 describes how to do HTTP Message Signatures, and starting just now, curl experimentally supports them." "This feature is already merged into git and will be part of the pending curl 8.22.0 release." — https://daniel.haxx.se/blog/2026/07/27/http-message-signatures-with-curl/
- curl, curl - Changes (8.22.0, 2026-09-02), checked 2026-10-28: "RFC 9421 HTTP Message Signatures support" — https://curl.se/changes.html
- wolfSSL, Native HTTP Message Signatures in curl, Powered by wolfSSL (Part 3, wolfSSL blog), 2026-06-12: "This post is about what we're contributing: native RFC 9421 support at the plumbing layer — curl and libcurl, with wolfCrypt providing the Ed25519 math." — https://www.wolfssl.com/native-http-message-signatures-in-curl-powered-by-wolfssl-part-3/
- OpenAI, chatgpt.com/.well-known/http-message-signatures-directory (key directory with a signed response), checked 2026-10-28: ""crv":"Ed25519","kty":"OKP"" — https://chatgpt.com/.well-known/http-message-signatures-directory
- Google, agent.bot.goog/.well-known/http-message-signatures-directory (key directory with a signed response), checked 2026-10-28: ""alg":"EdDSA"" ""crv":"Ed25519"" — https://agent.bot.goog/.well-known/http-message-signatures-directory
- Browserbase, www.browserbase.com/.well-known/http-message-signatures-directory (key directory with a signed response), checked 2026-10-28: ""crv":"Ed25519"" — https://www.browserbase.com/.well-known/http-message-signatures-directory
- Shopify, cloudsurf.shopify.io/.well-known/http-message-signatures-directory (key directory with a signed response), checked 2026-10-28: ""kty":"OKP","crv":"Ed25519"" — https://cloudsurf.shopify.io/.well-known/http-message-signatures-directory
- Mastodon gGmbH, mastodon.social/api/v2/instance (public instance information, including the software version), checked 2026-10-28: ""domain":"mastodon.social","title":"Mastodon.social","version":"5.0.0-nightly.2026-10-28"" — https://mastodon.social/api/v2/instance