SynologyLogo_enu_no_slogan_for_web.pngWie ich bereits in meiner Serie zu XBMC/Kodi/Raspberry und dem Synology NAS DS213J ausgeführt habe, hoste ich mehrere Webseiten auf meinem Synology NAS. Es handelt sich dabei um meine eigene (c-eckl.de), die Website meiner Frau und mir (ac-eckl.de), ein Internetauftritt meiner Mutter (vereinsbuero.net) und – seit heute – ein Blog meiner Frau (sonnigmitohnewolken.de).

Damit sind es nun vier Domains auf einem NAS die bisher, alle mit ein und demselben SSL-Zertifikat aufgerufen wurden. Das führte natürlich zu Warnungen seitens der genutzten Browser, dem galt es heute endlich den Gar auszumachen. Im folgenden will ich einen kurzen Überblick über die benötigten Schritte geben.

Diese Anleitung wurde erfolgreich auf einer Synology DS 213J mit DSM 5.2 getestet!

Meine SSL-Zertifikate hole ich mir von StartCOM, eine Anleitung hatte ich hier schon einmal verfasst. Alternative Anbieter gibt es einige, unter DSM 6.0 angeblich ja sogar direkt integriert (Let’s encrypt).

Damit wir an die Konfigurationsdateien des NAS herankommen, müsst ihr das SSH-Terminal aktiviert haben. Anschließend verbindet ihr euch mit einem geeigneten Programm (Putty) auf euer NAS. Die Konfigurationsdateien der durch den Nutzer definierten Virtuellen Webseiten (Virtuelle Hosts) liegen unter folgendem Pfad:

/etc/httpd/sites-enabled-user/

Die zwei Dateien httpd-ssl-vhost.conf-user und httpd-vhost.conf-user sind unser Ziel. Die erste definiert die mittels HTTPS angesprochenen Websites, die zweite die der HTTP-Seiten.

Der Inhalt der SSL-Konfiguration für zwei meiner Seiten sieht beispielhaft wie folgt aus:

<VirtualHost *:443>
ServerName www.c-eckl.de
DocumentRoot "/var/services/web/ceckl"
ErrorDocument 403 "/webdefault/error.html"
ErrorDocument 404 "/webdefault/error.html"
ErrorDocument 500 "/webdefault/error.html"
SSLEngine on
</VirtualHost>
<VirtualHost *:443>
ServerName ac-eckl.de
DocumentRoot "/var/services/web/aceckl"
ErrorDocument 403 "/webdefault/error.html"
ErrorDocument 404 "/webdefault/error.html"
ErrorDocument 500 "/webdefault/error.html"
SSLEngine on
</VirtualHost>
<VirtualHost *:443>
ServerName www.ac-eckl.de
DocumentRoot "/var/services/web/aceckl"
ErrorDocument 403 "/webdefault/error.html"
ErrorDocument 404 "/webdefault/error.html"
ErrorDocument 500 "/webdefault/error.html"
SSLEngine on
</VirtualHost>

Alle Domains die auf euer NAS geforwarded werden und NICHT unter den Virtuellen Hosts eingetragen wurden, weißen auf euer normales Standard web-Verzeichnis. Für alle anderen unter Virtual Hosts eingetragenen Webseiten werden, wie oben zu sehen, Einträge in der SSL-vhost-Konfigurationsfile erzeugt.

Dies betrifft in diesem Beispiel c-eckl.de und die zweite Domain ac-eckl.de nebst Subdomain www.ac-eckl.de.

Damit der Aufruf von ac-eckl.de oder www.ac-eckl.de keinen Zertifikatfehler hervorruft, benötige ich für diese Domain ein weiteres SSL-Zertifikat. Dies lässt sich schnell bei StartCOM oder Let’s encrypt besorgen (s.o.). Sind alle benötigten Dateien vorhanden (Keyfile, Zertifikat und Root-Zertifikat), so können wir sie auf dem NAS im jeweiligen Ordner ablegen.

Die SSL-Zertifikate des NAS liegen unter:

/usr/syno/etc/ssl/

Die jeweiligen Dateien werden in den Ordnern ssl.crt (Zertifikat), ssl.intercrt (Root-Zertifikat) und ssl.key (Key) abgelegt. Nun müssen wir dem Webserver (Apache) nur noch sagen, für welche Domain, welches Zertifkat verwendet werden soll. Wird im Konfigurationsfile diesbezüglich nichts definiert, so gilt das Zertifikat des NAS, in meinem Fall das Zertifkat für c-eckl.de (Welches bei allen anderen Domains natürlich zu Fehlern führt!).

<VirtualHost *:443>
ServerName www.c-eckl.de
DocumentRoot "/var/services/web/ceckl"
ErrorDocument 403 "/webdefault/error.html"
ErrorDocument 404 "/webdefault/error.html"
ErrorDocument 500 "/webdefault/error.html"
SSLEngine on
</VirtualHost>
<VirtualHost *:443>
ServerName ac-eckl.de
DocumentRoot "/var/services/web/aceckl"
ErrorDocument 403 "/webdefault/error.html"
ErrorDocument 404 "/webdefault/error.html"
ErrorDocument 500 "/webdefault/error.html"
SSLEngine on
SSLCertificateFile /usr/syno/etc/ssl/ssl.crt/server_ace.crt
SSLCertificateKeyFile /usr/syno/etc/ssl/ssl.key/server_ace.key
SSLCertificateChainFile /usr/syno/etc/ssl/ssl.intercrt/server-ca_ace.key
</VirtualHost>
<VirtualHost *:443>
ServerName www.ac-eckl.de
DocumentRoot "/var/services/web/aceckl"
ErrorDocument 403 "/webdefault/error.html"
ErrorDocument 404 "/webdefault/error.html"
ErrorDocument 500 "/webdefault/error.html"
SSLEngine on
SSLCertificateFile /usr/syno/etc/ssl/ssl.crt/server_ace.crt
SSLCertificateKeyFile /usr/syno/etc/ssl/ssl.key/server_ace.key
SSLCertificateChainFile /usr/syno/etc/ssl/ssl.intercrt/server-ca_ace.key
</VirtualHost>

Wir ergänzen also einfach die folgenden drei Zeilen für alle definierten vhosts die wir mit einem eigenen Zertifikat versorgen wollen.

SSLCertificateFile /usr/syno/etc/ssl/ssl.crt/XXX.crt
SSLCertificateKeyFile /usr/syno/etc/ssl/ssl.key/XXX.key
SSLCertificateChainFile /usr/syno/etc/ssl/ssl.intercrt/XXX.key

Damit die Zertifikate vom Apache-Server ausgegeben werden, ist ein Neustart erforderlich. Dies geht über die SSH-Konsole wie folgt:

/user/syno/sbin/synoservicecfg --restart httpd-user

Ob der Server nun auch läuft lässt sich mit folgende Code-Zeile abfragen:

/user/syno/sbin/synoservicecfg --status httpd-user

WICHTIG: Jede Änderung im Menü: Systemsteuerung -> Webdienste -> „Virtueller Host“ überschreibt die soeben editierte Datei httpd-ssl-vhost.conf-user, alle Änderungen gehen verloren!

Daher mein Tip: Legt eine Kopie eurer editierten Datei in einem Ordner eurer Wahl auf dem NAS ab, so könnt ihr im Falle eines Überschreibens seitens des Systems alle bequem zurück kopieren.

Am Ende sieht es bei euch hoffentlich so aus:

 domain_ssl

Mehrere Domains mit eigenen SSL-Zertifikaten auf einem Synology NAS
Markiert in: