Viele NAS Benutzer nervt es, das beim Aufruf der Administrationsoberfläche die Warnmeldung erscheint: "Unsichere Webseite"!
Mit der Schaltfläche "Erweitert" kann man zwar zugreifen, aber die Seite wird weiter als "unsicher" eingestuft:
Wen das stört, der kann mit einem eigenen SSL Zertifikat diese Meldung umgehen. Dazu gibt es viele Möglichkeiten, z.B. Lets Encrypt.
Das soll jedoch zeitaufwändig und nicht ganz einfach sein (ich habe selbst (noch) keine Erfahrung damit), deshalb nutze ich openSSL.
Mit openSSL ist der Aufwand meines Erachtens relativ gering, dafür hat man dann seine Ruhe vor diesen nervigen Meldungen .
Ganz grob ein wenig Theorie vorweg:
Nur mit einem Host Zertifikat allein ist es nicht getan, man benötigt auch ein Root Zertifikat. Das Root Zertifikat wird als "vertrauenswürdige Authorität" dem eigenen Host/Browser hinzugefügt.
Danach werden alle Webseiten, die ein Host Zertifikat, ausgestellt von eben dieser Root Zertifikat Authorität besitzen, als "sicher" angesehen.
Der erste Schritt ist also, sich ein Root Zertifikat zu erstellen, danach werden die Host Zertifikate erstellt. Das alles kann openSSL für uns erledigen, und da openSSL i.d.R. bei jedem Linux dabei ist, haben wir alles an Bord, was wir benötigen. In diesem Fall benutzte ich eine Debian 10 VM zur Erstellung der Zertifikate.
Die Schritte im Einzelnen
1. Erstellung des root Zertifikates:
[root@localhost openSSLtest]# openssl genrsa -out myRoot.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
.............................................................+++++
.+++++
e is 65537 (0x010001)
[root@localhost openSSLtest]# openssl req -x509 -new -nodes -key myRoot.key -sha256 -days 3650 -out myRoot.crt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:DE
State or Province Name (full name) []:BY
Locality Name (eg, city) [Default City]:MCH
Organization Name (eg, company) [Default Company Ltd]:QNAP
Organizational Unit Name (eg, section) []:QNAP-testlab
Common Name (eg, your name or your server's hostname) []:myHost
Email Address []:admin@mycompany.com
[root@localhost openSSLtest]#
Alles anzeigen
Im Grunde genommen sind die o.a. Angaben egal, ich habe als Beispiel DE (Deutschland), BY (Bayern) und MCH (München) eingegeben. Der Common name ist wichtig, dazu später mehr!
Danach überprüfen wir, ob das Zertifikat richtig erstellt wurde:
[root@localhost openSSLtest]# openssl x509 -in myRoot.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
09:0c:93:3b:0c:f3:8f:df:81:58:85:ba:b9:f6:42:80:a5:80:cf:47
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = DE, ST = BY, L = MCH, O = QNAP, OU = QNAP-testlab, CN = myHost, emailAddress = admin@mycompany.com
Validity
Not Before: Jan 7 10:46:00 2022 GMT
Not After : Jan 5 10:46:00 2032 GMT
Subject: C = DE, ST = BY, L = MCH, O = QNAP, OU = QNAP-testlab, CN = myHost, emailAddress = admin@mycompany.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
…
X509v3 extensions:
X509v3 Subject Key Identifier:
5F:C2:3F:65:33:9A:26:3C:30:83:1B:15:3F:99:6A:A6:7A:0B:D7:5C
X509v3 Authority Key Identifier:
keyid:5F:C2:3F:65:33:9A:26:3C:30:83:1B:15:3F:99:6A:A6:7A:0B:D7:5C
X509v3 Basic Constraints: critical
CA:TRUE
Signature Algorithm: sha256WithRSAEncryption
07:ca:e1:cc:2a:dc:48:b3:83:d4:16:d1:17:53:d6:48:1e:cc:
Alles anzeigen
Auf die Zeilen24 und 25 ist zu achten, die müssen im Zertifikat zu sehen sein!
2. Importieren des root Zertifikats auf den Rechner
Die so erstellte .crt kopieren wir auf unseren PC (hier Windows) und installieren das Zertifikat einfach mit einem rechts-Klick:
Wird Firefox benutzt, muss man dort das root Zertifikat extra importieren:
Wenn man als Host einen Linux Rechner hat, wird das root Zertifikat anders installiert, hier ein Beispiel für ein Debian10/RedHat8:
cp myRoot.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust extract
cd /etc/pki/tls/certs/
openssl x509 -in ca-bundle.crt -text –noout
[root@localhost openSSLtest]# openssl x509 -in myRoot.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
09:0c:93:3b:0c:f3:8f:df:81:58:85:ba:b9:f6:42:80:a5:80:cf:47
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = DE, ST = BY, L = MCH, O = QNAP, OU = QNAP-testlab, CN = myHost, emailAddress = admin@mycompany.com
Validity
Not Before: Jan 7 10:46:00 2022 GMT
Not After : Jan 5 10:46:00 2032 GMT
Subject: C = DE, ST = BY, L = MCH, O = QNAP, OU = QNAP-testlab, CN = myHost, emailAddress = admin@mycompany.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
…
Alles anzeigen
3. Erstellen der Host Zertifikate (für den Webserver)
Dazu erstellen wir uns zunächst zwei Konfigurationsdateien:
myHost.csr.cnf
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
[dn]
C=DE
ST=BY
L=MCH
O=QNAP
emailAddress=admin@example.com
CN = myHost
myHost.ext.cnf
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = myHost
Alles anzeigen
In beiden Dateien müssen die Werte für CN und DNS.1 übereinstimmen und sollten mit dem Common Name übereinstimmen.
Erstellen des Hostzertifikates und auflisten des Verzeichnisinhaltes
[root@localhost openSSLtest]# openssl req -new -sha256 -nodes -out myHost.csr -newkey rsa:2048 -keyout myHost.key -config myHost.csr.cnf
Generating a RSA private key
..........................................................................................................+++++
.....................+++++
writing new private key to 'myHost.key'
-----
[root@localhost openSSLtest]# openssl x509 -req -in myHost.csr -CA myRoot.crt -CAkey myRoot.key -CAcreateserial -extfile myHost.ext.cnf -out myHost.crt -days 3650 -sha256
Signature ok
subject=C = DE, ST = BY, L = MCH, O = QNAP, emailAddress = admin@example.com, CN = myHost
Getting CA Private Key
[root@localhost openSSLtest]# ls -lisa
insgesamt 36
70574337 0 drwxr-xr-x. 2 root root 158 7. Jan 12:15 .
67153409 4 dr-xr-x---. 19 root root 4096 7. Jan 12:11 ..
70710749 4 -rw-r--r--. 1 root root 1371 7. Jan 12:15 myHost.crt
70710753 4 -rw-r--r--. 1 root root 1005 7. Jan 12:13 myHost.csr
70574373 4 -rw-r--r--. 1 root root 160 7. Jan 12:11 myHost.csr.cnf
70710750 4 -rw-r--r--. 1 root root 196 7. Jan 12:12 myHost.ext.cnf
70710741 4 -rw-------. 1 root root 1708 7. Jan 12:13 myHost.key
70710747 4 -rw-r--r--. 1 root root 1411 7. Jan 12:14 myRoot.crt
70752829 4 -rw-------. 1 root root 1679 7. Jan 12:15 myRoot.key
70752896 4 -rw-r--r--. 1 root root 41 7. Jan 12:15 myRoot.srl
Alles anzeigen
Auch das Host-Zertifikat kann (und sollte) geprüft werden:
[root@localhost openSSLtest]# openssl x509 -in myHost.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
5d:d3:a4:83:de:47:17:87:63:86:40:31:65:d0:2f:d3:56:72:09:94
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = DE, ST = BY, L = MCH, O = QNAP, OU = QNAP-testlab, CN = myHost, emailAddress = admin@mycompany.com
Validity
Not Before: Jan 7 11:15:16 2022 GMT
Not After : Jan 5 11:15:16 2032 GMT
Subject: C = DE, ST = BY, L = MCH, O = QNAP, emailAddress = admin@example.com, CN = myHost
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:b8:f3:a8:8a:71:7a:f9:c3:e3:07:6f:a3:35:0b:
00:a4:06:7f:a8:ef:fc:96:65:b0:c9:bf:d6:39:08:
Alles anzeigen
4 . Installieren des Zertifikates in einem Webserver, meist befinden sich die Angaben in der httpd.conf:
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLSessionCacheTimeout 300
SSLEngine on
SSLCertificateFile "conf/myHost.crt"
SSLCertificateKeyFile "conf/myHost.key"
BrowserMatch ".*MSIE.*" \
Die beiden Dateien müssen natürlich in dem in der .conf Datei angegebenen Verzeichnis existieren.
5. Import der Zertifikate in das QNAP NAS
Hier erleichtert QNAP den Import eines eigenen Zertifikates, da wir die GUI benutzen können (Anm.; es soll auch per CLI gehen, aber die von QNAP angebenene Vorgehensweise hat bei mir nicht funktioniert!).
Die Schritte im Einzelnen als Screenshots:
Nun 2x (!) Apply drücken!
Danach die Seite neu laden (evtl. ist eine Neuanmeldung erforderlich):
Ab sofort werden wir von den nervigen Meldungen verschont .
Kommentare 8
FSC830 Autor
Bin erst heute dazu gekommen und habe eine VM mit Windows 11 installiert.
Sowohl unter Firefox als auch im Edge kein Problem.
Das Root Zertikat installiert und alles war wie oben beschrieben, keine "diese Webseite ist unsicher" Meldung mehr.
UR-Kef
Hallo zusammen,
mich nervt einfach nur die Sicherheitsmeldung im LAN beim Zugriff auf das NAS, wohl wissend das dies kein Sicherheitsproblem ist. Aber ich wollte der Sache mal auf den Grund gehen und habe in der Folgezeit einiges ausprobiert, sowohl Anleitungen aus diesem Forum als auch entsprechend des QNAP Tutorials (SSL-Zertifikate zur Verbesserung ....). Ich habe auf mehreren Wegen Zertifikate und Schlüssel erzeugt, zum Schluss mit der eingebauten Lösung "Selbstsigniertes Zertifikat erstellen". Die Zertifikate dann auf den PC (Win11) heruntergeladen und entpackt: SSLcertificate.crt und SSLprivatekey.key . Beim Erstellen des Zertifikats habe ich den Servernamen laut den Einstellungen des NAS als FQDN angegeben.
Den Import des Schlüssels in Win11 habe ich auf mehren Wegen versucht "certmgr.msc" und auch direkt über den Browser (Edge) "Einstellungen - Datenschutz - Sicherheit - Zertifikate verwalten" - beides ohne den erhofften Erfolg: weiterhin Sicherheitsmeldung beim Zugriff auf das NAS. Ist es überhaupt möglich, mit selbsterstellten Zertifikaten in einer Win11 Umgebung diese Meldungen bei Zugriffen im LAN "wegzubekommen" ?
Ich habe zwei TS231P mit je zwei HDs und neuester FW (QTS 5.0.1.227) im Einsatz. Eins nur lokal, das zweite per myqnapcloud und Let's Encrypt auch von außen erreichbar. Die Fragestellung oben bezieht sich auf den "einfachen" Fall des Zugriffs im LAN.
Nur am Rande: der https-Zugriff über die myqnapcloud funktioniert einwandfrei.
Für jeden Tipp dankbar!
Uli
FSC830 Autor
Habs aus Versehen die Antwort als neuen Blogeintrag verfasst.
Unter Win11 hatte ich auch keine Probleme die Zertifikate einzubinden.
Gruss
Mavalok2
Jetzt muss ich mal nachfragen:
Das Zertifikat für die WebGUI wird ja nur für HTTPS benötigt. Wieso HTTPS im privaten Umfeld? Im eigenen Netzwerk bringt da HTTPS etwas an Sicherheit, im Normalfall? Von Aussen sichert ja VPN ab und ohne VPN von Aussen auf die WebGUI, nun ja. Dafür wird doch ohnehin ein öffentliches Zertifikat benötigt. Das ist ja nur ein lokales Zertifikat. Oder habe ich da einen Knoten in meiner Denke.
FSC830 Autor
Das war nur reine Spielerei, ich wollte mich etwas mit openSSL befassen.
Einen Nutzen hat es bei mir tatsächlich nicht.
Zugriff vom Internet ohne VPN gibt es bei mir auch nicht.
ckuetbach
Kleine Anmerkung zum Firefox:
Man kann im Firefox dafür sorgen, dass Zertifikaten im Windows Store vertraut wird. Dazu muss man mit about:config den Wert für security.enterprise_roots.enabled auf true
Siehe Doku bei Mozilla: Zertifizierungsstellen in Firefox einrichten | Hilfe zu Firefox für Unternehmen
FSC830 Autor
Top! "Again somewhat learned!" meinte Loddar....
ckuetbach
Eine weitere Anmerkung:
Man kann das auch komplett über die QNAP Oberfläche machen, solange man den privaten Schlüssel nicht für etwas anderes benötigt.
Es gibt die Einstellung "create self signed certificate". Man kann dann im Browser auf das Schloß drücken und das noch nicht vertrauenswürdige Zertifikat herunterladen (als pk7 Datei inklusive möglicher Zwischenzertifikate). Und das wiederum kann man in Windows importieren. Erspart ein paar Aufrufe auf der Konsole