Maybe many people know that besides Let’s Encrypt, there’s another CA provides free SSL certificates with ACME: Buypass GO
I’ve tried to configure caddy to use it (Buypass requires an email address):
tls youthdna@live.com {
ca https://api.test4.buypass.no/acme/directory
}
However, I got this error:
Aug 14 01:51:31 server caddy[1169]: 2020/08/14 01:51:31 [ERROR] Making new ACME client: acme: error: 0 :: POST :: https://api.test4.buypass.no/acme-v02/new-acct :: urn:ietf:params:acme:error:badSignatureAlgorithm :: Signature type in JWS header is not supported, url: (attempt 1/2)
According to my find, caddy uses EC secp384r1 key to create ACME account:
Aug 14 05:52:20 server caddy[1077]: 2020/08/14 05:52:20 [INFO] acme: Registering account for youthdna@live.com
Aug 14 05:52:20 server caddy[1077]: 2020/08/14 05:52:20 [ERROR] Making new ACME client: acme: error: 0 :: POST :: https://api.buypass.com/acme-v02/new-acct :: urn:ietf:params:acme:error:badSignatureAlgorithm :: Signature type in JWS header is not supported, url: (attempt 1/2)
Aug 14 05:52:22 server caddy[1077]: 2020/08/14 05:52:22 [INFO] acme: Registering account for youthdna@live.com
Aug 14 05:52:38 server caddy[1077]: 2020/08/14 05:52:38 [ERROR] Making new ACME client: Post "https://api.buypass.com/acme-v02/new-acct": net/http: timeout awaiting response headers (attempt 2/2)
Aug 14 05:52:38 server caddy[1077]: 2020/08/14 05:52:38 [ERROR] attempt 1: [can.bohan.co] Obtain: Post "https://api.buypass.com/acme-v02/new-acct": net/http: timeout awaiting response headers - retrying in 1m0s (21.401174137s/720h0m0s elapsed)...
Aug 14 05:53:38 server caddy[1077]: 2020/08/14 05:53:38 [INFO] acme: Registering account for youthdna@live.com
Aug 14 05:53:40 server caddy[1077]: 2020/08/14 05:53:40 [ERROR] Making new ACME client: acme: error: 0 :: POST :: https://api.buypass.com/acme-v02/new-acct :: urn:ietf:params:acme:error:badSignatureAlgorithm :: Signature type in JWS header is not supported, url: (attempt 1/2)
Aug 14 05:53:42 server caddy[1077]: 2020/08/14 05:53:42 [INFO] acme: Registering account for youthdna@live.com
Aug 14 05:53:43 server caddy[1077]: 2020/08/14 05:53:43 [ERROR] Making new ACME client: acme: error: 0 :: POST :: https://api.buypass.com/acme-v02/new-acct :: urn:ietf:params:acme:error:badSignatureAlgorithm :: Signature type in JWS header is not supported, url: (attempt 2/2)
Aug 14 05:53:43 server caddy[1077]: 2020/08/14 05:53:43 [ERROR] attempt 2: [can.bohan.co] Obtain: acme: error: 0 :: POST :: https://api.buypass.com/acme-v02/new-acct :: urn:ietf:params:acme:error:badSignatureAlgorithm :: Signature type in JWS header is not supported, url: - retrying in 2m0s (1m27.324504324s/720h0m0s elapsed)...
The key_type configures the key algo for the SSL certificate (and CSR to be generated) but not the key for registering the ACME account and signing the JWS message.
All ACME requests with a non-empty body MUST encapsulate their payload in a JSON Web Signature (JWS) [RFC7515] object, signed using the account’s private key unless otherwise specified.
An ACME server MUST implement the “ES256” signature algorithm [RFC7518] and SHOULD implement the “EdDSA” signature algorithm using the “Ed25519” variant (indicated by “crv”) [RFC8037].
ES256 stands for ECDSA using P-256 and SHA-256.
Maybe caddy is default to ES384…
I’m using v2.1.1 h1:X9k1+ehZPYYrSqBvf/ocUgdLSRIuiNiMo7CvyGUQKeA=