Closed rmbolger closed 1 month ago
As it turns out, we don't actually need a local SHA-224 implementation. Under normal circumstances, hashing the secret is only done on the server side. The only time the user would normally need to do it is when setting up the CNAMEs and the server has an API endpoint that returns the hashed subdomain that we wrapped in a helper function.
https://challenges.addr.tools/
This is a service (optionally self-hosted) that provides an algorithmic way to do ACME dns-01 challenges via CNAME aliasing similar to acme-dns.
Users choose a custom passphrase which is hashed with SHA-224 and concatenated with
challenges.addr.tools
(or the self-hosted equivalent root) to make an FQDN. The user creates a CNAME for their_acme-challenge
FQDN that points to the SHA-224 FQDN. Then the user (or our plugin) calls the API with the raw passphrase and the TXT value that needs to be set for the record.The tricky part of making this work is that .NET doesn't have a native SHA-224 implementation. But we might be able to find something in BouncyCastle or maybe make a standalone PowerShell native implementation.