Go to file
Richard Körber 2d5261f592 Use String for expiry date, as Date would require joda-time 2015-12-13 19:21:35 +01:00
acme4j-client Use String for expiry date, as Date would require joda-time 2015-12-13 19:21:35 +01:00
acme4j-example Use staging server for example 2015-12-13 19:20:49 +01:00
acme4j-letsencrypt Add more unit tests 2015-12-11 18:36:22 +01:00
acme4j-utils Add unit tests for utils module 2015-12-10 23:44:44 +01:00
src/site Project start 2015-12-09 01:24:03 +01:00
.gitignore Initial commit 2015-12-04 21:28:12 +01:00
.project Project start 2015-12-09 01:24:03 +01:00
LICENSE-APL.txt Initial commit 2015-12-04 21:28:12 +01:00
README.md Project start 2015-12-09 01:24:03 +01:00
pom.xml Add unit tests for letsencrypt module 2015-12-10 23:46:15 +01:00

README.md

ACME Java Client build status

This is a Java client for the 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.

Alpha Release!

Please note that even though acme4j is already usable, it is currently in an early alpha state. This means that:

  • acme4j is not feature complete yet (see the "Missing" section below).
  • The API is not stable. It may change in a manner not compatible to previous versions and without prior notice.
  • acme4j is not thoroughly tested yet, and may still have major bugs.

Features

  • Easy to use Java API
  • Requires JRE 7 or higher
  • Built with maven (package will be made available at Maven Central as soon as beta state is reached)
  • Small, only requires jose4j and slf4j as dependencies. Bouncy Castle is recommended, but not required.

How to Use

acme4j consists of a few modules:

  • acme4j-client: This is the main module. It contains the ACME client and everything needed for communication with an ACME server.
  • acme4j-letsencrypt: A Let's Encrypt service. Just add it as dependency, it will neatly plug into the client.
  • acme4j-utils: Some utility classes that may be helpful for creating key pairs, certificates, and certificate signing requests. Requires Bouncy Castle.
  • acme4j-example: An example tool that performs all steps for registering a new account at Let's Encrypt and getting a certificate for a set of domain names. This is a good starting point to find out how acme4j is used.

Missing

The following features are planned to be completed for the first beta release, but are still missing:

  • Support of account recovery and certificate revocation.
  • proofOfPossession-01 and tls-sni-01 challenge support.
  • Extensive unit tests.
  • Better error handling.
  • Some hardening (like plausibility checks).
  • Full documentation.

acme4j is open source software. Feel free to send in pull requests!