Client¶
ACME client API.
-
class
acme.client.Client(directory, key, alg=RS256, verify_ssl=True, net=None)[source]¶ Bases:
objectACME client.
Todo
Clean up raised error types hierarchy, document, and handle (wrap) instances of
DeserializationErrorraised infrom_json().Variables: - directory (messages.Directory) –
- key –
JWK(private) - alg –
JWASignature - verify_ssl (bool) – Verify SSL certificates?
- net (ClientNetwork) – Client network. Useful for testing. If not
supplied, it will be initialized using
key,algandverify_ssl.
-
register(new_reg=None)[source]¶ Register.
Parameters: new_reg (NewRegistration) – Returns: Registration Resource. Return type: RegistrationResourceRaises .UnexpectedUpdate:
-
update_registration(regr, update=None)[source]¶ Update registration.
Parameters: - regr (messages.RegistrationResource) – Registration Resource.
- update (messages.Registration) – Updated body of the
resource. If not provided, body will be taken from
regr.
Returns: Updated Registration Resource.
Return type:
-
query_registration(regr)[source]¶ Query server about registration.
Parameters: messages.RegistrationResource – Existing Registration Resource.
-
agree_to_tos(regr)[source]¶ Agree to the terms-of-service.
Agree to the terms-of-service in a Registration Resource.
Parameters: regr ( RegistrationResource) – Registration Resource.Returns: Updated Registration Resource. Return type: RegistrationResource
-
request_challenges(identifier, new_authzr_uri)[source]¶ Request challenges.
Parameters: - identifier (
messages.Identifier) – Identifier to be challenged. - new_authzr_uri (str) – new-authorization URI
Returns: Authorization Resource.
Return type: - identifier (
-
request_domain_challenges(domain, new_authz_uri)[source]¶ Request challenges for domain names.
This is simply a convenience function that wraps around
request_challenges, but works with domain names instead of generic identifiers.Parameters: Returns: Authorization Resource.
Return type:
-
answer_challenge(challb, response)[source]¶ Answer challenge.
Parameters: - challb (
ChallengeBody) – Challenge Resource body. - response (
challenges.ChallengeResponse) – Corresponding Challenge response
Returns: Challenge Resource with updated body.
Return type: Raises .UnexpectedUpdate: - challb (
-
classmethod
retry_after(response, default)[source]¶ Compute next
polltime based on responseRetry-Afterheader.Parameters: Returns: Time point when next
pollshould be performed.Return type:
-
poll(authzr)[source]¶ Poll Authorization Resource for status.
Parameters: authzr ( AuthorizationResource) – Authorization ResourceReturns: Updated Authorization Resource and HTTP response. Return type: ( AuthorizationResource,requests.Response)
-
request_issuance(csr, authzrs)[source]¶ Request issuance.
Parameters: - csr (
OpenSSL.crypto.X509Reqwrapped inComparableX509) – CSR - authzrs –
listofAuthorizationResource
Returns: Issued certificate
Return type: - csr (
-
poll_and_request_issuance(csr, authzrs, mintime=5, max_attempts=10)[source]¶ Poll and request issuance.
This function polls all provided Authorization Resource URIs until all challenges are valid, respecting
Retry-AfterHTTP headers, and then callsrequest_issuance.Parameters: - csr (ComparableX509) – CSR (
OpenSSL.crypto.X509Reqwrapped inComparableX509) - authzrs –
listofAuthorizationResource - mintime (int) – Minimum time before next attempt, used if
Retry-Afteris not present in the response. - max_attempts (int) – Maximum number of attempts before
PollErrorwith non-emptywaitingis raised.
Returns: (cert, updated_authzrs)tuplewherecertis the issued certificate (messages.CertificateResource.), and ``updated_authzrs`is atupleconsisting of updated Authorization Resources (AuthorizationResource) as present in the responses from server, and in the same order as the inputauthzrs.Return type: Raises PollError: in case of timeout or if some authorization was marked by the CA as invalid
- csr (ComparableX509) – CSR (
-
_get_cert(uri)[source]¶ Returns certificate from URI.
Parameters: uri (str) – URI of certificate Returns: tuple of the form (response, acme.jose.ComparableX509)Return type: tuple
-
check_cert(certr)[source]¶ Check for new cert.
Parameters: certr ( CertificateResource) – Certificate ResourceReturns: Updated Certificate Resource. Return type: CertificateResource
-
refresh(certr)[source]¶ Refresh certificate.
Parameters: certr ( CertificateResource) – Certificate ResourceReturns: Updated Certificate Resource. Return type: CertificateResource
-
fetch_chain(certr, max_length=10)[source]¶ Fetch chain for certificate.
Parameters: - certr (CertificateResource) – Certificate Resource
- max_length (int) – Maximum allowed length of the chain.
Note that each element in the certificate requires new
HTTP GETrequest, and the length of the chain is controlled by the ACME CA.
Raises errors.Error: if recursion exceeds
max_lengthReturns: Certificate chain for the Certificate Resource. It is a list ordered so that the first element is a signer of the certificate from Certificate Resource. Will be empty if
cert_chain_uriisNone.Return type: listofOpenSSL.crypto.X509wrapped inComparableX509
-
revoke(cert)[source]¶ Revoke certificate.
Parameters: cert (ComparableX509) – OpenSSL.crypto.X509wrapped inComparableX509Raises .ClientError: If revocation is unsuccessful.
-
class
acme.client.ClientNetwork(key, alg=RS256, verify_ssl=True, user_agent='acme-python')[source]¶ Bases:
objectClient network.
-
_wrap_in_jws(obj, nonce)[source]¶ Wrap
JSONDeSerializableobject in JWS.Todo
Implement
acmePath.Parameters: - obj (JSONDeSerializable) –
- nonce (bytes) –
Return type:
-
classmethod
_check_response(response, content_type=None)[source]¶ Check response content and its type.
Note
Checking is not strict: wrong server response
Content-TypeHTTP header is ignored if response is an expected JSON object (c.f. Boulder #56).Parameters: content_type (str) – Expected Content-Type response header. If JSON is expected and not present in server response, this function will raise an error. Otherwise, wrong Content-Type is ignored, but logged.
Raises: - .messages.Error – If server response body carries HTTP Problem (draft-ietf-appsawg-http-problem-00).
- .ClientError – In case of other networking errors.
-
_send_request(method, url, *args, **kwargs)[source]¶ Send HTTP request.
Makes sure that
verify_sslis respected. Logs request and response (with headers). For allowed parameters please seerequests.request.Parameters: Raises requests.exceptions.RequestException: in case of any problems
Returns: HTTP Response
Return type: requests.Response
-
head(*args, **kwargs)[source]¶ Send HEAD request without checking the response.
Note, that
_check_responseis not called, as it is expected that status code other than successfully 2xx will be returned, or messages2.Error will be raised by the server.
-