mirror of https://github.com/shred/acme4j
52 lines
3.1 KiB
Markdown
52 lines
3.1 KiB
Markdown
# ACME Java Client  
|
|
|
|
This is a Java client for the [Automatic Certificate Management Environment (ACME)](https://tools.ietf.org/html/draft-ietf-acme-acme-06) 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_.
|
|
|
|
## Features
|
|
|
|
* Supports the "ACME v1" protocol that is used by _Let's Encrypt_
|
|
* Easy to use Java API
|
|
* Requires JRE 8 or higher
|
|
* Built with maven, packages available at [Maven Central](http://search.maven.org/#search|ga|1|g%3A%22org.shredzone.acme4j%22)
|
|
* Small: `acme4j-client` only requires [jose4j](https://bitbucket.org/b_c/jose4j/wiki/Home) and [slf4j](http://www.slf4j.org/) as dependencies
|
|
* Only the optional `acme4j-utils` module requires [Bouncy Castle](http://www.bouncycastle.org)
|
|
* Extensive unit tests
|
|
|
|
## Usage
|
|
|
|
* See the [online documentation](https://shredzone.org/maven/acme4j/) about how to use _acme4j_.
|
|
* For a quick start, have a look at [the source code of an example](https://github.com/shred/acme4j/blob/master/acme4j-example/src/main/java/org/shredzone/acme4j/ClientTest.java).
|
|
|
|
## Future Compatibility
|
|
|
|
This version of _acme4j_ is tailor-made for _Let's Encrypt_ and other CAs that use the [Boulder](https://github.com/letsencrypt/boulder) server and the "ACME v1" protocol.
|
|
|
|
ACME v1 is deprecated and will be replaced by ACME v2 in the near future. _Let's Encrypt_ [has announced](https://letsencrypt.org/2017/06/14/acme-v2-api.html) to offer an ACME v2 API endpoint by January 2018. There is no end of life date for ACME v1 at the moment.
|
|
|
|
To prepare your software for ACME v2, you can use _acme4j_ available in the ["draft" branch](https://github.com/shred/acme4j/tree/draft), which fully supports the ACME v2 protocol, but is not downward compatible to ACME v1. A first release of this branch will be available at Maven Central in due time.
|
|
|
|
Make sure to set the correct major version in your dependencies:
|
|
|
|
* _acme4j_ version 0.xx → ACME v1 protocol. **This is what you want for production code at the moment.**
|
|
* _acme4j_ version 1.xx → ACME v2 protocol. The "draft" branch. Not meant for production yet.
|
|
|
|
## Contribute
|
|
|
|
* Fork the [Source code at GitHub](https://github.com/shred/acme4j). Feel free to send pull requests.
|
|
* Found a bug? [File a bug report!](https://github.com/shred/acme4j/issues)
|
|
|
|
## License
|
|
|
|
_acme4j_ is open source software. The source code is distributed under the terms of [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0).
|
|
|
|
## Acknowledgements
|
|
|
|
* I would like to thank Brian Campbell and all the other [jose4j](https://bitbucket.org/b_c/jose4j/wiki/Home) developers. _acme4j_ would not exist without your excellent work.
|
|
* I also like to thank everyone who contributed to _acme4j_.
|