mirror of
https://github.com/certbot/certbot.git
synced 2026-07-30 18:04:31 +02:00
acme.verify.simple_http_simple_verify
This commit is contained in:
@@ -1,22 +1,18 @@
|
||||
"""Manual plugin."""
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
|
||||
import requests
|
||||
import zope.component
|
||||
import zope.interface
|
||||
|
||||
from acme import challenges
|
||||
from acme import jose
|
||||
from acme import verify as acme_verify
|
||||
|
||||
from letsencrypt import interfaces
|
||||
from letsencrypt.plugins import common
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ManualAuthenticator(common.Plugin):
|
||||
"""Manual Authenticator.
|
||||
|
||||
@@ -61,9 +57,7 @@ s.serve_forever()" """
|
||||
|
||||
According to the ACME specification, "the ACME server MUST ignore
|
||||
the certificate provided by the HTTPS server", so the first command
|
||||
generates temporary self-signed certificate. For the same reason
|
||||
``requests.get`` in `_verify` sets ``verify=False``. Python HTTPS
|
||||
server command serves the ``token`` on all URIs.
|
||||
generates temporary self-signed certificate.
|
||||
|
||||
"""
|
||||
|
||||
@@ -109,7 +103,8 @@ binary for temporary key/certificate generation.""".replace("\n", "")
|
||||
uri=response.uri(achall.domain),
|
||||
command=self.template.format(achall=achall, response=response)))
|
||||
|
||||
if self._verify(achall, response):
|
||||
if acme_verify.simple_http_simple_verify(
|
||||
response, achall.challb, achall.domain):
|
||||
return response
|
||||
else:
|
||||
return None
|
||||
@@ -121,21 +116,5 @@ binary for temporary key/certificate generation.""".replace("\n", "")
|
||||
sys.stdout.write(message)
|
||||
raw_input("Press ENTER to continue")
|
||||
|
||||
def _verify(self, achall, chall_response): # pylint: disable=no-self-use
|
||||
uri = chall_response.uri(achall.domain)
|
||||
logger.debug("Verifying %s...", uri)
|
||||
try:
|
||||
response = requests.get(uri, verify=False)
|
||||
except requests.exceptions.ConnectionError as error:
|
||||
logger.exception(error)
|
||||
return False
|
||||
|
||||
ret = response.text == achall.token
|
||||
if not ret:
|
||||
logger.error("Unable to verify %s! Expected: %r, returned: %r.",
|
||||
uri, achall.token, response.text)
|
||||
|
||||
return ret
|
||||
|
||||
def cleanup(self, achalls): # pylint: disable=missing-docstring,no-self-use
|
||||
pass # pragma: no cover
|
||||
|
||||
Reference in New Issue
Block a user