#acme #dns #async #acme-dns #lets-encrypt

bin+lib acme-dns-rust

Acme DNS implementation written in Rust

8 stable releases

1.1.1 Oct 13, 2021
1.1.0 Feb 10, 2021
1.0.6 Oct 13, 2020
1.0.5 Oct 12, 2020

#540 in Command line utilities

Download history 14/week @ 2021-09-27 8/week @ 2021-10-04 14/week @ 2021-10-11 10/week @ 2021-10-18 3/week @ 2021-10-25 9/week @ 2021-11-08 4/week @ 2021-11-15 4/week @ 2021-11-22 26/week @ 2021-11-29 16/week @ 2021-12-06 20/week @ 2021-12-13 16/week @ 2021-12-20 13/week @ 2021-12-27 8/week @ 2022-01-03 18/week @ 2022-01-10

59 downloads per month

Custom license

130KB
2.5K SLoC

Build codecov crates.io

Acme DNS Rust

WIP!

This is an implementation based on the awesome Go Project Acme DNS written by @joohoi. It aims to be API compatible with the original implementation.

Configuration

By default a configuration file is expected in the working directory with the name config.toml .

Example config:

[general]
dns = "0.0.0.0:8053"
db = "postgresql://postgres:mysecretpassword@localhost/postgres"
acme = "https://acme-staging-v02.api.letsencrypt.org/directory"
name = "acme.example.com"

[records."acme.example.com"]
A = [100, "1.1.1.1", "2.2.2.2"]
TXT = [100, "First", "Record"]

[records."acme2.example.com"]
TXT = [100, "Hallo", "World"]
CNAME = [100, "lb.cloudflare.com"]

[api]
http = "0.0.0.0:8080"
# Adding a true after the addr activates proxy protocol for a listener
https = ["0.0.0.0:8081", true]
#Every listener is optional this line could be removed completely
prom = "0.0.0.0:8081"

It is possible to pass a diferent path as the first argument to the executable.

./acme-dns-rust different_name.toml

Records configuration

Acme DNS supports serving static DNS Records.

Currently supported records are:

  • TXT
  • A
  • CNAME

CName records get resolved by the default OS DNS configuration. For obvious reasons CNAME records don't support multiple values, unlike TXT and A records.

Dependencies

~35MB
~752K SLoC