Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: ACME support #16

Open
wants to merge 33 commits into
base: main
Choose a base branch
from
Open

WIP: ACME support #16

wants to merge 33 commits into from

Conversation

erikh
Copy link
Owner

@erikh erikh commented Apr 24, 2023

This is still a work in progress; I'm just filing this pull request to get it out in the open that this work is being done, and that we're close to a result.

This implements ACME according to spec, using https://github.com/mholt/acmez as an underlying base. There are some unique challenges that are mostly solved, but not completely yet:

  • In a cluster of border nodes, they need to all respond to the same challenge
    • This requires a handshake protocol be used to distribute a single challenge to all of them, and indicate when the challenge is complete so that the certificate can be fetched
  • The certificate must be distributed as soon as it is captured. If not, there will be either TLS desync between nodes or some will be able to respond to https requests, and others not.
  • The challenge must take place in some scenarios (tls-alpn, http-01) in lieu of the content destined to be served.
  • The process must happen without the server going down

Some of these things are already solved in this branch, and others have yet to be finished. Additionally, the notion of truly graceful restarts (border already cleanly restarts itself, but does not carry outstanding TCP sockets when it does, instead choosing to close them for now) is not covered, but needs to be addressed at a near later point. Configuration distribution is a solved issue, but pumping them into the configuration and re-distributing the updated configuration needs to be done, which is solved in this branch. Finally, reconfiguring the service is also done in this branch, so that it can respond to ACME challenges without allowing unprotected or poorly protected traffic through the underlying service.

erikh added 30 commits April 8, 2023 20:36
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
- moved acmekit tests to integration tests
- made integration tests boot docker in docker
- tested that pebble never consults /etc/hosts
- I hate computers

Signed-off-by: Erik Hollensbe <git@hollensbe.org>
…eded to start a DNS server.

Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
…ly blown out in configuration

Signed-off-by: Erik Hollensbe <git@hollensbe.org>
…onfiguration

Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
…can finish watching

Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
…ng routine into solvers

Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
…r (yet)

- solvers still need to be fully implemented
- handling teardown+caching needs to be thought through some more

Signed-off-by: Erik Hollensbe <git@hollensbe.org>
…uccessful challenge for followers

Signed-off-by: Erik Hollensbe <git@hollensbe.org>
…g 'me'

Signed-off-by: Erik Hollensbe <git@hollensbe.org>
…locking

Signed-off-by: Erik Hollensbe <git@hollensbe.org>
…ment of structures through functions

Signed-off-by: Erik Hollensbe <git@hollensbe.org>
erikh added 2 commits May 8, 2023 10:47
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
…l work

Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant