Administration Hosting Linux

acmetool auf Let’s Encrypt v02 API migirieren

Let’s Encrypt stellt bald (Juni 2020) die alte v01-API ab und wird neue SSL-Zertifikate ab diesem Zeitpunkt ausschließlich über die seit einiger Zeit verfügbare v02-API validieren. Ich verwende, wie im Artikel (Secure) Webhosting 1×1 beschrieben das Werkzeug ‚acmetool‘ zum automatisch Ausstellen und Verlängern von SSL-Zertifikaten. Dieses spricht bei mir nach- wie vor nur die alte API. Demnach bekam ich auch mehrere jener Warn-E-Mails von Let’s Encrypt.

Hi,
According to our records, the software client you're using to get Let's
Encrypt TLS/SSL certificates issued or renewed at least one HTTPS certificate
in the past two weeks using the ACMEv1 protocol. Here are the details of one
recent ACMEv1 request from each of your account(s):
Client IP address:  2a01:4f8:150:8ff8::6
User agent:  acmetool acmeapi Go-http-client/1.1 linux/amd64
Hostname(s):  "www.commander1024.de"
Request time:  2020-01-15 14:13:12 UTC
Beginning June 1, 2020, we will stop allowing new domains to validate using
the ACMEv1 protocol. You should upgrade to an ACMEv2 compatible client before
then, or certificate issuance will fail. For most people, simply upgrading to
the latest version of your existing client will suffice. You can view the
client list at: https://letsencrypt.org/docs/client-options/
…Code-Sprache: AsciiDoc (asciidoc)

Client updaten oder wechseln

Das Problem ist nun aber, dass acmetool sowohl im Debian Buster Repository, als auch in den von hlandau offiziell gehosteten Repos max in Version 0.0.67 zu finden ist, welche keinen ACMEv2-Support hat.

Auf der Releases Seite findet man zwar einen Branch acmev2, der bereits geschlossen ist und zurückgemerged wurde und einen Tag 0.2.1, für den aber keine Binaries bereitstehen. Die letzten Commitmeldungen unter Tag 0.2.1 scheinen aber auf ACMEv2 Support hinzudeuten.

Eigentlich ist das Tool aber auch sehr einfach aufgebaut. Es ist ein single golang binary, das auf eine Handvoll Verzeichnisse und Konfigurationsdateien zugreift. Man kann es sich also relativ einfach selbst kompilieren und muss dann (möglicherweise) lediglich noch ein paar Configdateien und Skripte anpassen.

acmetool aus den Quellen kompilieren

Zuerst einmal brauchen wir die Abhängigkeiten

apt install git build-essential libcap-dev golang

Nun holen wir den Code

cd /usr/local/src/
git clone https://github.com/hlandau/acmetool.gitCode-Sprache: PHP (php)

Das Programm kompilieren und installieren

cd acmetool
make
make install

Nun liegt das Programm (single binary) in ‚/usr/local/bin/‘ im Gegensatz zu ‚/usr/bin/‘. Dieser Umstand könnte zu einem Problem mit dem Cronjob
werden, der regemäßig die Zertifikate aktualisieren soll. Dies scheint davon abzuhängen, mit welcher Version das Paket seinerzeit installiert hatte. So sollte ‚/etc/cron.d/acmetool‘ aussehen:

SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
MAILTO=root

7 0 * * * root acmetool --batch reconcileCode-Sprache: Bash (bash)

Im Prinzip habe ich nur den absoluten Pfad zum Binary entfernt. Das geht, weil oben in der PATH -Variable sowohl ‚/usr/bin/‘ als auch ‚/usr/local/bin/‘ als Suchpfad gesetzt werden. So ist der Cronjob mit beiden möglichen Ablagepfaden nutzbar, damit man in der Zukunft wieder auf ein Debian-verwaltetes Paket zurückfallen kann.

Migration der Konfiguration

Die ist einfacher als gedacht, ich hatte aber den ‚acmetool quickstart –expert‘ noch einmal ausgeführt, was entsprechend einen ACMEv2 Account anlegt und dabei das Directory „https://acme-v02.api.letsencrypt.org/directory“ setzt. Der Pfad für „additional webroots“ muss dabei allerdings noch einmal auf den vorher gesetzten Wert angegeben werden. Der lautete ‚/var/run/acme/acme- challenge‘ . Bei der Alogrithmusauswahl ist es durchaus sinnvoll, etwas besseres als RSA auszuwählen, z. B. ECDSA nistp 384.

So sieht es dann schon wieder ganz gut aus.

# acmetool status
Settings:
  ACME_STATE_DIR: /var/lib/acme
  ACME_HOOKS_DIR: /usr/lib/acme/hooks; /usr/libexec/acme/hooks
  Default directory URL: https://acme-v02.api.letsencrypt.org/directory
  Preferred key type: ecdsa-nistp384
  Additional webroots:
    /var/run/acme/acme-challenge
Available accounts:
  Account(acme-v01.api.letsencrypt.org%2fdirectory/f44e2f7ae3b5eeed78c127b3b1bd7cf7bc5e3a48979739a74d3784f9f0c67c5e)
    thumbprint: 496c5cfc0fbed5d3b06c6464c0b874f61962b1b9a45aab30b51b7461e8435500
  Account(acme-v02.api.letsencrypt.org%2fdirectory/46bac141986ffdfba74f0725c5215f266524c2b7956a0e27485309ffe54e82c6)
    thumbprint: c7cc84e4b384e16a63a41d6e18f3aa8de82ed14468a3994288d7d7496a9cda5b
Target(cloud.commander1024.de;https://acme-v02.api.letsencrypt.org/directory;0)
  best: Certificate(81612f5a09e718b87f14e1feafe0b9df9bcf851182e975a54b0760000b8ee551)
Target(halimede.commander1024.de;https://acme-v02.api.letsencrypt.org/directory;0)
  best: Certificate(189ddb414e49dbd149953709b39f72d176cc2e5dba94ba86b3412ddd273557f8)
Target(office.commander1024.de;https://acme-v02.api.letsencrypt.org/directory;0)
  best: Certificate(13e97ddb7205d3e4348da820226feb8254033906185842a2d98ca89ce4bc8231)
Target(www.marzinzik-beratung.de;https://acme-v02.api.letsencrypt.org/directory;0)
  best: Certificate(3f47e411ff45d9b29ef0940f82368132763b3020b01f11cf866a5575c37699ba)
Target(gallery.commander1024.de;https://acme-v02.api.letsencrypt.org/directory;0)
  best: Certificate(840c4552d535bf2c3ba2393cffcdba591487c3ddc52b2991c70ff0c1c2f862fd)
Target(mirror7.ipfire.org;https://acme-v02.api.letsencrypt.org/directory;0)
  best: Certificate(d7582e1f2fef52208a675b13babe24cc5953aed161cc0ed76bc20524cceead6b)
Target(www.commander1024.de;https://acme-v02.api.letsencrypt.org/directory;0)
  best: Certificate(0638786298b4b444b67f5e79e1ed5f21797aa34b7ec6e014e181a3d4cf8a1a2d)
Target(www.fetroland.de;https://acme-v02.api.letsencrypt.org/directory;0)
  best: Certificate(24532e48a8d6bda29c0b659f164b643204208206c5831de77d395986f386a4fd)
Target(www.goldvibes.de;https://acme-v02.api.letsencrypt.org/directory;0)
  best: Certificate(0a9ce0425494b9ac0f467234b847a7f0abcd3bc64be9f81120ff0e0fd95232c8)
Code-Sprache: Bash (bash)

Autor

Seit Kindheitstagen ist der Computer sein Begleiter. Was mit Linux anfing, wurde 2005 ein/e Beruf/ung, die weit über den Arbeitsplatz hinausgeht. Durch stetige Weiterentwicklung fasste er auch im *BSD Segment Fuß und bietet mittlerweile professionelle Lösungen im Bereich Hosting, Networking und Infrastruktur an. Als Ausgleich beschäftigt er sich neben Computerspielen mit der Fotografie.

1 Kommentar Neuen Kommentar hinzufügen

  1. mitch sagt:

    Vielen Dank für diesen Hinweis – ich nutze acme-tiny und hatte bisher noch keine Hinweis-Mails, aber ich habe das mal zum Anlass genommen, mir meine Konfiguration anzuschauen.
    Mein Checkout war Stand 2017, 68 Commits im Rückstand und im Changelog steht auch was mit Protokoll v2

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.