acme4j

A Java client for the Automatic Certificate Management Environment (ACME) protocol.

ACME is a protocol that a certificate authority (CA) and an applicant can use to automate the process of verification and certificate issuance.

This Java client helps connecting to an ACME server, and performing all necessary steps to manage certificates.

It is an independent open source implementation that is not affiliated with or endorsed by Let’s Encrypt.

The source code can be found at GitHub and is distributed under the terms of Apache License 2.0.

ACME v1

This version of acme4j implements the deprecated ACME v1 protocol. It should only be used for existing code, and for connecting to CAs that do not provide an ACME v2 service.

For new projects, it is recommended to use acme4j version 2, which fully implements the current ACME v2 protocol.

Existing code should be migrated to acme4j version 2 (see the migration guide). Let’s Encrypt has not yet announced a sunset date for ACME v1, so there seems to be plenty of time for migration at the moment.

Quick Start

acme4j is available at Maven Central. Just add this snippet to your pom.xml:

<dependency>
  <groupId>org.shredzone.acme4j</groupId>
  <artifactId>acme4j-client</artifactId>
  <version>1.1</version>
</dependency>

There is also an optional utility module that will help you handling key pairs and certificates (but requires Bouncy Castle):

<dependency>
  <groupId>org.shredzone.acme4j</groupId>
  <artifactId>acme4j-utils</artifactId>
  <version>1.1</version>
</dependency>

Now just have a look at this source code to see an example usage.