Skip to main content

Client library for Anchor PKI. See https://anchor.dev/ for details'

Project description

Anchor

Python client for Anchor PKI. See https://anchor.dev/ for details

Configuration

The Following environment variables are available to configure the default AutoCert::Manager.

  • HTTPS_PORT - the TCP numerical port to bind SSL to.
  • ACME_ALLOW_IDENTIFIERS - A comma separated list of hostnames for provisioning certs
  • ACME_DIRECTORY_URL - the ACME provider's directory
  • ACME_KID - your External Account Binding (EAB) KID for authenticating with the ACME directory above with an
  • ACME_HMAC_KEY - your EAB HMAC_KEY for authenticating with the ACME directory above
  • ACME_RENEW_BEFORE_SECONDS - optional Start a renewal this number number of seconds before the cert expires. This defaults to 30 days (2592000 seconds)
  • ACME_RENEW_BEFORE_FRACTION - optional Start the renewal when this fraction of a certificate's valid window is left. This defaults to 0.5, which means when the cert is in the last 50% of its lifespan a renewal is attempted.
  • AUTO_CERT_CHECK_EVERY - optional the number of seconds to wait between checking if the certificate has expired. This defaults to 1 hour (3600 seconds)

If both ACME_RENEW_BEFORE_SECONDS and ACME_RENEW_BEFORE_FRACTION are set, the one that causes the renewal to take place earlier is used.

Example:

  • Cert start (not_before) moment is : 2023-05-24 20:53:11 UTC
  • Cert expiration (not_after) moment is : 2023-06-21 20:53:10 UTC
  • ACME_RENEW_BEFORE_SECONDS is 1209600 (14 days)
  • ACME_RENEW_BEFORE_FRACTION is 0.25 - which equates to a before seconds value of 604799 (~7 days)

The possible moments to start renewing are:

  • 14 days before expiration moment - 2023-06-07 20:53:10 UTC
  • when 25% of the valid time is left - 2023-06-14 20:53:11 UTC

Currently the AutoCert::Manager will use whichever is earlier.

Example configuration

HTTPS_PORT=44300
ACME_ALLOW_IDENTIFIERS=my.lcl.host,*.my.lcl.host
ACME_DIRECTORY_URL=https://acme-v02.api.letsencrypt.org/directory
ACME_KID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ACME_HMAC_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Notes

The HTTP User Agent for the anchor-autocert client is

anchor-pki autocert python client v{VERSION}

Development

Development and distribution is facilitated with poetry.

  • lint the project - 2 steps:
    • poetry run black ./
    • poetry run pylint ./src/anchor_pki
  • run tests poetry run pytest tests/
  • run tests with coverage poetry run pytest --cov-report=term-missing --cov=./src/anchor_pki/ tests/
  • build poetry build

Development assumes a .env file at the root of the python module. Currently the only required items in it are:

ACME_KID=...
ACME_HMAC_KEY=...
VCR_RECORD_MODE=none # set to have new tests record new cassets

To re-record all cassettes Make sure the ACME_KID and ACME_HMAC_KEY values in the tests/anchor_pki/autocert/test_manager.py is kept in sync with the values in the .env file when re-recording the cassettes as the values will need to be available during CI to match the cassette data.

Update the .env file with:

VCR_RECORD_MODE=all

Then update the value for vcr_recorded_at in tests/anchor_pki/autocert/test_manager.py to be sometime after the cassettes were recorded but before the certificates expire.

License

The python packages is available as open source under the terms of the MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

anchor_pki-0.3.0.tar.gz (14.6 kB view details)

Uploaded Source

Built Distribution

anchor_pki-0.3.0-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

Details for the file anchor_pki-0.3.0.tar.gz.

File metadata

  • Download URL: anchor_pki-0.3.0.tar.gz
  • Upload date:
  • Size: 14.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.6 Darwin/23.2.0

File hashes

Hashes for anchor_pki-0.3.0.tar.gz
Algorithm Hash digest
SHA256 3374df8691f1795826e90e6b158f6d3dd6b04e8085ae2d8ee732072082b5b483
MD5 768425d8660ec953fc1fbdf536d189ed
BLAKE2b-256 c2626054c09ceaf6059e429848784ffac43a630595a204ac6ab773ab19869522

See more details on using hashes here.

File details

Details for the file anchor_pki-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: anchor_pki-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 16.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.6 Darwin/23.2.0

File hashes

Hashes for anchor_pki-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4eb58452a9c3d3d2494dbcf064b785430873ca8d8f5d68c2dc0f2d76cd6cb0ca
MD5 4a4fee9a680706506de356ed0ea65680
BLAKE2b-256 a804b6d5716f9094f1d07aab6561cce787fea67caedfbc1a6ea4a29ba4446b88

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page