[![Latest Version](https://img.shields.io/crates/v/acme-rs)](https://crates.io/crates/acme-rs)
# acme-rs
An `ACME` Client for Let's Encrypt written in Rust to request SSL/TLS certificates. This client follows the guidelines specified in [RFC8555](https://tools.ietf.org/html/rfc8555).
## Contents
- [Features](#Features)
- [Installation](#Installation)
- [Usage](#Usage)
- [Options](#Options)
## Features
- `acme-rs` in its current state does only support the http challenge. The port 80 must not be blocked.
- You have the option to generate you keypair for the certificate first before executing the client.
- By default, acme-rs will send the request to the URL https://acme-v02.api.letsencrypt.org/directory. However, you can manually change the ACME Server URL by using the `--server` flag. Just make sure you pass in the URL pointing to the _directory_ information. The client then fetches all paths for further requests from the endpoint.
This crate also exposes a libary which allows users to acquire a certificate within their own code. The documentation can be found on docs.rs. The main function exposed by the libary is `generate_cert_for_domain`.
## Installation
The installation process is done via `crates.io`. To install the lates version of this tool just run
```bash
cargo install acme-rs
```
you could also specify the installation path (e.g. if you would like to install the tool system wide):
```bash
cargo install acme-rs --root /usr/local/bin
```
## Usage
`acme-rs` is using the `openssl` rust wrapper crate to generate keys and the csr.
The client will store the certificate and the certificate chain in the files `cert.crt` and `chain.crt`
### Request a certificate
You can request a certificate by using the following command:
```
acme-rs [OPTIONS] --domain --email
```
## Options
By running the command `acme-rs --help` you can get an overview of all the commands available.
```
An acme client (RFC8555) written in the rust programming language
USAGE:
acme-rs [FLAGS] [OPTIONS] --email --domain
FLAGS:
-h, --help Prints help information
-v, --verbose Enables debug output
-V, --version Prints version information
OPTIONS:
-d, --domain The domain to register the certificate for
-e, --email
--private-key An optional private key file (PEM format) to load the keys
from
--public-key
-s, --server The ACME server's URL
```