mirror of
https://github.com/acme-dns/acme-dns.git
synced 2026-04-27 04:45:48 +03:00
[GH-ISSUE #97] Clarification of a Few Points #39
Labels
No labels
Documentation
Documentation
bug
enhancement
feature request
feature request
help wanted
pull-request
question
security
security
testing
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/acme-dns#39
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Queuecumber on GitHub (Aug 2, 2018).
Original GitHub issue: https://github.com/acme-dns/acme-dns/issues/97
I'm using acme-dns for my wildcard domain and I was hoping to get a few points clarified for using it
Are all these records necessary? Following the readme, I also added the same NS record and A record for ns.auth to my primary DNS, so at least the bottom two seem potentially redundant to me but I may be misunderstanding something about how DNS resolves the names.
Since I use this in a home setup, I am at my ISPs mercy for an IP address. For my primary DNS provider I use dynamic dns records to keep the records updated. Is there any advice for updating acme-dns configuration automatically when the external IPs change?
I'm going to try to add support for acme-dns to cert-manager as part of a larger system, and I won't be able to forward port 53 during development to make the challenges work, is there a recommended way to develop under such circumstances?
Finally, I think this has come up before, but is this safe to keep exposed outside my LAN? I suspect that disabling the registration endpoint solves most security concerns, but just to make sure I am understanding the process: lets say I set up my primary DNS to point to acme-dns as described in the readme, and the register an account to update it. Assuming I left the registration endpoint turned on, couldnt anyone overwrite the/add a registration for my domain and create a certificate for it?
@Ajedi32 commented on GitHub (Aug 2, 2018):
For #1 I'd need to consult my notes to be sure, but as I understand it setting an NS record for
auth.example.orgmeans that your DNS provider is delegating that entire subdomain to your ACME-DNS server. So even if you have a record (of any type) forauth.example.orgset with your DNS provider that entry is not canonical (since your DNS provider is not the authoritative source for*.auth.example.organymore).You still need the A record for
ns.auth.example.orgto be set via your DNS provider though, because otherwise DNS clients will have no way of knowing how to contactns.auth.example.orgwhen they see that name in the NS record set by your DNS provider. That "extra" A record is called a "glue record". Since it's not canonical though, you also need to have your ACME-DNS server serve the same record.#2: Personally, I solved this by installing acme-dns on a VPS with a static IP outside my firewall. That also has the benefit of not requiring you to expose a server inside your LAN to the public internet. But I suppose alternatively you could have a script that regularly rewrites the config file and reloads ACME-DNS. Or you could set the NS record's value to a domain controlled by a dynamic DNS provider (rather than a domain controlled by your ACME-DNS server itself).
#3 I don't know. Maybe test the DNS changes with
dig? Is it an issue if Let's Encrypt can't access the DNS server during development?#4 I believe you can configure the API to only accept requests from certain IP ranges. In the absence of that, anyone can register an account on your DNS server. That doesn't automatically let them get certs for your domain though; you'd need to point a CNAME record for the DNS challenge at the domain their account controls first. The biggest concern I think to leaving registration open is that it's a potential DOS vector. Someone could register millions of accounts on your DNS instance and use up all your disk space, or something like that.
@Queuecumber commented on GitHub (Aug 3, 2018):
Probably not actually, I assume the challenge process works in general so it would just be a matter of getting the registation/update process to work which should be fine without public port 53 until the final testing
One thing that concerns me is what happens if someone re-registers the same endpoint e.g. I had previous registered example.com and have been using acme-dns to obtain certificates. Then Mallory also registers example.com on the same acme-dns instance. She can't update the CNAME record and so cant use the registration to obtain certificates, but does acme-dns overwrite my registration with hers making me unable to renew until I re-register? Or does it keep both registrations? Or does it not allow the second registration since someone already registered that domain? Or something else?
@Ajedi32 commented on GitHub (Aug 3, 2018):
http://acme-dns.example/registerand it gives you a randomly-generated domain name to point your CNAME record at, plus a randomly-generated username and password you can use to update the TXT record for that randomly-generated domain. See https://github.com/joohoi/acme-dns#testing-it-out@Queuecumber commented on GitHub (Aug 3, 2018):
Ah good point, it's the client side that associates that with the domain you are trying to get a cert for. OK I think that covers everything then, thanks for your help
@Queuecumber commented on GitHub (Aug 14, 2018):
@Ajedi32 Just for the record, #48 was the trick to making the dynamic DNS work. Instead of an A record acme-dns serves a cname record:
and then dyn.example.org is on my main zone and updated w/ a dynamic DNS client. Seems to work so far