Skip to content

Instantly share code, notes, and snippets.

@killerbees19
Last active May 27, 2017 10:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save killerbees19/6727296a280d5af41cb57ee088ab70d0 to your computer and use it in GitHub Desktop.
Save killerbees19/6727296a280d5af41cb57ee088ab70d0 to your computer and use it in GitHub Desktop.
Synology NAS mit Let's Encrypt (über getssl)

Achtung: Wichtiger Hinweis…

BITTE NUR AUSFÜHREN, WENN DU GANZ GENAU WEISST, WAS DU TUST! VERWENDUNG AUF EIGENE GEFAHR. DU KÖNNTEST DIR DEINE DISKSTATION UNBRAUCHBAR MACHEN. DU BIST AUF DICH ALLEINE GESTELLT.

Die beschriebene Methode funktioniert nur mit DSM 5.2! Neuere DSM-Versionen arbeiten intern komplett anders. Bei älteren Versionen müssen Pfade und Startscripte angepasst werden.

Getestet mit DSM 5.2-5967 Update 2

Vorbereitungen

Damit die automatische Einbindung funktioniert, muss SSL/TLS auf der Diskstation bereits über ein importiertes Zertifikat aktiviert worden sein. Außerdem muss getssl für die ACME-DNS-Challenge eingerichtet sein. Ohne API des Domainregistrars wird es also nicht funktionieren!

Damit nicht die Gefahr besteht, dass man sich aus dem DSM aussperrt, sollte man die Umleitung auf HTTPS sowie HSTS temporär deaktivieren. Der Zugriff über HTTP sollte nun wieder möglich sein.

SSH muss aktiviert sein und es müssen Keyfiles eingerichtet werden. Die nachfolgende Änderung muss bei jedem DSM-Update erneut durchgeführt werden:

mkdir -p ~/.ssh
chmod 0700 ~/.ssh
touch .ssh/authorized_keys
chmod 0600 .ssh/authorized_keys
vi .ssh/authorized_keys

Bitte kurz einmal den Login über SSH mittels Keyfile testen.

getssl Domain-Konfiguration

Der Rest ist nichts besonderes mehr. Host in der ~/.ssh/config anlegen, Keyfile ohne Passwort in einem Ordner abspeichern und die getssl-Konfiguration für die neue Domain anlegen:

#SANS=""
SERVER_TYPE="5001"

DOMAIN_CHAIN_LOCATION="ssh:diskstation:/usr/syno/etc/ssl/ssl.intercrt/server-ca.crt"
DOMAIN_CERT_LOCATION="ssh:diskstation:/usr/syno/etc/ssl/ssl.crt/server.crt"
DOMAIN_KEY_LOCATION="ssh:diskstation:/usr/syno/etc/ssl/ssl.key/server.key"
RELOAD_CMD="ssh diskstation '/bin/sh -c \"/usr/syno/sbin/synoservicectl --reload httpd-sys && /usr/syno/sbin/synoservicectl --reload httpd-user && /usr/syno/sbin/synoservicectl --reload ftpd\"'"

Fertig! Eine vollständige Anleitung zum Abtippen gibt es absichtlich nicht, damit man ein wenig nachdenkt, bevor man es blind ausführt.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment