Das ab 2016 eingeführte Anmeldesystem an die KSDB basiert auf einer Benutzerauthorisierung durch Client-Zertifikate. Diese Zertifikate werden auf dem Server erstellt und in die HOME-Verzeichnisse der Benutzer kopiert.
Die Benutzer werden in der Datenbank angelegt als <user>@192.168.7.%, sodass sie sich nur noch anmelden können, wenn sie sich im Hausnetz befinden, was die Sicherheit erhöht.
Der Prozess gliedert sich nun in die Blöcke
Auf dem Server benötigen wir zwei Zertifikate. Das erste ist ein sogenanntes CA-Zertifikat und bildet die Authorisierungs-Instanz. Die Zertifikate werden im Verzeichnis /volume1/system/certs angelegt.
Leider verlangt MariaDB, dass das Server-SSL-Zertifikat noch mit der alten Stufe SHA1 verschlüsselt ist. Dieses kann aber nicht mehr für die Web-Authentifizierung verwendet werden, da die Browser eine neuere Technologie verlangen. Deshalb müssen zwei Server-Zertifikate erstellt werden. Als Client-Zertifikat muss nur eines mit SHA256-Verschlüsselung erstellt werden.
cd /volume1/system [ -e certs ] && rm -Rf certs mkdir certs cd certs openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -sha1 -days 3600 -key ca-key.pem -out ca-cert.pem -subj '/C=CH/ST=Zug/L=Zug/O=KSCO Investment Management/CN=ksco' openssl req -new -x509 -nodes -sha256 -days 3600 -key ca-key.pem -out ca-cert2.pem -subj '/C=CH/ST=Zug/L=Zug/O=KSCO Investment Management/CN=ksco' openssl genrsa 2048 > server06-key.pem openssl req -key server06-key.pem -new -sha1 -out server06-req.csr -subj '/C=CH/ST=Zug/L=Zug/O=KSCO Investment Management/OU=ksdb/CN=server06' openssl x509 -req -in server06-req.csr -days 3600 -sha1 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server06-cert.pem openssl req -key server06-key.pem -new -sha256 -out server06-req2.csr -subj '/C=CH/ST=Zug/L=Zug/O=KSCO Investment Management/OU=ksdb/CN=server06' -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:server06,DNS:server06.kraemerschwab.local,DNS:server06.plan-bee.ch")) -extensions SAN openssl x509 -req -in server06-req2.csr -days 3600 -sha256 -CA ca-cert2.pem -CAkey ca-key.pem -set_serial 01 -out server06-cert2.pem -extfile <(cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:server06,DNS:server06.kraemerschwab.local,DNS:server06.plan-bee.ch")) -extensions SAN openssl genrsa 2048 > server08-key.pem openssl req -key server08-key.pem -new -sha1 -out server08-req.csr -subj '/C=CH/ST=Zug/L=Zug/O=KSCO Investment Management/OU=ksdb/CN=server08' openssl x509 -req -in server08-req.csr -days 3600 -sha1 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server08-cert.pem openssl req -key server08-key.pem -new -sha256 -out server08-req2.csr -subj '/C=CH/ST=Zug/L=Zug/O=KSCO Investment Management/OU=ksdb/CN=server08' -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:server08,DNS:server08.kraemerschwab.backup,DNS:server08.plan-bee.ch")) -extensions SAN openssl x509 -req -in server08-req2.csr -days 3600 -sha256 -CA ca-cert2.pem -CAkey ca-key.pem -set_serial 01 -out server08-cert2.pem -extfile <(cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:server08,DNS:server08.kraemerschwab.backup,DNS:server08.plan-bee.ch")) -extensions SAN openssl pkcs12 -export -in ca-cert2.pem -inkey ca-key.pem -out ca.p12 -passout pass: cp ca-cert2.pem /volume1/transfer/software/ksdb/ cp ca.p12 /volume1/transfer/software/ksdb/
Hierzu werden der Konfigurationsdatei /var/packages/MariaDB/etc/mysql/my.cnf die folgenden Zeilen angefügt:
ssl ssl-ca = /volume1/system/certs/ca-cert.pem ssl-cert = /volume1/system/certs/server06-cert.pem ssl-key = /volume1/system/certs/server06-key.pem
Nun wird MariaDB neu gestartet mit dem Befehl:
/usr/share/mysql/mysql.server restart
Auf der Diskstation kann unter Systemsteuerung - Sicherheit das Zertifikat importiert werden:
/volume1/system/certs/server06-cert2.pem/volume1/system/certs/server06-key.pem/volume1/system/certs/ca-cert2.pemDamit im KSWeb die PHP-Scripts eine Anmeldung an die Datenbank durchführen können, wird folgendes benötigt:
/volume1/web/ksweb/.htaccess SSLVerifyClient optional_no_ca SSLVerifyDepth 5 SSLOptions +StdEnvVars
Das Benutzerzertifikat wird mit dem Script /volume1/system/create_user_cert.sh erstellt. Das Script erstellt im HOME-Verzeichnis ein Unterverzeichnis ksdb und legt die folgenden Dateien an:
key.pem - die Schlüssel-Dateicert.pem - das Zertifikat in PEM-Form für die Datenbank-Anmeldung<user>-cert.p12 - das Zertifikat zum Import in den Browser fürs KSWEB
Für den Zugang zur Datenbank regelt das Start-Script ksdb.vbs bereits die Installation - es muss nichts mehr gemacht werden. Für den Zugriff auf die KSWEB-Seiten sind auf dem Arbeitsplatzrechner folgende Schritte auszuführen:
\\server06\transfer\software\ksdb\ca.p12Local Machine zu wählenTrusted Root Certification Authorities aufzunehmen\\server06\home\ksdb\<user>-cert.p12Current user zu wählenBeim Aufruf einer Seite im KSWEB verlangt der Browser ein Zertifikat. Der Browser wird allerdings bereits das soeben installierte Zertifikat vorschlagen.