Skip to content

ACME: tls-alpn-01 challenge implementation #27

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

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

bavshin-f5
Copy link
Member

@bavshin-f5 bavshin-f5 commented Aug 12, 2025

tls-alpn-01 challenge is supposed to be processed by a TLS-enabled listener on port 443.

There are two important details to consider:

  1. A TCP load-balancer in front of NGINX may send the traffic to a different port. The stream pass directive can play a similar role. Thus, we should not make an assumption about a listener object that receives the connection, and should configure all the SSL listener objects to accept the challenge verification requests.
  2. The challenge implementation requires accepting the acme-tls/1 ALPN protocol and sending a certificate with key authorization extension in response. Either requires bypassing the regular NGINX SSL callbacks. In addition, we'd want to avoid handling the challenge on a server with client authentication enabled.

And that's how we arrived to the implementation in this PR: create a new server SSL_CTX, filter the connections in the ClientHello callback and switch to the new context if necessary.

Remaining items:

Copy link

github-actions bot commented Aug 12, 2025

✅ All required contributors have signed the F5 CLA for this PR. Thank you!
Posted by the CLA Assistant Lite bot.

@bavshin-f5
Copy link
Member Author

I have hereby read the F5 CLA and agree to its terms

@bavshin-f5 bavshin-f5 linked an issue Aug 12, 2025 that may be closed by this pull request
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.

[RFC8737] TLS-ALPN-01 Challenge
1 participant