#acme4j v5.0.0 is there. It supports dns-persist-01 now (see https://letsencrypt.org/2026/02/18/dns-persist-01.html).

Although it is a major update, it does not break anything unless you use `Login.getKeyPair()` or `Login.getAccountLocation()` in your code.

https://github.com/shred/acme4j/releases/tag/v5.0.0

DNS-PERSIST-01: A New Model for DNS-based Challenge Validation

When you request a certificate from Let’s Encrypt, our servers validate that you control the hostnames in that certificate using ACME challenges. For subscribers who need wildcard certificates or who prefer not to expose infrastructure to the public Internet, the DNS-01 challenge type has long been the only choice. DNS-01 works well. It is widely supported and battle-tested, but it comes with operational costs: DNS propagation delays, recurring DNS updates at renewal time, and automation that often requires distributing DNS credentials throughout your infrastructure.

#acme4j v4.0.0 is there. Most important change is that it now requires Java 17 or higher. Support for draft-ietf-acme-dns-account-label and Actalis CA has been added. Resource consumption has been optimized for heavy workloads.

Even though it's a major update, there shouldn't be much to change on your side.

https://codeberg.org/shred/acme4j/releases/tag/v4.0.0

v4.0.0 - shred/acme4j

- acme4j now requires Java 17 or higher - A new `HttpClient` instance was created for every request. Now it is bound to the `Session`, reducing resource consumption on heavy workloads. (Thanks to @vincentdo for the PR.) - A `Session` instance can now be shared between multiple threads, still ke...

Codeberg.org

#acme4j v3.5.1 is available. It's a small bugfix release. If Java modules are used, Buypass and Google CA `acme:` URIs were not recognized. This is fixed now.

https://codeberg.org/shred/acme4j/releases/tag/v3.5.1

v3.5.1 - shred/acme4j

* Buypass and Google `acme:` URIs were not recognized when Java modules were enabled, fixed. * Main development has moved to [Codeberg](https://codeberg.org/shred/acme4j). The project remains fully mirrored on [GitHub](https://github.com/shred/acme4j). You can open issues and pull requests on bo...

Codeberg.org

I moved the #acme4j repository to #Codeberg https://codeberg.org/shred/acme4j

Although it is the main repository now, the GitHub repository will serve as a full-featured mirror. You can post issues and pull requests in both repositories.

acme4j

Java client for ACME (Let's Encrypt)

Codeberg.org

#acme4j v3.5.0 is available. It adds support for Google CA and Buypass, as well as ACME profiles. Please see the release notes for further information.

https://github.com/shred/acme4j/releases/tag/v3.5.0

Release v3.5.0 · shred/acme4j

Changelog Added providers for Google CA and Buypass. See the documentation for their acme: connection URIs and further notes. Added support for draft-aaron-acme-profiles-00 (thanks to @jmcrawford4...

GitHub

#acme4j v3.4.0 is available. It offers new methods to wait for status changes. Also I recommend to actively wait for an order to become READY before invoking order.execute(), to enhance compatibility with future CA implementations. Please see the release notes for further information.

https://github.com/shred/acme4j/releases/tag/v3.4.0

Release v3.4.0 · shred/acme4j

Important Changes Until now, order finalization (order.execute()) was started immediately after the domain authorization process was completed. This is working fine for most CAs, but might fail for...

GitHub

#acme4j v3.3.1 is available. It fixes a bug related to draft-ietf-acme-ari-03.

https://github.com/shred/acme4j/releases/tag/v3.3.1

Release v3.3.1 · shred/acme4j

Added chapter about errors and Problem objects. OrderBuilder.replaces() set autoRenewal to true, which makes no sense in this context. Fixes #158, thanks to @rcc13 for reporting.

GitHub

#acme4j v3.3.0 is there. It now supports subdomain validation (RFC 9444). Besides that there are some minor bugfixes.

https://github.com/shred/acme4j/releases/tag/v3.3.0

Release v3.3.0 · shred/acme4j

Added support for subdomain validation (RFC 9444) AcmeProtocolException was thrown when a rate limit was reached while fetching a nonce. Now either AcmeRetryAfterException or a generic AcmeExceptio...

GitHub

New #acme4j release 3.2.0 is there. It brings SSL.com and ZeroSSL support, support for long domain names (>64 chars), simplified Retry-After handling, and upgrades to draft-ietf-acme-ari-03. The documentation has been completely restructured and reviewed. Enjoy!

https://github.com/shred/acme4j/releases/tag/v3.2.0

Release 3.2.0 · shred/acme4j

Documentation has been completely restructured and reviewed. The chapters are now oriented on the different steps, and should help to understand better how acme4j is working. Added acme://ssl.com U...

GitHub
I'm upgrading my web server at the moment. #acme4j documentation will be back online soon.