Skip to main content

noris network DNS Authenticator Plugin for Certbot

Project description

certbot-dns-norisnetwork

noris network DNS Authenticator plugin for Certbot

An authenticator plugin for certbot to support ACMEv2 dns-01 challenge for domains the DNS zones of which are managed by noris network AG.

This plugin automates the process of completing a dns-01 challenge by creating and subsequently removing TXT records using the noris network ServiceAPI.

Installation

Install the plugin:

  • Via pip:
    pip install certbot-dns-norisnetwork
    
  • From source:
    python3 setup.py install
    

Preparation

The usage of this plugin requires a configuration file containing noris network ServiceAPI Token obtained from our Customer Portal.

Get your API Token

In case you don't have a noris API Token, you can acquire one by following the instructions found in our OpenAPI Docs:

Create you noris API Token and store it in a safe place.

Configure your Login Details

Create a credentials.ini file and add the following content:

dns_noris_token=<norisAPIToken>

Note: You should protect these API credentials as you would a password. Users who can read this file can use these credentials to issue arbitrary API calls on your behalf. Users who can cause Certbot to run using these credentials can complete a dns-01 challenge to acquire new certificates or revoke existing certificates for associated domains, even if those domains aren't being managed by this server.

Important Notes

  1. Make sure that the file is only readable by the user.

    Certbot will emit a warning if it detects that the credentials.ini file can be accessed by other users on your system. The warning includes "Unsafe permissions on credentials configuration file", followed by the path to the credentials file. This warning will be emitted each time Certbot uses the credentials file,including for renewal, and cannot be silenced except by addressing the issue.

    To restrict access to the file:

    chmod 600 /path/to/credentials.ini
    
  2. The path to the credentials.ini file can be provided interactively or using the --dns-noris-credentials command-line argument. Certbot records the path to this file for use during renewal, but does not store the file's contents.

Ensure access to Certbot

Apart from the credentials.ini file, Certbot user should have write access to the logs, work and config directories as well.

You can use the following options to overwrite the default locations, if needed:

  • --logs-dir option to overwrite the default location (/var/log/letsencrypt/) for logs
  • --work-dir option to overwrite the default location (/var/log/letsencrypt/) for working directory
  • --config-dir option to overwrite the default location (/etc/letsencrypt/) for config directory.
    • This is where the acquired certificate will be added.

Usage

WARNING: Non-ASCII domains provided through the -d argument should be in punycode format (xn--)!

  1. Acquire a certificates for example.com:

    certbot certonly \
        -a dns-noris \
        --dns-noris-credentials /path/to/credentials.ini \
        --non-interactive \
        --agree-tos \
        -m 'my.email@mail.com' \
        -d example.com
    
  2. Acquire a certificate for both example.com and www.example.com:

    certbot certonly \
        -a dns-noris \
        --dns-noris-credentials /path/to/credentials.ini \
        --non-interactive \
        --agree-tos \
        -m 'my.email@mail.com' \
        -d example.com \
        -d www.example.com
    
  3. Acquire a certificate for example.com waiting 240 seconds for DNS propagation from the command line:

    certbot certonly \
        -a dns-noris \
        --dns-noris-credentials /path/to/credentials.ini \
        --dns-noris-propagation-seconds 240 \
        --non-interactive \
        --agree-tos \
        -m 'my.email@mail.com' \
        -d example.com
    

Command Line Options


Available command-line options originating from dns-noris Authenticator:

--dns-noris-credentials DNS_NORIS_CREDENTIALS
    Path to credentials INI file.
        Default: /etc/letsencrypt/credentials.ini

--dns-noris-propagation-seconds DNS_NORIS_PROPAGATION_SECONDS
    The number of seconds to wait for DNS to propagate before asking the ACME server to verify the DNS record.
        Default: 60

For all the available command-line options originating from Certbot you can use Certbot's documentation.

Docker

In order to create a docker container with a certbot-dns-norisnetwork installation, you can use our official Docker image:

docker pull norisnetwork/certbot-dns-norisnetwork

Note: Before running the app, make sure that the path to credentials (set by --dns-noris-credentials arg) reside in a volume-mounted directory (e.g. in /etc/letsencrypt/).

The application can be run as follows::

docker run --rm \
    -v /var/lib/letsencrypt:/var/lib/letsencrypt \
    -v /etc/letsencrypt:/etc/letsencrypt \
    norisnetwork/certbot-dns-norisnetwork certonly \
    --authenticator dns-noris \
    --dns-noris-propagation-seconds 60 \
    --dns-noris-credentials /etc/letsencrypt/credentials.ini \
    --agree-tos \
    --keep-until-expiring --non-interactive \
    --server https://acme-v02.api.letsencrypt.org/directory \
    -m 'user@mail.com' \
    -d example.com -d '*.subdomain.example.com'

Developer Guide

Tools

Use pip to install all the required dev tools:

pip install -e .[dev]

Code Formatter

Use Black Python code formatter:

black certbot_dns_norisnetwork/
black tests/
black setup.py

Code Analyzer

Use pylint for static code analyzing:

pylint certbot_dns_norisnetwork/
pylint tests/

Type Annotations Checker

Use mypy for type checking:

mypy certbot_dns_norisnetwork/
mypy tests/

New Release

We adhere to the Semantic Versioning. New packages are published only if a git tag is provided.

  • Make sure the current commit passes the CI.
  • Determine the correct new version number adhering to the semantic versioning.
  • Push an annotated tag with the correct version:
git tag -a -m "Release v0.4.1" v0.4.1
git push origin v0.4.1

This will adjust the version appropriately and create a tagged commit that will act as a trigger for the build and publish GitLab pipelines.

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

certbot_dns_norisnetwork-0.5.1.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

certbot_dns_norisnetwork-0.5.1-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file certbot_dns_norisnetwork-0.5.1.tar.gz.

File metadata

  • Download URL: certbot_dns_norisnetwork-0.5.1.tar.gz
  • Upload date:
  • Size: 15.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for certbot_dns_norisnetwork-0.5.1.tar.gz
Algorithm Hash digest
SHA256 cf8f359a474d8d41ead2841d10d25665a5fdcd42ad244c9132700d6040dcaa37
MD5 8d744c415028d3ddfad35d6c5ac304fa
BLAKE2b-256 9b77044c51caee2aaa8285a8b0bf6a3540d26908166dacad76f7acf88b3fe4d8

See more details on using hashes here.

File details

Details for the file certbot_dns_norisnetwork-0.5.1-py3-none-any.whl.

File metadata

File hashes

Hashes for certbot_dns_norisnetwork-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cd090ebe1bc84cf67f067eb885572ce0e5922b1383b88e1727763f81b9656406
MD5 eeaeb228a669e5cbec3b66854775d07a
BLAKE2b-256 df901283afd65fc63b8e52db5e169a103c48c21bd4ea8a587df4e493737dcaab

See more details on using hashes here.

Supported by

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