Synagios/nagrestconf: https einrichten
Ich gehe von einer (grundinstallierten) lauffäigen Synagios-Installation aus. In meiner Umgebung kommt eine DiskStation DS213j zum Einsatz, bei anderen Modellen sollte nachfolgend beschriebene Vorgehensweise zum Einrichten des https-Zugriffs aber identisch sein.
Zertifikatsdateien kopieren: copy_sslcert.sh
An meiner DiskStation habe ich ein Let's Encrypt-Zertifikat eingerichtet und dieses als Standard-Zertifikat definiert. Dieses Zertifikat möchte ich auch für den https-Zugriff auf die Synagios/nagrestconf verwenden. Um dies zu realisieren, wird folgendes Script copy_sslcert.sh per Cronjob im Abstand von 5 Minuten aufgerufen:
#!/bin/sh
# We need some variables
dstfldr="/volume1/@appstore/Synagios/nagios-chroot/etc/ca-certificates/mf"
certfldr="/usr/syno/etc/certificate/_archive"
defcertfldr=`cat $certfldr/DEFAULT`
# Check if dest folder exists
if [ -d "$dstfldr" ]; then
mkdir $dstfldr
fi
# Check if default ssl cert folder exists:
if [ -d "$certfldr/$defcertfldr" ]; then
# Copy certificate files to dstfldr
cp $certfldr/$defcertfldr/cert.pem $dstfldr
cp $certfldr/$defcertfldr/fullchain.pem $dstfldr
cp $certfldr/$defcertfldr/privkey.pem $dstfldr
fi
/usr/syno/sbin/synoservice --stop pkgctl-Synagios
sleep 5
/usr/syno/sbin/synoservice --start pkgctl-Synagios
dstfldr: der Zielordner, wo die Zertifikatsdateien hin kopiert werden. Wichtig: der Ordner muss irgendwo unter /volume1/@appstore/Synagios/nagios-chroot/ liegen, da Synagios in einer chroot-Umgebung ausgeführt wird. Empfehlenswert wäre der Speicherort wie im Script bereits hinterlegt, sonst muss dieser ggf. erstellt werden.
certfldr: der Standardspeicherort, wo die DiskStation für alle vorhandenen Zertifikate einen Unterordner anlegt
defcertfldr': wie eingangs erwähnt habe ich als Standard-Zertifikat das Let's Encrypt Zertifikat in der DiskStation-Konfig ausgewählt. In der Datei /usr/syno/etc/certificate/_archive/DEFAULT speichert Synology den Namen des Unterordners, wo diese Dateien abgelegt sind. Ich lese den Inhalt aus und kopiere im weiteren Script-Verlauf die 3 benötigten Dateien aus dem Standardzertifikatsordner nach dstfldr
Wichtig: nicht vergessen, das Script mit
chmod 700 copy_sslcert.sh
ausführbar zu machen.
Die Scriptdatei habe ich bei mir unter /var/scripts abgespeichert.
/etc/crontab
Da das Let's Encrypt-Zertifikat automatisch aktualisiert wird, führe ich das Script copy_sslcert.sh alle 5 Minuten über einen Cronjob aus. Editiere daher die Datei /etc/crontab und füge folgende Zeile ein:
*/5 * * * * root /var/scripts/copy_sslcert.sh
https aktivieren
Ich gehe von Apache- und Linux-Grundkenntnissen aus und werde hier nicht lange herumreden, wie man z. B. eine Textdatei bearbeitet. Die Anleitung ist schlank gehalten und konzentriert sich nur auf die wesentlichen, wichtigen Punkte.
Editiere zunächst die Datei /volume1/@appstore/Synagios/nagios-chroot/etc/apache2/ports.conf, sodass der Inhalt zum Schluss wie folgt aussieht:
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 8888
#<IfModule ssl_module>
# Listen 4443
#</IfModule>
#<IfModule mod_gnutls.c>
# Listen 4443
#</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Speichern, dann die Datei /volume1/@appstore/Synagios/nagios-chroot/etc/apache2/sites-enabled/000-default.conf:
#<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
# ServerAdmin webmaster@localhost
# DocumentRoot /var/www/html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
# ErrorLog ${APACHE_LOG_DIR}/error.log
# CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
#</VirtualHost>
<VirtualHost *:8888>
ServerAdmin admin@mydomain
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ca-certificates/mycerts/cert.pem
SSLCertificateKeyFile /etc/ca-certificates/mycerts/privkey.pem
SSLCertificateChainFile /etc/ca-certificates/mycerts/fullchain.pem
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Grob gesagt aktiviere ich https am Standard-Synagiosport 8888.
Nun muss noch das SSL-Modul aktiviert werden. Navigiere ins Verzeichnis
cd /volume1/@appstore/Synagios/nagios-chroot/etc/apache2/mods-enabled/
und führe hier folgenden Befehl aus:
sudo ln -s ../mods-available/ssl.load ssl.load
Zum Schluss muss REST noch angewiesen werden, ebenfalls über https zu kommunizieren. Die Anpassungen müssen in der Datei /volume1/@appstore/Synagios/nagios-chroot/etc/nagrestconf/nagrestconf.ini vorgenommen werden, nämlich bei resturl = von http auf https ändern:
; Configuration file for nagrestconf
;resturl = "https://127.0.0.1:8888/rest"
resturl = "https://127.0.0.1:8888/rest"
folder[] = "local"
restuser = "user"
restpass = "yourpassword"
; Use a pasword-less ssl key and certificate
;sslkey = "/path/to/key"
;sslcert = "/path/to/cert"
Sofern alles richtig gemacht wurde, die Zertifikate im korrekten Verzeichnis liegen, sollte nach einem Neustart der Synagios-Applikation (über den DSM App-Store) bei Aufruf von
https://<DiskStation-IP>:8888/nagrestconf
die Nagrestconf-Konfigurationswebseite geladen werden.