Let's Encrypt auf Webfaction

Lets Encrpyt

Wir installieren Let's Encrypt mit ACME auf unserem Cloudhosting Provider Webfaction, mit einem eigenen lokalen Apache / PHP-FPM Einrichtung!

Hintergrund: Bei unserer Installation, verwenden wir einen lokalen Apache mit PHP-FPM und es gibt eine zentrale Apache Konfiguration (http.conf) und pro Drupal Instanz eine eigene zusätzliche Konfigurationsdatei.

Installation

Socet und dann ACME muss installiert werden:

Installieren von SOCET

Neuste Version downloaden und wie üblich kompilieren & installieren.

wget http://www.dest-unreach.org/socat/download/
tar -xf socat-1.7.3.0.tar.gz 
cd socat-1.7.3.0
./configure --prefix=$HOME
make
make install

Installieren von Automatic Certificate Management Environment (ACME)

Download und Installation:

curl https://get.acme.sh | sh

(das geht auch um ab-und-zu einen Update zu machen)

Einrichtung

Wichtig! IPV6 Konfiguration in Apache muss unterbunden werden! Als weiteres nutzen wir Drupal 8, weshalb es nicht geklappt hat mit einem lokalen .well-known Ordner pro Drupal Instanz. Wir nutzen deshalb kurzerhand einen zentralen Ort und müssen dann einfach in der zentralen Apache Konfiguration einen Alias setzen. Nachteil mag aus Security-Sicht sein, dass sich alle Instanzen denselben .well-knonw Ordner teilen.

Verzeichnis:

mkdir -p /home/<user>/var/letsencrypt/.well-known/acme-challenge"

Apache (immer nur einmalig in der Hauptkonfiguration eintragen)

Alias /.well-known/acme-challenge/ /home/<user>/var/letsencrypt/.well-known/acme-challenge/

Neues Zertifikat ausstellen

acme.sh --issue -w /home/<user>/var/letsencrypt/ -d <domain.com> -d www.<domain.com>

Jetzt wird das neue Zertifikat generiert und alles wird mit dem Domainnamen als Unterordner bei ~/.acme.sh abgelegt.

Upload auf Webfaction

Der letzte Schritt ist nun bei Webfaction dieses einzurichten und die jeweiligen Dateien hochzuladen:

  • Name = Am Besten den selben Namen wie die jeweilige Webapp bei Webfaction
  • Domains = wird dann automatisch befüllt
  • Expire Date = wird dann automatisch befüllt
  • Certifcate = die jeweilige .cer Datei
  • Private Key = die jeweilige .key Datei
  • Intermediates/bundles = immer die ca.cer Datei

Und jetzt bei Webfaction die Website einrichten und das Zertifikat hinzufügen.

Update Zertifikat

EIn Cronjob sollte wie folgt eingerichtet sein:

23 0 * * * "/home/<user>/.acme.sh"/acme.sh --cron --home "/home/<user>/.acme.sh" > /dev/null

Manueller Update

Um das Zertifikat zu erneuern, muss nun einfach die *.cer Datei im jeweiligen Ordner der Domain (e.g /home/<user>/.acme/<domain>/<domain>.cer erneut bei Webfaction hochgeladen bzw. copy/paste eingefügt werden (in das Feld: Certifcate).

Automatischer Update

Das folgende Python Script sollte dieses über die API von Webfaction automatisieren können (https://github.com/gregplaysguitar/acme-webfaction). NOT TESTET YET!