Rewrite of acme-tiny in Perl
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Přemysl Janouch 361e0e52e0
5 months ago
LICENSE Update README, add LICENSE 5 months ago
README.adoc Update README, add LICENSE 5 months ago Fix reliability 1 year ago


acme-tinier is a simplified rewrite of acme-tiny in Perl, since Python 3 wanted to take 125 MiB of space on my machine while Perl is practically everywhere and the JSON::PP package seems to be present in most of its default installations.

It is not likely to work with any other provider than Let's Encrypt, as the ACME protocol hasn't been finalised yet and there have been plenty of changes to it already.


The following is a minimal script to generate a key and a corresponding certificate using Let's Encrypt, assuming that a web server is properly set up to serve the `ACME_DIR` and the user running this, which should in no way be the root user, can place files in there:

#!/bin/sh -ex
[ -f account.key ] || openssl genrsa 4096 > account.key
[ -f intermediate.pem ] || curl -o intermediate.pem \

[ -f $DOMAIN.key ] || openssl genrsa 4096 > $DOMAIN.key
openssl req -new -sha256 -key $DOMAIN.key -nodes \
	-subj "/CN=$DOMAIN/" > $DOMAIN.csr

ACME_DIR=/srv/http/acme-challenge \
ACCOUNT_KEY=account.key \
ACME_CA='' \
./ $DOMAIN.csr > $DOMAIN.crt
cat intermediate.pem >> $DOMAIN.crt

The Perl script itself is under 200 hundred lines of code, which is also the upper limit for development, and you are advised to study it before use.

Contributing and Support

Use to report any bugs, request features, or submit pull requests. git send-email is tolerated. If you want to discuss the project, feel free to join me at ircs://, channel #dev.

Bitcoin donations are accepted at: 12r5uEWEgcHC46xd64tt3hHt9EUvYYDHe9


This software is released under the terms of the 0BSD license, the text of which is included within the package along with the list of authors.