You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Robin Thoni 00b2d174a0 updated readme 6 years ago
.idea pycharm files 7 years ago
certbot_pdns Update pdnsapi.py 6 years ago
.gitignore init 7 years ago
README.md updated readme 6 years ago
certbot-pdns.json modified to enable use of http-basic authentication in case of an (nginx) reverse proxy 6 years ago
setup.cfg improved setup 7 years ago
setup.py updated version 6 years ago

README.md

certbot-pdns

Authenticator plugin for certbot (https://certbot.eff.org/).

Perform a DNS-01 challenge using TXT record in a PowerDNS (https://doc.powerdns.com/md/)

The advantages are:

  • No need to configure your web server to serve challenges
  • Web server not even needed
  • Can generate certificate for internal hosts that are not exposed to the Internet
  • A or CNAME record not even needed. Only the TXT record added by certbot-pdns matters.

Installation

Install or upgrade certbot:

pip2 install -U certbot

Install certbot-pdns:

#Install from pip
pip2 install certbot-pdns
#Install from sources
python2 setup.py install

Check that certbot-pdns:auth is listed when executing certbot --text plugins

Configuration

An example file is provided in /usr/local/etc/letsencrypt/certbot-pdns.json:

{
  "api-key": "change_it",
  "base-url": "http://127.0.0.1:34022/api/v1",
  "axfr-time": 5,
  "http-auth": ["user", "secret_pass"],
  "verify-cert": "False"
}

Configuration file must be placed in /etc/letsencrypt/certbot-pdns.json or be specified with argument certbot-pdns-config.

Configuration keys:

  • api-key: Your PowerDNS API Key as specified in property api-key in file /etc/powerdns/pdns.conf
  • base-url: The base URL for PowerDNS API. Require api=yes and api-readonly=no in file /etc/powerdns/pdns.conf
  • axfr-time: The time in seconds to wait for AXFR in slaves. Can be set to 0 if there is only one authoritative server for the zone.

The following two keys are optional and added in case a (nginx) reverse proxy is used to secure access to the api:

  • http-auth (optional): A list of two strings containing the Username and Password for a http-basic-authentication
  • verify-cert (optional): defines whether the SSL-certificate provided by the reverse proxy shall be verified. Possible options are True/False or a string containing the path to a local certificate which can be used to verify the one provided by the proxy.

Usage

Use certbot as usual but specify --authenticator certbot-pdns:auth:

certbot --agree-tos --text --renew-by-default --authenticator certbot-pdns:auth certonly -d example.com -d www.example.com

Development

#Activate venv
. venv/bin/activate
python2 build
pip2 uninstall certbot-pdns
python2 install
certbot --config-dir /tmp --work-dir /tmp --agree-tos --text --renew-by-default --authenticator certbot-pdns:auth certonly --certbot-pdns:auth-certbot-pdns-config certbot-pdns-rt.json -d test.rthoni.com

Release

./setup.py build
./setup.py sdist upload