Tiny ACME

Seit langer Zeit moechte ich endlich SSL fuer meine Domain ausrollen. Ich habe das fuer ein anderes Projekt schonmal mit Certbot gemacht, aber das war zum Teil mehr verwirrend, als einsteigerfreundlich.

Es gibt aber auch eine Menge anderer Clients, die das ACME Protokoll beherrschen. Einer davon ist acme tiny.

Die Dokumentation ist kurz und praezise und funktioniert auf anhieb. Man erstellt einen Ordner und fuehrt folgende Befehle aus:

mkdir mydomain/
cd mydomain
git clone https://github.com/diafygi/acme-tiny
openssl genrsa 4096 > account.key
openssl genrsa 4096 > domain.key
openssl req -new -sha256 -key domain.key -subj "/CN=yoursite.com" > domain.csr

Ersetze yoursite.com durch die Domain. Der Computer sollte vom Internet aus erreichbar sein und ein Webserver sollte laufen. In der Anleitung ist ein gutes Beispiel mit NGINX, aber andere funktionieren auch.

Beim ersten Versuch sollte man auf jeden Fall den Staging Server benutzen. Das hat den Vorteil, dass man bei einem Fehler keine falschen Anfragen macht und in Limits rennt.

Die Staging API ist https://acme-staging-v02.api.letsencrypt.org/directory und der Befehl sieht wie folgt aus:

python acme-tiny/acme_tiny.py --directory-url https://acme-staging-v02.api.letsencrypt.org/directory \
--account-key ./account.key --csr ./domain.csr --acme-dir /var/www/challenges/ > ./signed_chain.crt

Wenn alles funktioniert hat sollte jetzt ein Zertifikat in der Datei signed_chain.crt Der Webserver wird mit den Zertifikaten konfiguriert, die Dokumentation zeigt, wie man das mit NGINX macht.

Als naechstes benutzt man die offizielle API und nicht Staging.

python acme-tiny/acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir \
/var/www/challenges/ > ./signed_chain.crt

Jetzt sollte man ein richtiges Zertifikat bekommen.