Für die Absicherung der Kommunikation mit Synology Diskstation's benötigt man Zertifikate. Ein solches Zertifikat ist bereits auf den Synology Diskstation installiert. Leider zeigt zum Beispiel der Google Chrome Browser an, dass das Zertifikat ungültig ist weil er die Zertifizierungsstelle nicht kennt. Um dieses Problem zu beheben benötigt man ein Zertifikat das von der Lokalen Zertifizierungsstelle ausgestellt worden ist und die dem Browser auch bekannt ist. Das lässt sich eigentlich leicht mit einem auf der Diskstation generierten Key und einem CSR (Certificate Signing Request) erreichen. Diesen reicht man bei der Zertifizierungsstelle (CA) ein und man bekommt ein gültiges Zertifikat ausgestellt. Eigentlich ganz einfach. Aber es ist wieder einmal nicht so einfach wie es zuerst aussieht. Dieser Beitrag beschreibt die Erstellung eines gültigen Zertifikates für eine Synology Diskstation in einer Domainumgebung.

Da bei der Erstellung des CSR über das DSM der Synology die SAN's (Subject Alternate Name) nicht mit geschrieben werden muss der CSR händisch auf der Konsole der Synology erstellt werden. Andernfalls bekommt man trotz gültigem Zertifikat ein ERR_CERT_COMMON_NAME_INVALID im Browser angezeigt.

Dazu ist es erforderlich eine zusätzliche openssl Konfigurationsdatei auf der Synology zu erstellen. Wichtig sind dabei die Einträge die auf die SAN's verweisen. Der Rest sind die erforderlichen Angaben für das Zertifikat. Zunächst meldet man sich mit Administratorrechten an der Konsole der Synology an und erstellt folgende Datei. 

vi /volume1/@tmp/syno-csr-openssl.cnf

Mit folgendem Inhalt

[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = DE
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Deutschland
localityName = Locality Name (eg, city)
localityName_default = Stadt
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Firma
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Certificate Authority
commonName = FQDN or Name
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
emailAddress_default = Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!mail.de

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = nein

[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = server.domaine.local
DNS.2 = server
IP.1 = IP-Adresse

Als erstes muss der Server Schlüssel erstellt werden.

openssl genrsa -out /volume1/@tmp/server.key 2048

Danach kann man die Zertifikatsanforderung (CSR) erstellen.

openssl req -out /volume1/@tmp/server.csr -key /volume1/@tmp/server.key -config /volume1/@tmp/syno-csr-openssl.cnf -new

Zur Kontrolle schauen wir uns die Zertifikatsanforderung noch einmal an. Hier nur ein Beispiel. Wieder sind die Einträge zu den Subject Alternative Name wichtig. Auch noch wichtig ist, dass der "Signature Algorithm" den Wert "sha256WithRSAEncryption" besitzt. SHA1 Signierte Zertifikate werden z.B. von Google Chrome seit Februar 2017 nicht mehr unterstützt und man bekommt ein  ERR_CERT_WEAK_SIGNATURE_ALGORITHM Fehlermeldung im Browser angezeigt. Dem Zertifikat, obwohl es Gültig ist wird ebenfalls nicht vertraut.

openssl req -in /volume1/@tmp/server.csr -noout -text

Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=DE, ST=Deutschland, L=Leipzig, O=Firma AG, OU=IT, CN=server.domain.local/emailAddress=Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:9d:44:d6:ff:9b:80:b7:10:2c:71:75:bc:e0:8b:
....
3e:01:91:78:a5:a6:7f:19:95:68:b5:ed:c3:39:2c:
Exponent: 65537 (0x10001)
Attributes:
Requested Extensions:
X509v3 Key Usage:
Key Encipherment, Data Encipherment
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Subject Alternative Name:
DNS:server.domaine.local, DNS:server, IP Address:192.168.x.y
Signature Algorithm: sha256WithRSAEncryption
6f:85:c2:93:59:32:a9:66:3f:66:96:4e:42:ec:f4:b5:a2:10:
....
75:a8:7a:fc:72:ff:2f:64:1f:45:60:b3:f1:bb:f4:c8:7d:ee:

Im nächsten Schritt leitet man die von OpenSSL generierte Anforderung an die AD-Zertifizierungsstelle weiter. Also wechseln wir zur Windows CA um das Zertifikat zu erstellen. Dafür verwende ich certreq.exe. Das ist im Gegensatz zu der Weboberfläche immer vorhanden. Voraussetzung ist, dass der CSR und der Key über eine sichere Verbindung auf die CA kopiert wurden. Hier im Beispiel nach C:\csr auf der CA. Das Kommandozeilen-Tool erlaubt die Spezifizierung der erforderlichen Zertifikatvorlage, so dass man gleich das WebServer-Template angeben kann.

certreq -submit -attrib "CertificateTemplate:WebServer" C:\csr\server.csr

Nach dem Ausstellen des Zertifikats öffnet certreq einen Dialog, der den Export im X509-Format anbietet. Hier gibt man als Dateinamen server.crt an. Nun kann man das Zertifikat auf der Synology Diskstation installieren und an den entsprechend Dienst binden. Standard ist hier erst einmal "Systemvoreinstellung".

Kommentare powered by CComment