Synagios/nagrestconf: https einrichten

Aus ITwiki
Version vom 28. Oktober 2018, 13:24 Uhr von Flo84 (Diskussion | Beiträge) (Zertifikatsdateien kopieren: copy_sslcert.sh)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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.

War dieser Beitrag hilfreich?
Bitte stimme unten ab.
1
0
0
Es wurde seit Erstellung der Umfrage am 07:16, 2. Mär. 2018 eine Stimme abgegeben.
poll-id D41A09E23611B2DD2D060A059001F1E7