Hallo liebe Synology- und SSL-Experten,
heute habe ich einige Fragen zum Thema selbst erstelltes Zertifikat auf der Synology DS an Euch. Ich habe mich mittlerweile in einiges eingelesen, das ich hier und an anderen Stellen im Netz gefunden habe, zu befriedigenden Antworten bin ich aber bisher nicht gekommen - insbesondere bin ich mir nicht sicher, ob ich alles richtig verstanden habe - und bitte deshalb Euch um Hilfe und Antworten. Ich mache es etwas ausführlicher, weil Ihr dann vielleicht meine (Denk-)Fehler erkennen könnt und möglicherweise andere Hilfesuchende aus diesem Thread so besser Informationen ziehen können.
Mein Anwendungsszenario ist m.E. nicht allzu ungewöhnlich: Ich möchte meine DS hauptsächlich innerhalb meines LANs, ausgewählte Dienste (CardDAV, CalDAV und Mail Server IMAP) auch von außerhalb via Internet, DDNS (ich nutze MyFritz) und Portfreigaben auf meiner FRITZ!Box nutzen. Das heißt, ich habe gezwungenermaßen zwei Adressen: intern die lokale IP bzw. den Namen der NAS, außerhalb die DDNS-Adresse xyz.myfritz.net.
Mittlerweile habe ich gelesen, dass die FRITZ!Box zwar NAT-Loopback beherrscht, aber nach meinem Verständnis müsste ich trotzdem auch für die rein lokale Verbindung unter dem DDNS-Namen die gesamte Reihe an dafür notwendigen Ports weiterschalten. Das möchte ich ja gerade vermeiden.
Folglich muss ich auf allen meinen mobilen Geräten, die das heimische Netz auch verlassen, für Mailserver und DAV-Dienste die DDNS-Adresse hinterlegen. Für Dienste, die ich nur per VPN oder im lokalen Netz nutzen und nicht per Portweiterleitung nach außen öffnen möchte, muss ich die lokale Server-IP hinterlegen. Auf ausschließlich lokal genutzten Geräten kann ich auch für den Mailserver und die DAV-Dienste die lokale Server-IP hinterlegen.
Nun beginnt mein Problem: Ich möchte alle Verbindungen - lokal und von außerhalb - per SSL absichern. Hierfür würde mir ein selbst unterzeichnetes Zertifikat genügen, da ich dieses ja bei einer Erstverbindung auf dem jeweiligen Gerät anzeigen und bestätigen kann. Die Bestätigung durch eine externe Stelle (StartSSL o.ä.) brauche ich deshalb nicht und sie ist ja auch für eine lokale IP und eine DDNS-Adresse nicht zu bekommen.
Um Verständnisprobleme meinerseits auszuschließen, beschreibe ich kurz, wie ich die Funktionsweise von SSL-Zertifikaten begreife und bitte um Hinweise, wenn das so nicht stimmt:
Ich lege auf dieser Wissensbasis also los und erstelle im DSM ein selbst signiertes Zertifikat:
Soweit, so ausreichend für die lokale Anwendung und Ansteuerung des Servers über eine interne Adresse.
Nun dachte ich mir, für die SSL-Verbindung auf meine DS via Internet müsste ich doch auch meine DDNS-Adresse beim Erstellen des Zertifikats angeben können. Im Gegensatz zu externen Zertifizierungsstellen überprüft die DS die Adresse bei der Zertifikatserstellung ja nicht und die angegebene Adresse dient ja nur der Prüfung durch das Client-Gerät, ob das Zertifikat des antwortenden Servers für die jeweilige Adresse auch das richtige sein kann. Dass die TLD myfritz.net komischerweise nicht mir gehört, sollte bei einem selbst signierten Zertifikat also keine Rolle spielen. Meine Vermutung wird auch durch diesen Thread bestätigt: http://www.synology-forum.de/showthread.html?40141-Wie-erstelle-ich-ein-g%C3%BCltiges-SSL-Zertifikat-f%C3%BCr-synology-me-DDNS-ohne-eigene-Dom%C3%A4ne (leider funktioniert der Link in Post #3 nicht mehr).
Allerdings möchte ich ja, dass sowohl meine interne Server-Adresse als auch meine DDNS-Adresse durch das SSL-Zertifikat abgedeckt werden, da sich sonst die über die jeweils andere Adresse per SSL eingewählten Clients über den falschen Namen beschweren und leider in einem Fall von Drittsoftware (CalDAV Synchronizer) ohne Auswahl durch den Nutzer ganz sperren. Zwei Zertifikate für einen Server sind nach Aussage einiger Quellen denklogisch nicht möglich, weil die Verschlüsselung bereits stattfindet, wenn der Server noch nicht weiß, über welche Adresse er angesteuert wurde (Zwischenfrage: stimmt das so?)
Im Netz habe ich hierzu nach einigem Recherchieren das Stichwort "Multidomain SSL-Zertifikat" gefunden. Die dort angegeben Begriffe haben mich an einen Punkt in der Zertifikatserstellung in der DS erinnert: Betreff alternativer Name. Unter diesem habe ich also für einen ersten LAN-internen Test den Servernamen als Alternative zur unter Common Name eingegebenen IP-Adresse des Servers eingegeben. Das Ergebnis: Mein Browser akzeptiert eine SSL-Verbindung nur noch unter dem als Betreff alternativer Name angegebenen Servernamen und ignoriert anscheinend den Common Name. Ist das Verhalten so richtig? Muss ich also bei Nutzung des Eintrags Betreff alternativer Name alle gewünschten Adressen dort eingeben und der Common Name wird bedeutungslos?
Wer bis hier gelesen hat: vielen Dank allein dafür . Ich wäre dankbar für folgende Antworten:
Viele Grüße und ein schönes Restwochenende
Favi
heute habe ich einige Fragen zum Thema selbst erstelltes Zertifikat auf der Synology DS an Euch. Ich habe mich mittlerweile in einiges eingelesen, das ich hier und an anderen Stellen im Netz gefunden habe, zu befriedigenden Antworten bin ich aber bisher nicht gekommen - insbesondere bin ich mir nicht sicher, ob ich alles richtig verstanden habe - und bitte deshalb Euch um Hilfe und Antworten. Ich mache es etwas ausführlicher, weil Ihr dann vielleicht meine (Denk-)Fehler erkennen könnt und möglicherweise andere Hilfesuchende aus diesem Thread so besser Informationen ziehen können.
Mein Anwendungsszenario ist m.E. nicht allzu ungewöhnlich: Ich möchte meine DS hauptsächlich innerhalb meines LANs, ausgewählte Dienste (CardDAV, CalDAV und Mail Server IMAP) auch von außerhalb via Internet, DDNS (ich nutze MyFritz) und Portfreigaben auf meiner FRITZ!Box nutzen. Das heißt, ich habe gezwungenermaßen zwei Adressen: intern die lokale IP bzw. den Namen der NAS, außerhalb die DDNS-Adresse xyz.myfritz.net.
Mittlerweile habe ich gelesen, dass die FRITZ!Box zwar NAT-Loopback beherrscht, aber nach meinem Verständnis müsste ich trotzdem auch für die rein lokale Verbindung unter dem DDNS-Namen die gesamte Reihe an dafür notwendigen Ports weiterschalten. Das möchte ich ja gerade vermeiden.
Folglich muss ich auf allen meinen mobilen Geräten, die das heimische Netz auch verlassen, für Mailserver und DAV-Dienste die DDNS-Adresse hinterlegen. Für Dienste, die ich nur per VPN oder im lokalen Netz nutzen und nicht per Portweiterleitung nach außen öffnen möchte, muss ich die lokale Server-IP hinterlegen. Auf ausschließlich lokal genutzten Geräten kann ich auch für den Mailserver und die DAV-Dienste die lokale Server-IP hinterlegen.
Nun beginnt mein Problem: Ich möchte alle Verbindungen - lokal und von außerhalb - per SSL absichern. Hierfür würde mir ein selbst unterzeichnetes Zertifikat genügen, da ich dieses ja bei einer Erstverbindung auf dem jeweiligen Gerät anzeigen und bestätigen kann. Die Bestätigung durch eine externe Stelle (StartSSL o.ä.) brauche ich deshalb nicht und sie ist ja auch für eine lokale IP und eine DDNS-Adresse nicht zu bekommen.
Um Verständnisprobleme meinerseits auszuschließen, beschreibe ich kurz, wie ich die Funktionsweise von SSL-Zertifikaten begreife und bitte um Hinweise, wenn das so nicht stimmt:
- Eine übergeordnete CA stellt ein Zertifikat für einen Server unter einer bestimmten Domain aus. Dass sie hierfür u.a. bestimmte Dateien des Servers braucht, lasse ich mal außen vor, da ich ja kein extern signiertes Zertifikat erstellen möchte.
- Ist diese CA in meinem Gerät als vertrauenswürdige Stammzertifizierungsstelle hinterlegt, vertraut mein Gerät jedem Server, der ein Zertifikat vorweist, das in der Zertifikatskette auf das Stammzertifikat zurückzuführen ist und das für den Domainnamen ausgestellt ist, unter dem der Server angesteuert wird.
- Alternativ kann ich z.B. in meinem iPhone auch ohne Stammzertifikat dem jeweiligen Server-Zertifikat vertrauen, wodurch genau dieses Zertifikat einer Ausnahmeliste hinzugefügt wird (die seit iOS 7 oder 8 nicht mehr zu ändern ist außer durch Zurücksetzen der Netzwerkeinstellungen, aber das ist ein anderes leidiges Thema und betrifft Apple...)
- Das von der Synology DS selbst erstellte Server-Zertifikat server.crt wird gemeinsam mit seinem Schlüssel automatisch auf dem Server hinterlegt. Das übergeordnete Stammzertifikat, mit dem sich die DS das Server-Zertifikat selbst signiert hat, lässt sich als ca.crt exportieren und als vertrauenswürdige Stammzertifizierungsstelle auf dem jeweiligen Client-Gerät hinterlegen. Danach funktioniert auf diesem Gerät alles so, als ob der Server von einer anerkannten externen Stelle zertifiziert worden wäre.
Ich lege auf dieser Wissensbasis also los und erstelle im DSM ein selbst signiertes Zertifikat:
- Als Common Name gebe ich die lokale IP-Adresse meiner DS an. Das habe ich bereits vor Wochen bei der Erstinbetriebnahme so gemacht (bisher habe ich die DS nur über das LAN genutzt). Alternativ habe ich auch probiert, den internen Servernamen (angegeben unter Systemsteuerung > Netzwerk > Allgemein) hier anzugeben.
- Nach Erstellung des Zertifikats exportiere ich die ca.crt und füge diese den vertrauenswürdigen Stammzertifizierungsstellen in meinem Windows 10 hinzu (um keine Verwirrung zu stiften, lösche ich immer alle vorher zu Testzwecken auf der Diskstation erstellten ca.crt aus diesem Verzeichnis, dort befindet sich also immer nur das aktuelle Stammzertifikat).
- Beide Varianten bei der Auswahl des Common Name (IP oder Servername) führen dazu, dass die DS ausschließlich unter der jeweils angegebenen Adresse mit zusätzlicher Eingabe des Ports 5001 (obwohl die automatische Weiterleitung von http auf https aktiviert ist, aber das ist nur eine kleine andere Baustelle) erreichbar ist. Bei Eingabe der jeweils anderen Netzwerkadresse hätte ich ja einfach eine Meldung über das nicht passende Server-Zertifikat erwartet, Microsoft Edge sperrt den Zugriff aber komplett. It's not a bug, it's a feature!
Soweit, so ausreichend für die lokale Anwendung und Ansteuerung des Servers über eine interne Adresse.
Nun dachte ich mir, für die SSL-Verbindung auf meine DS via Internet müsste ich doch auch meine DDNS-Adresse beim Erstellen des Zertifikats angeben können. Im Gegensatz zu externen Zertifizierungsstellen überprüft die DS die Adresse bei der Zertifikatserstellung ja nicht und die angegebene Adresse dient ja nur der Prüfung durch das Client-Gerät, ob das Zertifikat des antwortenden Servers für die jeweilige Adresse auch das richtige sein kann. Dass die TLD myfritz.net komischerweise nicht mir gehört, sollte bei einem selbst signierten Zertifikat also keine Rolle spielen. Meine Vermutung wird auch durch diesen Thread bestätigt: http://www.synology-forum.de/showthread.html?40141-Wie-erstelle-ich-ein-g%C3%BCltiges-SSL-Zertifikat-f%C3%BCr-synology-me-DDNS-ohne-eigene-Dom%C3%A4ne (leider funktioniert der Link in Post #3 nicht mehr).
Allerdings möchte ich ja, dass sowohl meine interne Server-Adresse als auch meine DDNS-Adresse durch das SSL-Zertifikat abgedeckt werden, da sich sonst die über die jeweils andere Adresse per SSL eingewählten Clients über den falschen Namen beschweren und leider in einem Fall von Drittsoftware (CalDAV Synchronizer) ohne Auswahl durch den Nutzer ganz sperren. Zwei Zertifikate für einen Server sind nach Aussage einiger Quellen denklogisch nicht möglich, weil die Verschlüsselung bereits stattfindet, wenn der Server noch nicht weiß, über welche Adresse er angesteuert wurde (Zwischenfrage: stimmt das so?)
Im Netz habe ich hierzu nach einigem Recherchieren das Stichwort "Multidomain SSL-Zertifikat" gefunden. Die dort angegeben Begriffe haben mich an einen Punkt in der Zertifikatserstellung in der DS erinnert: Betreff alternativer Name. Unter diesem habe ich also für einen ersten LAN-internen Test den Servernamen als Alternative zur unter Common Name eingegebenen IP-Adresse des Servers eingegeben. Das Ergebnis: Mein Browser akzeptiert eine SSL-Verbindung nur noch unter dem als Betreff alternativer Name angegebenen Servernamen und ignoriert anscheinend den Common Name. Ist das Verhalten so richtig? Muss ich also bei Nutzung des Eintrags Betreff alternativer Name alle gewünschten Adressen dort eingeben und der Common Name wird bedeutungslos?
Wer bis hier gelesen hat: vielen Dank allein dafür . Ich wäre dankbar für folgende Antworten:
- Stimmen meine Annahmen zur groben Funktionsweise von SSL-Zertifikaten?
- Handelt es sich beim Feld Betreff alternativer Name bei der Zertifikatserstellung im DSM um eine Möglichkeit, ein "Multidomain SSL-Zertifikat" zu erstellen?
- Wenn der zweite Punkt mit ja zu beantworten ist: Was genau muss ich dann in dieses Feld eingeben, um das Zertifikat sowohl für die Ansteuerung meiner DS unter ihrer lokalen IP, als auch unter ihrer DDNS-Adresse zu nutzen?
Viele Grüße und ein schönes Restwochenende
Favi