VER-002Beside the path
Web Bot Auth key directory published
Checks whether your domain publishes a Web Bot Auth key directory: a set of Ed25519 public keys at /.well-known/http-message-signatures-directory.
What we check
Web Bot Auth is an IETF working group draft (draft-ietf-webbotauth-httpsig-protocol-00, dated 2026-09-01 and still the current revision when we re-checked on 2026-09-22) for signing automated HTTP requests. A party that signs its requests publishes its public keys at /.well-known/http-message-signatures-directory, as a JSON Web Key Set served with the media type application/http-message-signatures-directory+json. We check that your domain serves such a directory, that it contains at least one usable Ed25519 signing key, and that the key is inside its validity window. We check publication only: we do not verify any signatures, and we do not check that each kid is the key's thumbprint.
Why it matters
Signed requests are an emerging way to tell a genuine agent from an impostor. A directory at your domain shows you have adopted the draft's key format; as the draft is still changing, treat it as early groundwork.
How we check
We request /.well-known/http-message-signatures-directory once.
PASS: HTTP 200, a JSON object with a keys array, at least one key with kty OKP, crv Ed25519 and a non-empty x, with use absent or "sig" and key_ops absent or including "verify", inside its nbf/exp window, served as application/http-message-signatures-directory+json. WARN: the body is not JSON; it is JSON but not a key set; none of the keys is a usable Ed25519 signing key; every Ed25519 key has expired or is not yet valid; or the directory is served with a different media type, such as application/json. FAIL: the path returns anything other than 200 (for example 404), or returns your site's own HTML page. SKIPPED: our request was refused before it was answered, or bot management answered instead of your shop.
How to fix it
- Publish an Ed25519 JSON Web Key Set at /.well-known/http-message-signatures-directory with the media type application/http-message-signatures-directory+json.
- Give each key a use of "sig" and keep its nbf/exp window current; rotate keys before they expire.
- Re-read draft-ietf-webbotauth-httpsig-protocol before implementing; the header set and directory format are still changing.
What good looks like
GET /.well-known/http-message-signatures-directory
HTTP/1.1 200 OK
Content-Type: application/http-message-signatures-directory+json
{
"keys": [
{
"kty": "OKP",
"crv": "Ed25519",
"kid": "<RFC 7638 JWK thumbprint>",
"x": "<base64url-encoded public key>",
"use": "sig",
"nbf": 1767225600,
"exp": 1798761600
}
]
}