Skip to main content

Build Status

Crypto Domain Manager

Automate all your cryptographic needs!

Goals

  • Zero downtime
  • Automatic certificate renewal
  • Spam protection
  • Updated DNS records

Configure once and always stay up to date.

Use cases

  • Renew letsencrypt certicates
  • Derive all kinds of data from the signature
  • Ensure everything is secure

External Service APIs

Linux Services

  • DKIM signatures:
    • rspamd
  • Reload systemd services:
    • apache2
    • postfix
    • dovecot
    • rspamd
    • traefik in Docker

Managed DNS Records

No downtime strategy

Updating keys, certifcates and other needs 3 steps to prevent gaps in availabillity:

  1. Prepare: Create certificates, keys etc. and publish corresponding records to DNS.
  2. Rollover: Apply new certificates and keys, because now negative cache TTL on DNS is reached.
  3. Cleanup: Delete all no more needed stuff from disk and DNS.

Needed Plugins and Dependencies

  • dnsuptools: to interface with DNS API -- updating DNS entries
  • dehydrated: to get new certificate (included with cryptdomainmgr)
  • rspamd: to create (and use) DKIM keys

Installation

These libraries are needed for pycurl used by dnsuptools for automatic ip retrieving:

apt install -y libcurl4-openssl-dev libssl-dev

This comman is used by dehydrated to communicate with letsencrypt for certificate renewal:

apt install -y curl

For DKIM we need rspamd:

apt install -y lsb-release wget # optional
CODENAME=`lsb_release -c -s`
wget -O- https://rspamd.com/apt-stable/gpg.key | apt-key add -
echo "deb [arch=amd64] http://rspamd.com/apt-stable/ $CODENAME main" > /etc/apt/sources.list.d/rspamd.list
echo "deb-src [arch=amd64] http://rspamd.com/apt-stable/ $CODENAME main" >> /etc/apt/sources.list.d/rspamd.list
apt update
apt install -y rspamd

Now install the cryptdomainmgr. This pulls all need dependencies.

python2 -m pip install cryptdomainmgr

Feel free to try python3, but inwx client doesn't support it.

python3 -m pip install cryptdomainmgr

Documentation

We need help here!

For now please look at:

hints:

  • Multiple Configfiles with priority allowed
  • Specify content of config file content as argument

Next goals

  • improve documentation
  • docker support - partly done, ToDo: label handling needed, daemon mode without external shell stript needed
  • website
  • automated tests - partly done
  • nsupdate for DNS updates

Long term goals:

  • ARC key renewal
  • WPIA integration
  • DNSSEC key renewal
  • TXT record (may collide with SPF and other TXT based records)
  • multi server support for one domain: TLSA delete by timeout
  • constrain minimum renewal/phase time interval
  • validations - ensure signatures are used correctly
  • run as service
  • PowerDNS support

Contributions

If you like the project feel free to give me a star. Please let us know if you use this project.

All kind of contributions are welcome.

Download files

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

Source Distribution

cryptdomainmgr-0.2.6.post15.tar.gz (73.2 kB view details)

Uploaded Source

Built Distribution

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

cryptdomainmgr-0.2.6.post15-py3-none-any.whl (77.2 kB view details)

Uploaded Python 3

File details

Details for the file cryptdomainmgr-0.2.6.post15.tar.gz.

File metadata

  • Download URL: cryptdomainmgr-0.2.6.post15.tar.gz
  • Upload date:
  • Size: 73.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for cryptdomainmgr-0.2.6.post15.tar.gz
Algorithm Hash digest
SHA256 a21cb94db133dcc5ef1e7cdd4e3db697c50c2c3d25373d44813c98991bdd8e61
MD5 350c71a97ba456e191f07a9e675136d5
BLAKE2b-256 953303dc5a0c82bab623a996ee4fe7fa71eee79a642dd68ca835959bb4eaf32b

See more details on using hashes here.

File details

Details for the file cryptdomainmgr-0.2.6.post15-py3-none-any.whl.

File metadata

File hashes

Hashes for cryptdomainmgr-0.2.6.post15-py3-none-any.whl
Algorithm Hash digest
SHA256 fb1603aac843f8772c65fd40e2df9f94c58281ef5028591b58af10649c51d80f
MD5 a1ab77acf8dad0a85c909932ab5e16a1
BLAKE2b-256 713b7e2a954349ecb02a016c2ccd76a60697bc0353674c38ab1f51438c1fc288

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.8

2 files

0.2.7

1 file

This release

0.2.6.post15 This release

2 files

0.2.6.post14

1 file

0.2.6.post13

1 file

0.2.6.post3

1 file

0.2.6

1 file

0.2.5.post22

1 file

0.2.5.post21

1 file

0.2.5.post20

1 file

0.2.5.post19

1 file

0.2.5.post18

1 file

0.2.5.post17

1 file

0.2.5.post16

1 file

0.2.5.post15

1 file

0.2.5.post14

1 file

0.2.5.post13

1 file

0.2.5.post12

1 file

0.2.5.post11

1 file

0.2.5.post10

1 file

0.2.5.post9

1 file

0.2.5.post8

1 file

0.2.5.post7

1 file

0.2.5.post5

1 file

0.2.5.post4

1 file

0.2.5.post3

1 file

0.2.5

1 file

0.2.4.post17

1 file

0.2.4.post16

1 file

0.2.4.post15

1 file

0.2.4.post12

1 file

0.2.4.post9

1 file

0.2.4.post8

1 file

0.2.4.post3

2 files

0.2.3.post61

1 file

0.2.3.post59

1 file

0.2.3.post56

1 file

0.2.3.post53

1 file

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.1.4

1 file

0.1.3

1 file

0.1.2

1 file

0.1.1

1 file

0.0.30

2 files

0.0.29

1 file

0.0.28

2 files

0.0.26

2 files

0.0.25

2 files

0.0.24

2 files

0.0.23

2 files

0.0.22

2 files

0.0.21

2 files

0.0.20

2 files

0.0.19

2 files

0.0.18

2 files

0.0.17

2 files

0.0.16

2 files

0.0.15

2 files

0.0.14

2 files

0.0.13

2 files

0.0.12

2 files

0.0.11

2 files

0.0.10

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page