Clone or download
Pull request Compare This branch is 298 commits ahead, 293 commits behind kristapsdz:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
GNUmakefile
LICENSE.md
Linux-seccomp.md
README.md
acctproc.c
acme-client.1
base64.c
certproc.c
chngproc.c
compat-setresgid.c
compat-setresuid.c
config.h
dbg.c
dnsproc.c
extern.h
fileproc.c
http.c
http.h
jsmn.c
jsmn.h
json.c
keyproc.c
main.c
netproc.c
openssl-compat.c
openssl-compat.h
revokeproc.c
rsa.c
rsa.h
sandbox-darwin.c
sandbox-null.c
sandbox-pledge.c
sandbox-seccomp.c
util-pledge.c
util-portable.c
util.c

README.md

Synopsis

acme-client is yet another ACME client, specifically for Let's Encrypt, but one with a strong focus on security.

It was originally named letskencrypt until version 0.1.11. Please see kristaps.bsd.lv/acme-client for the original software.

This repository contains a fork with additionnal features backported from OpenBSD, experimental OpenSSL support and with goop to allow compilation and secure operation on Linux, Mac OS X, NetBSD, and FreeBSD. You will need libressl on all systems and libbsd on Linux (except for musl libc systems like Alpine).

Linux has an experimental libseccomp sandbox, but you must enable it yourself. Details in Linux-seccomp.md.

What are the difference between this and the non-portable release?

  • Conditional support for OpenBSD's sandbox, Mac OS X, or experimentally on Linux.
  • Proper preprocessor flags for unlocking some Linux functions.
  • Different library names on Linux.
  • Uses GNU make instead of BSD make.

This version tries its best to be secure, but some of its supported operating systems are hostile to security.

On both Linux and Mac OS X, for example, the DNS resolution process is effectively run in the main file-system and un-sandboxed due to the complexity of lookups (needing mDNSresponder in the latter case or a slew of mystery files in the former).

Moreover, while the sandbox on Mac OS X (which is deprecated?) exists, its behaviour is not well-documented and, morever, is weakened to co-exist with the file-system jail.

Feature requests will be ignored unless joined by a patch. If there's something you need, I'm happy to work with you to make it happen. If you really need it, I'm available for contract (contact me by e-mail).

Configuration

Since your system might not be one of the tested ones (FreeBSD, Linux, Linux with musl libc, etc.), you may need to tune some of the values in the GNUmakefile or config.h. Please tell me if you do so, so I can accommodate in future releases.

In the former, you can adjust system-specific compilation flags.

In the latter, you can set the NOBODY_USER value to be the name of an unprivileged user for privilege dropping. You can also set DEFAULT_CA_FILE for the location of the certificate file loaded by libtls. There's also PATH_VAR_EMPTY, which should be an empty directory into which we can create our jail.

License

Sources use the ISC (like OpenBSD) license. See the LICENSE.md file for details.

The jsmn.c and jsmn.h files use the MIT license. See https://github.com/zserge/jsmn for details.