A client software for acme-dns with emphasis on usability and guidance through setup and additional security safeguard mechanisms

Overview

acme-dns-client

A client software for acme-dns with emphasis on usability and guidance through setup and additional security safeguard mechanisms. It is designed for usage with existing ACME clients with minimal configuration.

Installation

Features

  • acme-dns account pre-registration
  • Guided CNAME record creation
  • Guided CAA record creation
  • Modular ACME client support for CAA record creation guidance (for ACME-CAA accounturi)
  • Configuration checks to ensure operation (CNAME record, account exisence)
  • Interactive setup

Example usage with Certbot

1. Create a new ACME account

# sudo certbot register

This creates a new ACME account that is used internally by Certbot. In case you are not planning to set up CAA record, this step can be omitted.

2. Create a new acme-dns account for your domain and set it up

# sudo acme-dns-client register -d your.domain.example.org -s https://auth.acme-dns.io

This attempts to create a new account to acme-dns instance running at auth.acme-dns.io. After account creation, the user is guided through proper CNAME record creation for the main DNS zone for domain your.domain.example.org.

Optionally the same will be done for CAA record creation. acme-dns-client will attempt to read the account URL from active Certbot configuration (created in step 1)

acme-dns-client will monitor the DNS record changes to ensure they are set up correctly.

3. Run Certbot to obtain a new certificate

# sudo certbot certonly --manual --preferred-challenges dns \
    --manual-auth-hook 'acme-dns-client' -d your.domain.example.org 

This runs Certbot and instructs it to obtain a new certificate for domain your.domain.example.org by using a DNS challenge and acme-dns-client as the authenticator. After successfully obtaining the new certificate this configuration will be saved in Certbot configuration and will be automatically reused when it renews the certificate.

Usage

acme-dns-client - v0.1

Usage:  acme-dns-client COMMAND [OPTIONS]

Commands:
  register              Register a new acme-dns account for a domain
  check                 Check the configuration and settings of existing acme-dns accounts
  list                  List all the existing acme-dns accounts and perform simple CNAME checks for them

Options:
  --help                Print this help text

To get help for specific command, use:
  acme-dns-client COMMAND --help

EXAMPLE USAGE:
  Register a new acme-dns account for domain example.org:
    acme-dns-client register -d example.org
  
  Register a new acme-dns account for domain example.org, allow updates only from 198.51.100.0/24:
    acme-dns-client register -d example.org -allow 198.51.100.0/24

  Check the configuration of example.org and the corresponding acme-dns account:
    acme-dns-client check -d example.org

  Check the configuration of all the domains and acme-dns accounts registered on this machine:
    acme-dns-client check

  Print help for a "register" command:
    acme-dns-client register --help

