Skip to content

Conversation

bavshin-f5
Copy link
Member

This PR gets us a working ACME client implementation, tested with pebble, boulder (deployed on Let's Encrypt staging and production), and Step CA. Further compatibility testing is blocked on a lack of EAB implementation (#6).

The error handling in acme.rs is not finalized and may receive some final touches this week. The rest should be ready for review.

@bavshin-f5 bavshin-f5 requested review from avahahn and ensh63 August 5, 2025 22:01
@bavshin-f5 bavshin-f5 force-pushed the bavshin/acme-client branch from 57a7bd4 to d5ed1d0 Compare August 5, 2025 23:27
Copy link

@avahahn avahahn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great, just a couple asks...
Also, is it your plan to push the net submodule and the util.rs functions to ngx-rust?

@bavshin-f5 bavshin-f5 force-pushed the bavshin/acme-client branch 6 times, most recently from d5e33b6 to 33dd5d6 Compare August 7, 2025 06:03
@bavshin-f5 bavshin-f5 force-pushed the bavshin/acme-client branch 2 times, most recently from 8876321 to 2e1a585 Compare August 8, 2025 00:34
Copy link

@avahahn avahahn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks fantastic!

@bavshin-f5 bavshin-f5 force-pushed the bavshin/acme-client branch 2 times, most recently from d867989 to 119b2a6 Compare August 8, 2025 17:18
bavshin-f5 and others added 7 commits August 8, 2025 10:41
This change implements a subset of JOSE specifications sufficient for
RFC8555: JSON Web Signature with RS256, ES256, ES384 and ES512
algorithms (RFC7515, RFC7518) and JSON Web Key Thumbprint (RFC7638).
The client is using NGINX connection infrastructure with async wrappers,
but the message parser is currently provided by "hyper".

There are several shortcomings in this approach, most importantly lack
of support for pre-resolved upstreams, keepalive or fine tuning of
connection buffering and timeouts.  There is a plan to provide a better
HTTP client implementation in one of the future releases of ngx-rust and
use it as a replacement.
@bavshin-f5 bavshin-f5 force-pushed the bavshin/acme-client branch from 119b2a6 to 7044037 Compare August 8, 2025 18:01
Copy link
Contributor

@ensh63 ensh63 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good for me.

@bavshin-f5 bavshin-f5 merged commit e9d7233 into main Aug 8, 2025
13 checks passed
@bavshin-f5 bavshin-f5 deleted the bavshin/acme-client branch August 8, 2025 18:13
bavshin-f5 added a commit that referenced this pull request Aug 9, 2025
Starting from v2.7.0, pebble ignores certificateValidityPeriod and uses
the validityPeriod from the default profie instead.

The profile was removed during the review of #16, because I assumed it
was redundant and the tests (with pebble v2.6.0) confirmed that.
bavshin-f5 added a commit that referenced this pull request Aug 10, 2025
Starting from v2.7.0, pebble ignores certificateValidityPeriod and uses
the validityPeriod from the default profie instead.

The profile was removed during the review of #16, because I assumed it
was redundant and the tests (with pebble v2.6.0) confirmed that.
bavshin-f5 added a commit that referenced this pull request Aug 11, 2025
Starting from v2.7.0, pebble ignores certificateValidityPeriod and uses
the validityPeriod from the default profie instead.

The profile was removed during the review of #16, because I assumed it
was redundant and the tests (with pebble v2.6.0) confirmed that.
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.

3 participants