summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--acmens.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/acmens.py b/acmens.py
index 2ea3291..37e187f 100644
--- a/acmens.py
+++ b/acmens.py
@@ -145,17 +145,28 @@ def _do_challenge(challenge_type, authz_url, nonce_url, auth, account_key, thumb
# Choose challenge.
preferred_type = "dns-01" if challenge_type == "dns" else "http-01"
challenge = None
+ dns_challenge = None
http_challenge = None
for c in chl_result["challenges"]:
if c["type"] == preferred_type:
challenge = c
+ if c["type"] == "dns-01":
+ dns_challenge = c
if c["type"] == "http-01":
http_challenge = c
if challenge is None:
if http_challenge is None:
- sys.stderr.write("Error: Unable to find challenges!")
- sys.exit(1)
- challenge = http_challenge # Fallback to http challenge.
+ if dns_challenge is None:
+ sys.stderr.write("Error: Unable to find challenges!")
+ sys.exit(1)
+ else:
+ # Fallback to dns challenge.
+ challenge = dns_challenge
+ challenge_type = "dns"
+ else:
+ # Fallback to http challenge.
+ challenge = http_challenge
+ challenge_type = "http"
keyauthorization = "{0}.{1}".format(challenge["token"], thumbprint)
dns_payload = _b64(hashlib.sha256(keyauthorization.encode()).digest())