Comments
  • Can't create a CNAME as the program requests, seems malformed.

    Can't create a CNAME as the program requests, seems malformed.

    Assuming "tld" is my domain, like "foo.com", I'm trying to get a wildcard certificate for "*.tld".

    sudo acme-dns-client register -d '*.tld' -s https://auth.tld
    
    [W] Acme-dns account already registered for domain *.tld
    Do you want acme-dns-client to monitor the CNAME record change? [Y/n]:  
    
    To finalize the setup, you need to create a CNAME record pointing from _acme-challenge.*.tld 
    to the newly created acme-dns domain xxx3ce0f-xxxx-xxxx-xxxx-7xxd9xxxxbbd.auth.tld
    
    A correctly set up CNAME record should look like the following:
    
    _acme-challenge.*.tld.     IN      CNAME   xxx3ce0f-xxxx-xxxx-xxxx-7xxd9xxxxbbd.auth.tld.
    
    Waiting for CNAME record to be set up for domain *.tld
    Querying the authoritative nameserver every 15 seconds.
    
    Waiting for 10 seconds... Press Ctrl + C to abort and exit.^C
    

    Is it possible to create a CNAME like "_acme-challenge.*.tld"? I can't input this ("_acme-challenge.*") as CNAME in my registrar.

    opened by oblitum 19
  • Configuration/Setup is accepted/verified as valid but challenge fails

    Configuration/Setup is accepted/verified as valid but challenge fails

    Hi,

    first of all, nice work. Unfortunately, I am failing to acquire the wildcard certificate.

    I am using v0.2 client release and certbot 0.40.0 and https://hub.docker.com/layers/joohoi/acme-dns/latest/images/sha256-dd671a4fc86863f9dc9bace1dee7c986034aa3946e36f079fbd9ed58a4f3c639?context=explore (from january 2021).

    As one can see the acme-dns-client reports everything is set up correctly. The hook updates the txt records in the acme-dns (I checked the log from acme dns server, and verified with dig -> see below).

    I am a bit lost now and would appreciate any help. Is there A) an error in the setup verification of the client and the setup is actually incorrect, or B) did just call the client/cerbot in an incorrect way?

    (As a sidenote: I also realized that the setup check does not take into account whether the update of txt records actually works - so if the credentials to the acme dns server work and the allowFrom config works)

    cerbot call

    certbot certonly --manual --preferred-challenges dns --manual-auth-hook '/root/configs/dns/acme-dns-client' -d *.tools.dbpedia.org                                         
    Saving debug log to /var/log/letsencrypt/letsencrypt.log                                                                                                                                                    
    Plugins selected: Authenticator manual, Installer None                                                                                                                                                      
    Obtaining a new certificate                                                                                                                                                                                 
    Performing the following challenges:                                                                                                                                                                        
    dns-01 challenge for tools.dbpedia.org                                                                                                                                                                      
                                                                                                                                                                                                                
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -                                                                                                                             
    NOTE: The IP of this machine will be publicly logged as having requested this                                                                                                                               
    certificate. If you're running certbot in manual mode on a machine that is not                                                                                                                              
    your server, please ensure you're okay with that.                                                                                                                                                           
                                                                                                                                                                                                                
    Are you OK with your IP being logged?                                                                                                                                                                       
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -                                                                                                                             
    (Y)es/(N)o: Y                                                                                                                                                                                               
    Running manual-auth-hook command: /root/configs/dns/acme-dns-client                                                                                                                                         
    Waiting for verification...                                                                                                                                                                                 
    Challenge failed for domain tools.dbpedia.org                                                                                                                                                               
    dns-01 challenge for tools.dbpedia.org                                                                                                                                                                      
    Cleaning up challenges                                                                                                                                                                                      
    Some challenges have failed.                                                                                                                                                                                
                                                                                                                                                                                                                
    IMPORTANT NOTES:                                                                                                                                                                                            
     - The following errors were reported by the server:                                                                                                                                                        
                                                                                                                                                                                                                
       Domain: tools.dbpedia.org                                                                                                                                                                                
       Type:   unauthorized                                                                                                                                                                                     
       Detail: No TXT record found at _acme-challenge.tools.dbpedia.org                                                                                                                                         
                                                                                                                                                                                                                
       To fix these errors, please make sure that your domain name was                                                                                                                                          
       entered correctly and the DNS A/AAAA record(s) for that domain                                                                                                                                           
       contain(s) the right IP address.                         
    

    acme client check

    [email protected] ~/configs/dns # ./acme-dns-client list
    Number of acme-dns accounts found on this system: 1 
    Performing CNAME checks...
    
    Working:
    [*] tools.dbpedia.org
    
    [email protected] ~/configs/dns # ./acme-dns-client check
    Checking acme-dns configuration for domain tools.dbpedia.org
     [*] Registered acme-dns account found!
     [*] CNAME record found and set up correctly!
     [W] No CAA record found
     [W] No CAA AccountURI found
    

    dns check

    [email protected]:~$ dig _acme-challenge.tools.dbpedia.org txt
    
    ; <<>> DiG 9.10.3-P4-Ubuntu <<>> _acme-challenge.tools.dbpedia.org txt
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31243
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;_acme-challenge.tools.dbpedia.org. IN	TXT
    
    ;; ANSWER SECTION:
    _acme-challenge.tools.dbpedia.org. 2801	IN CNAME ec471a93-bf4a-4604-aeef-1bce270b5f0e.tools.dbpedia.org.
    
    ;; AUTHORITY SECTION:
    dbpedia.org.		108	IN	SOA	ns.namespace4you.de. hostmaster.dbpedia.org. 1612978941 16384 2048 1048576 2560
    
    ;; Query time: 2 msec
    ;; SERVER: 127.0.1.1#53(127.0.1.1)
    ;; WHEN: Wed Feb 17 15:38:58 CET 2021
    ;; MSG SIZE  rcvd: 179
    
    
    
    
    [email protected]:~$ dig ec471a93-bf4a-4604-aeef-1bce270b5f0e.tools.dbpedia.org txt  @ec471a93-bf4a-4604-aeef-1bce270b5f0e.tools.dbpedia.org
    
    ; <<>> DiG 9.10.3-P4-Ubuntu <<>> ec471a93-bf4a-4604-aeef-1bce270b5f0e.tools.dbpedia.org txt @ec471a93-bf4a-4604-aeef-1bce270b5f0e.tools.dbpedia.org
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28240
    ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
    ;; WARNING: recursion requested but not available
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;ec471a93-bf4a-4604-aeef-1bce270b5f0e.tools.dbpedia.org.	IN TXT
    
    ;; ANSWER SECTION:
    ec471a93-bf4a-4604-aeef-1bce270b5f0e.tools.dbpedia.org.	1 IN TXT "psvkYpoKxiPXcDyRhABLfOA3l1ehIn0VK0vTpJZE7-E"
    ec471a93-bf4a-4604-aeef-1bce270b5f0e.tools.dbpedia.org.	1 IN TXT "Ih70MG_RcgDYPPcOCczDj7X5tlrZOqK04yz4A-12VbI"
    
    ;; Query time: 44 msec
    ;; SERVER: 95.217.207.179#53(95.217.207.179)
    ;; WHEN: Wed Feb 17 15:39:45 CET 2021
    ;; MSG SIZE  rcvd: 303
    
    
    question 
    opened by JJ-Author 3
  • Can't renew certs

    Can't renew certs

    I've set it up 2 months ago and I got certs no problem (acme-dns and acme-dns-client). I haven't touched it since and now I get a timeout. The only thing that could change are some security updates to Debian 10 and maybe Certbot (I started with 1.23 and now it's 1.26). Acme-dns creates records on demand but somehow LE can't get to them. Ports 80/53 are open to the acme-dns server.

    acme-dns-client register -d wyniki.spzozmm.pl -s http://localhost:8080
    [W] Acme-dns account already registered for domain wyniki.spzozmm.pl
    [*] CNAME record seems to already be set up correctly, you are good to go
    
    A CAA record allows you to control additional certificate issuance safeguards. The currently supported
    version allows the domain owner to control which certificate authorities are all owed to issue certificates for the domain in question.
    The certificate authorities MUST check and respect the CAA records in the validation process.
    
    There's also a standard (RFC 8657) that extends the CAA record to limit the issuance of certificates to a specific validation
    method and/or to a specific ACME account. While they can be tested using staging environment of Let's Encrypt for example,
    they're not enabled in the production yet. It is still be worthwhile to configure them so you'll be protected when the feature gets enabled.
    Do you wish to set up a CAA record now? [y/N]: n
    [email protected]:~# certbot certonly --manual --preferred-challenges dns --manual-auth- hook 'acme-dns-client' -d wyniki.spzozmm.pl
    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    Renewing an existing certificate for wyniki.spzozmm.pl
    
    Certbot failed to authenticate some domains (authenticator: manual). The Certifi cate Authority reported these problems:
     Domain: wyniki.spzozmm.pl
     Type: dns
     Detail: DNS problem: query timed out looking up TXT for _acme-challenge.pacs.s pzozmm.pl
    
    Hint: The Certificate Authority failed to verify the DNS TXT records created by the --manual-auth-hook. Ensure that this hook is functioning correctly and that it waits a sufficient duration of time for DNS propagation. Refer to "certbot -- help manual" and the Certbot User Guide.
    
    Some challenges have failed.
    Ask for help or search for solutions at https://community.letsencrypt.org. See t he logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for mo re details.
    

    letsencrypt log

    2022-04-27 13:26:48,005:DEBUG:certbot._internal.error_handler:Encountered exception:
    Traceback (most recent call last):
      File "/snap/certbot/1952/lib/python3.8/site-packages/certbot/_internal/auth_handler.py", line 106, in handle_authorizations
        self._poll_authorizations(authzrs, max_retries, best_effort)
      File "/snap/certbot/1952/lib/python3.8/site-packages/certbot/_internal/auth_handler.py", line 206, in _poll_authorizations
        raise errors.AuthorizationError('Some challenges have failed.')
    certbot.errors.AuthorizationError: Some challenges have failed.
    
    2022-04-27 13:26:48,005:DEBUG:certbot._internal.error_handler:Calling registered functions
    2022-04-27 13:26:48,005:INFO:certbot._internal.auth_handler:Cleaning up challenges
    2022-04-27 13:26:48,006:DEBUG:certbot._internal.log:Exiting abnormally:
    Traceback (most recent call last):
      File "/snap/certbot/1952/bin/certbot", line 8, in <module>
        sys.exit(main())
      File "/snap/certbot/1952/lib/python3.8/site-packages/certbot/main.py", line 19, in main
        return internal_main.main(cli_args)
      File "/snap/certbot/1952/lib/python3.8/site-packages/certbot/_internal/main.py", line 1723, in main
        return config.func(config, plugins)
      File "/snap/certbot/1952/lib/python3.8/site-packages/certbot/_internal/main.py", line 1582, in certonly
        lineage = _get_and_save_cert(le_client, config, domains, certname, lineage)
      File "/snap/certbot/1952/lib/python3.8/site-packages/certbot/_internal/main.py", line 129, in _get_and_save_cert
        renewal.renew_cert(config, domains, le_client, lineage)
      File "/snap/certbot/1952/lib/python3.8/site-packages/certbot/_internal/renewal.py", line 344, in renew_cert
        new_cert, new_chain, new_key, _ = le_client.obtain_certificate(domains, new_key)
      File "/snap/certbot/1952/lib/python3.8/site-packages/certbot/_internal/client.py", line 441, in obtain_certificate
        orderr = self._get_order_and_authorizations(csr.data, self.config.allow_subset_of_names)
      File "/snap/certbot/1952/lib/python3.8/site-packages/certbot/_internal/client.py", line 493, in _get_order_and_authorizations
        authzr = self.auth_handler.handle_authorizations(orderr, self.config, best_effort)
      File "/snap/certbot/1952/lib/python3.8/site-packages/certbot/_internal/auth_handler.py", line 106, in handle_authorizations
        self._poll_authorizations(authzrs, max_retries, best_effort)
      File "/snap/certbot/1952/lib/python3.8/site-packages/certbot/_internal/auth_handler.py", line 206, in _poll_authorizations
        raise errors.AuthorizationError('Some challenges have failed.')
    certbot.errors.AuthorizationError: Some challenges have failed.
    2022-04-27 13:26:48,007:ERROR:certbot._internal.log:Some challenges have failed.
    
    
    opened by Serpher1 2
  • certbot renew --dry-run fails

    certbot renew --dry-run fails

    After performing the steps on the readme, and running

    acme-dns-client check -d DOMAIN

    I get the following output

    Checking acme-dns configuration for domain DOMAIN
     [*] Registered acme-dns account found!
     [*] CNAME record found and set up correctly!
     [*] CAA record found!
     [*] CAA AccountURI found!
    

    I attempted to do a dry run of the renewal using

    certbot renew --dry-run

    But always receive the message

    1 renew failure(s), 0 parse failure(s)
    
    IMPORTANT NOTES:
     - The following errors were reported by the server:
    
       Domain: DOMAIN
       Type:   None
       Detail: CAA record for DOMAIN prevents issuance
    

    My CAA record is as follows:

    DOMAIN  CAA  0 issue "letsencrypt.org; validationmethods=dns-01; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/ACCT_NUM"
    

    Am I missing a step in the renewal process?

    question 
    opened by jcoker85 2
  • Exit successfully if certbot renew validation is successful

    Exit successfully if certbot renew validation is successful

    When certbot renew is run, acme-dns-client is called with 0 arguments. When validation for this passes, it doesn't exit with code 0. Instead it continues on, causing "index out of range [1]". This fix exits with 0 so that it doesn't throw later.

    opened by JonathanGawrych 0
  • Fix register omitting -allow causing 400 invalid_allowfrom_cidr

    Fix register omitting -allow causing 400 invalid_allowfrom_cidr

    If you attempt to register to joohoi/acme-dns server without specifying an allow flag, the request sent to the server is an array containing the empty string [""], which responds with 400 invalid_allowfrom_cidr. Instead, this fix makes omitting allow send an empty array [] which allows registration to work correctly.

    opened by JonathanGawrych 0
  • Docs for first time

    Docs for first time

    1. The first time acme-dns-client is run, it must be run as root, or the following error will appear unless the user knew to create /etc/acmedns:

      $ acme-dns-client --help
      Error while starting up: mkdir /etc/acmedns: permission denied
      

      It would be good to generate the help message before the program attempts to access /etc/acmedns. Even better, tell the user that the directory does not exist, which means that acme-dns needs to be configured before using acme-dns-client.

    2. Here is a possible addition to the docs: If acme-dns-client is run under sudo, another issue presents. Because sudo filters out environment variables such as GOPATH by default, and changes the default GOPATH to /root/go/bin/, the first time acme-dns-client is run, it must be invoked via its fully qualified path, like this:

      $ sudo /home/user_name/go/bin/acme-dns-client --help
      
    opened by mslinn 0
  • Does this work with latest certbot

    Does this work with latest certbot

    Hi there,

    After setting up acme-dns and acme-dns-client, I still got this error when using it to renew certificate:

    sudo certbot certonly --manual --preferred-challenges dns --manual-auth-hook 'acme-dns-client' -d my-domain.com -d \*.my-domain.com
    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    Renewing an existing certificate for my-domain.com and *.my-domain.com
    
    Certbot failed to authenticate some domains (authenticator: manual). The Certificate Authority reported these problems:
      Domain: my-domain.com
      Type:   dns
      Detail: DNS problem: NXDOMAIN looking up TXT for _acme-challenge.my-domain.com - check that a DNS record exists for this domain
    
      Domain: my-domain.com
      Type:   dns
      Detail: DNS problem: NXDOMAIN looking up TXT for _acme-challenge.my-domain.com - check that a DNS record exists for this domain
    

    After reading some upstream issues from certbot, it seems that this issue is still open: https://github.com/certbot/certbot/issues/6566. Does this mean current release of certbot client doesn't support CNAME ? If that's the case, any workaround ? I was trying to build a certbot client with that branch but apparently that branch was a bit too old to merge into latest master.

    Thanks

    opened by patrickshan 0
  • acme-dns and acme-dns-client /etc path inconsistency

    acme-dns and acme-dns-client /etc path inconsistency

    The acme-dns uses /etc/acme-dns/ to keep its config.cfg.

    The acme-dns-client uses /etc/acmedns for its clientstorage.json.

    This approach is confusing and inconsistent. The proposed change is to move config dir to /etc/acme-dns-client

    opened by shalak 0
  • Removing or editing acme-dns account

    Removing or editing acme-dns account

    I executed acme-dns-client register and created proper CNAME record for domain.example.org - now I'd like to remove every trace of it from acme-dns-client as well as acme-dns.

    How this can be done? The acme-dns-client only accepts register, check and list as a command.

    Similar issue is with the case when I'd like to amend the value of -allow parameter for already registered user. Can this be done?

    opened by shalak 0
  • Recommendation vs joohoi/acme-dns-certbot-joohoi

    Recommendation vs joohoi/acme-dns-certbot-joohoi

    Question: Do you now recommend this software versus joohoi/acme-dns-certbot-joohoi? They appear to be direct alternatives, or is that incorrect?

    Thanks!

    opened by crisperdue 6
Releases(v0.3)
Owner
null
Totsugen - Generate emphasis message with golang

totsugen Requirements Go 1.17+ Run $ go run main.go -value {value} # ex: go run

Kazuki Kamizuru 0 May 21, 2022
The Dual-Stack Dynamic DNS client, the world's first dynamic DNS client built for IPv6.

dsddns DsDDNS is the Dual-Stack Dynamic DNS client. A dynamic DNS client keeps your DNS records in sync with the IP addresses associated with your hom

Ryan Young 15 Sep 27, 2022
null 11 Jun 23, 2022
🐙🐱📦 Additional GitHub API methods

octostats ?? ?? ?? A supplementary Go package on top of go-github and githubv4 GitHub API Superstructure Installation ?? go get github.com/google/go-g

Ilya Revenko 14 Oct 17, 2022
Automatic AWS Security Group ingress through DDNS

Auto DDNS Security Lambda Update AWS Security Group rules to an IP resolved from a DNS hostname. Useful to dynamically allow ingress from a DDNS hostn

Jason Kingsbury 0 Oct 19, 2021
Scout is a standalone open source software solution for DIY video security.

scout Scout is a standalone open source software solution for DIY video security. https://www.jonoton-innovation.com Features No monthly fees! Easy In

null 8 Oct 25, 2022
A pure Unix shell script implementing ACME client protocol

An ACME Shell script: acme.sh An ACME protocol client written purely in Shell (Unix shell) language. Full ACME protocol implementation. Support ACME v

acme.sh 29.3k Nov 21, 2022
Premier ACME client library for Go

acmez - ACME client library for Go ACMEz ("ack-measy" or "acme-zee", whichever you prefer) is a fully-compliant RFC 8555 (ACME) implementation in pure

Matt Holt 182 Nov 26, 2022
DNS Ping: to check packet loss and latency issues with DNS servers

DNSping DNS Ping checks packet loss and latency issues with DNS servers Installation If you have golang, easiest install is go get -u fortio.org/dnspi

Fortio (Φορτίο) 61 Nov 18, 2022
Verify IP addresses of respectful crawlers like Googlebot by reverse dns and forward dns lookups

goodbots - trust but verify goodbots verifies the IP addresses of respectful crawlers like Googlebot by performing reverse dns and forward dns lookups

Eric Wu 30 Aug 16, 2022
netcup DNS module for caddy: dns.providers.netcup

netcup DNS module for Caddy This package contains a DNS provider module for Caddy. It can be used to manage DNS records with the netcup DNS API using

null 7 Nov 9, 2022
A fork on miekg/dns (since I've already forked zmap/dns)

Alternative (more granular) approach to a DNS library Less is more. Complete and usable DNS library. All Resource Records are supported, including the

null 0 Jan 19, 2022
A simple DNS forwarder that forwards DNS queries to various upstreams

A simple DNS forwarder that forwards DNS queries to various upstreams. If an upstream returns NXDomain, the next upstream is tried.

null 1 Jul 8, 2022
gproxy is a tiny service/library for creating lets-encrypt/acme secured gRPC and http reverse proxies

gproxy is a reverse proxy service AND library for creating flexible, expression-based, lets-encrypt/acme secured gRPC/http reverse proxies GProxy as a

null 16 Sep 11, 2022
Opentracing factory to setup by multiples vendors

telemetry Opentracing factory to setup by multiples vendors. Usage telemetry.InitTracer( telemetry.WithJaeger(os.Getenv("APP_NAME")), telemetr

Leroy Merlin Brasil 3 Jul 23, 2021
Go setup - Setting up Golang on my computer

This is my Journey Of Learning Go in 2022 I am going to first get some backgroun

Ramzi A. 0 Feb 4, 2022
A tiny command line DNS client with support for UDP, DoT, DoH, and DoQ.

q A tiny command line DNS client with support for UDP, DoT, DoH, and DoQ. Usage q command line DNS client (https://github.com/natesales/q) Usage: q

Nate Sales 927 Nov 19, 2022
High performance DNS over HTTPS client & server

DNS-over-HTTPS Client and server software to query DNS over HTTPS, using Google DNS-over-HTTPS protocol and IETF DNS-over-HTTPS (RFC 8484). Guides Tut

Star Brilliant 1.6k Nov 24, 2022