meta data for this page
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| mariadb_zertifikatbasiertes_anmeldesystem [30.01.2016 07:01] – created 192.168.126.108 | mariadb_zertifikatbasiertes_anmeldesystem [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== MariaDB zertifikatbasiertes Anmeldesystem ====== | ||
| - | |||
| - | 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 '' | ||
| - | |||
| - | Die Benutzer werden in der Datenbank angelegt als ''< | ||
| - | |||
| - | Der Prozess gliedert sich nun in die Blöcke | ||
| - | * Server-Zertifikate erstellen | ||
| - | * Client-Zertifikate erstellen und Benutzer anlegen | ||
| - | * Anmeldeverfahren anpassen | ||
| - | |||
| - | ==== Server-Zertifikate erstellen ==== | ||
| - | Auf dem Server benötigen wir zwei Zertifikate. Das erste ist ein sogenanntes **CA-Zertifikat** und bildet die Authorisierungs-Instanz. | ||
| - | |||
| - | |||
| - | * Issuer-Zertifikat und Server-Zertifikat erstellen | ||
| - | < | ||
| - | cd /etc/mysql | ||
| - | [ -e certs ] && rm -Rf certs | ||
| - | mkdir certs | ||
| - | cd certs | ||
| - | openssl genrsa 2048 > ca-key.pem | ||
| - | openssl req -new -x509 -nodes -sha256 -days 3600 -key ca-key.pem -out ca-cert.pem -subj '/ | ||
| - | |||
| - | openssl req -newkey rsa:2048 -days 3600 \ | ||
| - | | ||
| - | openssl rsa -in server-key.pem -out server-key.pem | ||
| - | openssl x509 -req -in server-req.pem -days 3600 \ | ||
| - | -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem | ||
| - | |||
| - | Die ca-cert.pem ist für die Clients bestimmt und wird nach / | ||
| - | cp ca-cert.pem / | ||
| - | |||
| - | Ebenso wichtig ist es nun, die Zertifikate in die ''/ | ||
| - | ssl | ||
| - | ssl-ca = / | ||
| - | ssl-cert = / | ||
| - | ssl-key = / | ||
| - | </ | ||
| - | * Anschliessend unbedingt mysql neu starten: | ||
| - | < | ||
| - | / | ||
| - | </ | ||
| - | * Nun werden die Zertifikate für alle Datenbank-User erstellt. Dazu verwenden wir die Tabelle personal als Referenz: | ||
| - | < | ||
| - | echo "# | ||
| - | mysql -Nsr -uroot -p -Dhaas >>/ | ||
| - | SELECT CONCAT( | ||
| - | '# ****** ', login_user, ' | ||
| - | '[ -e / | ||
| - | 'mkdir / | ||
| - | ' | ||
| - | login_user, | ||
| - | '/ | ||
| - | login_user, | ||
| - | '/ | ||
| - | REPLACE(IFNULL(text_1, | ||
| - | '/ | ||
| - | ' | ||
| - | login_user, | ||
| - | '/ | ||
| - | login_user, | ||
| - | '/ | ||
| - | ' | ||
| - | login_user, | ||
| - | '/ | ||
| - | login_user, | ||
| - | '/ | ||
| - | 'chown -R ', login_user, ': | ||
| - | FROM personal p join mysql.user u on u.user = p.login_user and u.host = ' | ||
| - | EOF | ||
| - | |||
| - | chmod u+x / | ||
| - | / | ||
| - | rm / | ||
| - | </ | ||
| - | * Nun werden die Benutzer umgestellt. Bisher meldete sich xyz mit einem Password pw_xyz an. Neu darf er sich, sofern er aus dem internen Netz kommt und SSL-zertifiziert ist, ohne Passwort anmelden. Kommt er jedoch von aussen, dann soll er sich mit dem bisherigen Passwort anmelden. Ohne SSL-Zertifikat darf er sich hingegen gar nie mehr anmelden. | ||
| - | * Dazu müssen zuerst die Benutzer von % auf 192.168.1.% umgestellt werden mit | ||
| - | < | ||
| - | mysql -uroot -p -e" | ||
| - | mysql -Nsr -uroot -p -Dhaas >/ | ||
| - | SELECT CONCAT( | ||
| - | ' | ||
| - | login_user, | ||
| - | ' | ||
| - | IFNULL(text_1, | ||
| - | '/ | ||
| - | 'set password for \'', | ||
| - | ' | ||
| - | login_user, | ||
| - | ' | ||
| - | REPLACE(IFNULL(text_1, | ||
| - | '/ | ||
| - | 'set password for \'', | ||
| - | FROM personal p join mysql.user u on u.user = p.login_user and u.host = ' | ||
| - | EOF | ||
| - | |||
| - | mysql -uroot -p </ | ||
| - | |||
| - | rm / | ||
| - | </ | ||