Account on the ACME server is represented by an ACME Account URL, which must be included in every JWS header ("kid" parameter). To acquire the ACME Account URL, ACME client must go through the authorization process.
ACME Account creation and authorization
To perform the authorization, ACME client must send a EC P-256 public key, associated with the ACME account. If account with such key does not exist on the server, it will be created.
Public keys must be sent to the ACME server in JWK format (RFC 7517):
{
"kty" : "EC",
"crv" : "P-256",
"x" : "<EC pubkey X point>",
"y" : "<EC pubkey Y point>",
"kid" : "<Human-readable Key Identifier string>"
}
To authorize on the ACME server, send a POST request to the newAccount URL with JWK in protected header (instead of "kid"), and an empty payload:
It's also possible to check, whether the ACME Account with such key exists on the server, without creating one. For this, ACME client must put a "onlyReturnExisting" boolean parameter into the JWS payload: