[gelöst] mariadb - SSL Zertifikatproblem

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

[gelöst] mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 17.07.2018 16:24:07

Ich habe hier ein ganz merkwürdiges Problem.

Ich habe eine Debian 9.4.0 Installation mit einem mariadb Server.

Code: Alles auswählen

sudo apt install software-properties-common dirmngr
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64] http://ftp.hosteurope.de/mirror/mariadb.org/repo/10.3/debian stretch main'
sudo apt update
sudo apt install mariadb-server-10.3 libmariadbclient18
Folgende Configuration hab ich vorgenommen.
nano /etc/mysql/my.cnf

Code: Alles auswählen

bind-address            = SERVER-IP
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Code: Alles auswählen

[mysqld]

### MySQL Server ###
## Securing the Database with ssl option and certificates ##
## There is no control over the protocol level used. ##
##  mariadb will use TLSv1.0 or better.  ##
ssl

ssl-ca=/etc/mysql/ca_ecdsa.crt.pem
ssl-cert=/etc/mysql/server_ecdsa.crt.pem
ssl-key=/etc/mysql/server_ecdsa.key.pem
ssl=on
ssl-cipher=TLSv1.2
sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf

Code: Alles auswählen

[mysql]

## MySQL Client Configuration ##
ssl-ca=/etc/mysql/ca_ecdsa.crt.pem
ssl-cert=/etc/mysql/client_ecdsa.crt.pem
ssl-key=/etc/mysql/client_ecdsa.key.pem

### This option is disabled by default ###
### ssl-verify-server-cert ##
#ssl-verify-server-cert=on
Wenn ich mich Verbinde (mysql -u root -p) und mir den Status und die SSL Informationen anzeigen lasse, sieht das so aus.

Code: Alles auswählen

SHOW VARIABLES LIKE '%ssl%';
+---------------------+------------------------------------------+
| Variable_name       | Value                                    |
+---------------------+------------------------------------------+
| have_openssl        | YES                                      |
| have_ssl            | DISABLED                                 |
| ssl_ca              | /etc/mysql/ca_ecdsa.crt.pem          |
| ssl_capath          |                                          |
| ssl_cert            | /etc/mysql/server_ecdsa.crt.pem |
| ssl_cipher          |                                          |
| ssl_crl             |                                          |
| ssl_crlpath         |                                          |
| ssl_key             | /etc/mysql/server_ecdsa.key.pem |
| version_ssl_library | OpenSSL 1.1.0f  25 May 2017              |
+---------------------+------------------------------------------+



status;
--------------
mysql  Ver 15.1 Distrib 10.3.8-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Connection id:          11
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.3.8-MariaDB-1:10.3.8+maria~stretch-log mariadb.org binary distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/run/mysqld/mysqld.sock
Uptime:                 1 min 15 sec

Threads: 8  Questions: 7  Slow queries: 0  Opens: 17  Flush tables: 1  Open tables: 11  Queries per second avg: 0.093
--------------
Wenn ich meine Server und Client Zertifikate auskommentiere sieht das so aus.

Code: Alles auswählen

SHOW VARIABLES LIKE '%ssl%';
+---------------------+-----------------------------+
| Variable_name       | Value                       |
+---------------------+-----------------------------+
| have_openssl        | YES                         |
| have_ssl            | YES                         |
| ssl_ca              |                             |
| ssl_capath          |                             |
| ssl_cert            |                             |
| ssl_cipher          |                             |
| ssl_crl             |                             |
| ssl_crlpath         |                             |
| ssl_key             |                             |
| version_ssl_library | OpenSSL 1.1.0f  25 May 2017 |
+---------------------+-----------------------------+
10 rows in set (0.003 sec)



 status;
--------------
mysql  Ver 15.1 Distrib 10.3.8-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Connection id:          9
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.3.8-MariaDB-1:10.3.8+maria~stretch-log mariadb.org binary distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/run/mysqld/mysqld.sock
Uptime:                 10 sec

Threads: 8  Questions: 5  Slow queries: 0  Opens: 17  Flush tables: 1  Open tables: 11  Queries per second avg: 0.500
--------------
Weshalb steht mein have_ssl hier auf einmal auf YES obwohl ich keine Zertifikate hinterlegt habe? Was könnte der Grund sein weshalb meine Zertifikate nicht erkannt werden?
Hierbei handelt es sich um ECC 384 Zertifikate (TLSv1.2, Cipher is ECDHE-ECDSA-AES256-GCM-SHA384).
Zuletzt geändert von joe2017 am 08.05.2020 16:15:06, insgesamt 1-mal geändert.

DeletedUserReAsG

Re: mariadb - SSL Zertifikatproblem

Beitrag von DeletedUserReAsG » 17.07.2018 16:31:04

joe2017 hat geschrieben: ↑ zum Beitrag ↑
17.07.2018 16:24:07
Weshalb steht mein have_ssl hier auf einmal auf YES obwohl ich keine Zertifikate hinterlegt habe?
Möglicherweise, weil’s sich auf die grundsätzliche Verfügbarkeit bezieht?
joe2017 hat geschrieben: ↑ zum Beitrag ↑
17.07.2018 16:24:07
Was könnte der Grund sein weshalb meine Zertifikate nicht erkannt werden?
Vielleicht, weil du sie auskommentiert hast, wie du weiter oben schreibst?

Ansonsten ist zu lesen, dass die Verbindung über einen lokalen Socket läuft. Wenn du die Verbindung über’s Netz testen willst, solltest du zu localhost:3306 (oder was auch immer du als Port konfiguriert hast) verbinden.

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 17.07.2018 16:47:23

joe2017 hat geschrieben: ↑ zum Beitrag ↑
17.07.2018 16:24:07
Was könnte der Grund sein weshalb meine Zertifikate nicht erkannt werden?
Entschuldige, dass war natürlich missverständlich. Ich meinte natürlich weshalb die Zertifikate nicht erkannt werden bevor ich diese auskommentiert habe.
Ich erhalte ja die Meldung have_ssl DISABLE
niemand hat geschrieben: ↑ zum Beitrag ↑
17.07.2018 16:31:04
Ansonsten ist zu lesen, dass die Verbindung über einen lokalen Socket läuft. Wenn du die Verbindung über’s Netz testen willst, solltest du zu localhost:3306 (oder was auch immer du als Port konfiguriert hast) verbinden.
Aktuell möchte ich die Zertifikate nur von meinem lokalen Server testen.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: mariadb - SSL Zertifikatproblem

Beitrag von eggy » 17.07.2018 17:33:39

Mal geschaut was die Logs sagen?
Dienst Stoppen, und mit den entsprechenden cmdline-Schaltern auf der shell starten, dann solltest Du genug Infos bekommen was schiefläuft, ggfs verbose hochdrehen
Beispiel da: https://mariadb.com/kb/en/library/maria ... on-issues/
und demnach dürfen Client und Server Zertifikate keinesfalls mit gleichen Daten gefüttert worden sein (daran liegt's wahrscheinlich auch nicht, es sei nur der Vollständigkeit halber mit erwähnt),
Grundlegendes da: https://mariadb.com/kb/en/library/secur ... -overview/
Laut https://forum.ubuntuusers.de/topic/mari ... rtifikate/ sind die Debianpakete (ka, ob damit die von Debian stammen oder allgemein die auf Debian laufen gemeint sind) mit yaSSL (was lt dem Thread kein ECC384 kann - aber ka, ob das stimmt) gebaut, die anderen gegen OpenSSL, finde mal raus was Deine Version verwendet und ob die Lib Deine Certs überhaupt versteht.
Infos dazu: https://mariadb.com/kb/en/library/ssltl ... variables/
Im unteren Teil des folgenden Artikels sieht man nen Bild, auf dem abgebildet ist, wie ein verwendeter Cypher im status aussehn sollte
https://www.cyberciti.biz/faq/how-to-se ... m-clients/

Und der oben verlinkte kb Artikel nennt das da, vielleicht kommt da ja was hilfreiches bei raus

Code: Alles auswählen

openssl verify -CAfile /etc/mysql/newcerts/ca-cert.pem /etc/mysql/newcerts/server-cert.pem /etc/mysql/newcerts/client-cert.pem



Leicht OffTopic:
joe2017 hat geschrieben: ↑ zum Beitrag ↑
17.07.2018 16:47:23
Aktuell möchte ich die Zertifikate nur von meinem lokalen Server testen.
Willst Du auf den Server nur per lokaler Verbindung (unixsocket, tcp localhost) oder auch von woanders zugreifen? Im ersten Fall solltest Du dann Deine bind-address Einstellung ändern, im zweiten mal über zusätzliche Sicherungsmaßnahmen nachdenken, root umbenennen wäre nen Anfang.

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 18.07.2018 10:22:26

eggy hat geschrieben: ↑ zum Beitrag ↑
17.07.2018 17:33:39
und demnach dürfen Client und Server Zertifikate keinesfalls mit gleichen Daten gefüttert worden sein (daran liegt's wahrscheinlich auch nicht, es sei nur der Vollständigkeit halber mit erwähnt),
Grundlegendes da: https://mariadb.com/kb/en/library/secur ... -overview/
Meine Inhalte der Organisation, Ort sind natürlich gleich. Lediglich der OU und CN sind bei den beiden Zertifikaten unterschiedlich.
eggy hat geschrieben: ↑ zum Beitrag ↑
17.07.2018 17:33:39
Laut https://forum.ubuntuusers.de/topic/mari ... rtifikate/ sind die Debianpakete (ka, ob damit die von Debian stammen oder allgemein die auf Debian laufen gemeint sind) mit yaSSL (was lt dem Thread kein ECC384 kann - aber ka, ob das stimmt) gebaut, die anderen gegen OpenSSL, finde mal raus was Deine Version verwendet und ob die Lib Deine Certs überhaupt versteht.
Wie man oben sehen kann, verwende ich OpenSSL und nicht yaSSL. OpenSSL sollte die Zertifikate eigentlich unterstützen.
Kann mann die unterstützten Zertifikate auch irgendwie abfragen?
eggy hat geschrieben: ↑ zum Beitrag ↑
17.07.2018 17:33:39
Und der oben verlinkte kb Artikel nennt das da, vielleicht kommt da ja was hilfreiches bei raus

Code: Alles auswählen

openssl verify -CAfile /etc/mysql/newcerts/ca-cert.pem /etc/mysql/newcerts/server-cert.pem /etc/mysql/newcerts/client-cert.pem
Meine Zertifikate werden beide mit OK angezeigt. Hatte ich auch bereits getestet.
eggy hat geschrieben: ↑ zum Beitrag ↑
17.07.2018 17:33:39
Willst Du auf den Server nur per lokaler Verbindung (unixsocket, tcp localhost) oder auch von woanders zugreifen? Im ersten Fall solltest Du dann Deine bind-address Einstellung ändern, im zweiten mal über zusätzliche Sicherungsmaßnahmen nachdenken, root umbenennen wäre nen Anfang.
Das ist aktuell nur der erste Schritt. Die Bind-Adresse hab ich auch bereits angepasst. Hatte ich doch oben auch bereits geschrieben. Selbstverständlich werde ich mein root anschließend umbenennen und weitere Sicherheitsmaßnahmen treffen. Es gelingt jedoch aktuell nicht einmal der erste lokale Test mit SSL. Der rest kommt anschließend. ;-)

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 18.07.2018 10:25:07

eggy hat geschrieben: ↑ zum Beitrag ↑
17.07.2018 17:33:39
Mal geschaut was die Logs sagen?
Dienst Stoppen, und mit den entsprechenden cmdline-Schaltern auf der shell starten, dann solltest Du genug Infos bekommen was schiefläuft, ggfs verbose hochdrehen
Beispiel da: https://mariadb.com/kb/en/library/maria ... on-issues/
Hiermit komme ich aktuell nicht klar. Bin mir nicht sicher was du meinst. Was mir auch aufgefallen ist... Mit der Standard Debian installation wird ein ERROR Log erzeugt (/var/log/mysql/error.log).
In meiner Installation angeleitet von mariadb.org wird dieses Log nicht mehr erzeugt. Muss ich das manuell anlegen bzw. konfigurieren?

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 18.07.2018 10:48:12

Hier nochmal ein Auszug aus dem syslog. Ich hab natürlich intere Daten ausgetauscht.

Code: Alles auswählen

Jul 18 10:40:09 SERVER systemd[1]: Starting MariaDB 10.3.8 database server...
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] /usr/sbin/mysqld (mysqld 10.3.8-MariaDB-1:10.3.8+maria~stretch-log) starting as process 8844 ...
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: Using Linux native AIO
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: Uses event mutexes
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: Compressed tables use zlib 1.2.8
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: Number of pools: 1
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: Using generic crc32 instructions
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: Initializing buffer pool, total size = 256M, instances = 1, chunk size = 128M
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: Completed initialization of buffer pool
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: 128 out of 128 rollback segments are active.
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: Creating shared tablespace for temporary tables
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: Waiting for purge to start
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: 10.3.8 started; log sequence number 1631184; transaction id 21
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] Plugin 'FEEDBACK' is disabled.
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] InnoDB: Buffer pool(s) load completed at 180718 10:40:10
Jul 18 10:40:10 SERVER mysqld[8844]: Enter PEM pass phrase:
Jul 18 10:40:10 SERVER mysqld[8844]: SSL error: Unable to get private key from '/etc/mysql/SERVER_ecdsa.key.pem'
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Warning] Failed to setup SSL
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Warning] SSL error: Unable to get private key
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Warning] SSL error: error:2807106B:UI routines:UI_process:processing error
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Warning] SSL error: error:0906406D:PEM routines:PEM_def_callback:problems getting password
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Warning] SSL error: error:0907B068:PEM routines:PEM_read_bio_PrivateKey:bad password read
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Warning] SSL error: error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] Server socket created on IP: 'x.x.x.x'.
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] Reading of all Master_info entries succeded
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] Added new Master_info '' to hash table
Jul 18 10:40:10 SERVER mysqld[8844]: 2018-07-18 10:40:10 0 [Note] /usr/sbin/mysqld: ready for connections.
Jul 18 10:40:10 SERVER mysqld[8844]: Version: '10.3.8-MariaDB-1:10.3.8+maria~stretch-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution
Jul 18 10:40:11 SERVER systemd[1]: Started MariaDB 10.3.8 database server.
nachdem ich folgende Zeile gelesen habe, dachte ich mir, dass ich vielleicht das Passwort aus der .key.pem entfernen muss.

Code: Alles auswählen

SSL error: Unable to get private key from '/etc/mysql/SERVER_ecdsa.key.pem'
Wenn ich die removepasswort.key.pem angebe, erhalte ich folgende Fehlermeldung.

Code: Alles auswählen

ERROR 2026 (HY000): SSL connection error: tlsv1 alert unknown ca

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 18.07.2018 12:06:13

Ich denke es liegt an meinem Client Zertifikat.

Wenn ich meine Client Zertifikate in dem File (/etc/mysql/mariadb.conf.d/50-mysql-clients.cnf) auskommentiere, bekomme ich folgendes angezeigt.

mysql -u root -p

Code: Alles auswählen

SHOW VARIABLES LIKE '%ssl%';

have_openssl        | YES
have_ssl            | YES
Teste ich meine Verbindung mit dem client Zertifikat erhalte ich wieder folgende Meldung.
mysql --ssl-ca=/etc/mysql/ssl/ca_ecdsa.crt.pem --ssl-cert=/etc/mysql/ssl/client_ecdsa.crt.pem --ssl-key=/etc/mysql/ssl/client_ecdsa_re.key.pem -u root -p

Code: Alles auswählen

ERROR 2026 (HY000): SSL connection error: tlsv1 alert unknown ca
Wo könnte hier der Fehler liegen??? Ich komme irgendwie nicht drauf?

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: mariadb - SSL Zertifikatproblem

Beitrag von eggy » 18.07.2018 14:58:55

Da wird wohl entweder die CA oder eins der Zertifikate in der Kette zur CA zu fehlen. Wenn Du die Fehlermeldung (und mariadb) in die Suchmaschine Deiner Wahl steckst, findest Du ne handvoll Lösungsansätze (Intermediate-Zertifkate im pem zusammenfassen, CA zu den systemweit bekannten CAs stecken, ...), unter anderem https://serverfault.com/questions/39948 ... ate/399581

Und was die bind-address angeht, hast Du mich, glaube ich, missverstanden, ich meinte wenn Du nur local verbinden willst, ist die externe ServerIP nicht das richtige, dann lieber 127.0.0.1 oder sowas nehmen.

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 18.07.2018 16:00:02

Zur Info. Ich habe meine root und intermediate ca Zertifikate bereits als vertrauenswürdig eingestuft.

Code: Alles auswählen

sudo cp /tmp/ca.* /usr/share/ca-certificates/
sudo dpkg-reconfigure ca-certificates
Mir war nicht bewusst, dass irgendwo ein CHAIN Zertifikat eingesetzt werden muss. Hierzu wird in den Config Files doch alles angegeben. Mach ich hier ein Denkfehler?

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Code: Alles auswählen

[mysqld]

### MySQL Server ###
## Securing the Database with ssl option and certificates ##
## There is no control over the protocol level used. ##
##  mariadb will use TLSv1.0 or better.  ##
ssl

ssl-ca=/etc/mysql/ca_ecdsa.crt.pem
ssl-cert=/etc/mysql/server_ecdsa.crt.pem
ssl-key=/etc/mysql/server_ecdsa.key.pem
ssl=on
ssl-cipher=TLSv1.2
sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf

Code: Alles auswählen

[mysql]

## MySQL Client Configuration ##
ssl-ca=/etc/mysql/ca_ecdsa.crt.pem
ssl-cert=/etc/mysql/client_ecdsa.crt.pem
ssl-key=/etc/mysql/client_ecdsa.key.pem

### This option is disabled by default ###
### ssl-verify-server-cert ##
#ssl-verify-server-cert=on

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 31.07.2019 09:55:19

Hallo zusammen,

ich habe mich dem Thema MariaDB und SSL jetzt noch einmal angenommen. Leider erhalte ich immer noch den Fehler:
ERROR 2026 (HY000): SSL connection error: unable to get issuer certificate

Ich habe das Ganze noch einmal under der aktuellen Debian Buster installiert:

Code: Alles auswählen

sudo apt install software-properties-common dirmngr
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64] http://mirror.wtnet.de/mariadb/repo/10.4/debian buster main'

sudo apt update
sudo apt install mariadb-server mariadb-client

sudo mkdir /etc/mysql/ssl

# Copy CA Cert, Server Cert, Client Cert to /etc/mysql/ssl
sudo chown -R mysql:mysql /etc/mysql/ssl/*
sudo chmod 644 /etc/mysql/ssl/*

sudo -i
mysql_secure_installation
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Code: Alles auswählen

[mysqld]
ssl

ssl-ca=/etc/mysql/ssl/ca.crt.pem
ssl-cert=/etc/mysql/ssl/server.crt.pem
ssl-key=/etc/mysql/ssl/server.key.pem

ssl=on
ssl-cipher=TLSv1.2
sudo nano /etc/mysql/mariadb.conf.d/50-clients.cnf

Code: Alles auswählen

[mysql]
ssl-ca=/etc/mysql/ssl/ca.crt.pem
ssl-cert=/etc/mysql/ssl/client.crt.pem
ssl-key=/etc/mysql/ssl/client.key.pem

ssl-verify-server-cert=on
sudo systemctl restart mysql
mysql -u root -p
ERROR 2026 (HY000): SSL connection error: unable to get issuer certificate

Wenn ich jetzt in der 50-client.cnf folgendes auskommentiere kann ich mich anmelden.
sudo nano /etc/mysql/mariadb.conf.d/50-clients.cnf

Code: Alles auswählen

[mysql]
#ssl-ca=/etc/mysql/ssl/ca.crt.pem
#ssl-cert=/etc/mysql/ssl/client.crt.pem
#ssl-key=/etc/mysql/ssl/client.key.pem

ssl-verify-server-cert=on
MariaDB [(none)]> \s

Code: Alles auswählen

mysql  Ver 15.1 Distrib 10.4.6-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Connection id:          40
Current database:
Current user:           root@localhost
SSL:                    Cipher in use is TLS_AES_256_GCM_SHA384
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.4.6-MariaDB-1:10.4.6+maria~buster-log mariadb.org binary distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/run/mysqld/mysqld.sock
Uptime:                 13 min 19 sec
MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';

Code: Alles auswählen

+---------------------+-------------------------------------------------+
| Variable_name       | Value                                           |
+---------------------+-------------------------------------------------+
| have_openssl        | YES                                             |
| have_ssl            | YES                                             |
| ssl_ca              | /etc/mysql/ssl/ca.crt.pem                       |
| ssl_capath          |                                                 |
| ssl_cert            | /etc/mysql/ssl/server.crt.pem                   |
| ssl_cipher          | TLSv1.2                                         |
| ssl_crl             |                                                 |
| ssl_crlpath         |                                                 |
| ssl_key             | /etc/mysql/ssl/server.key.pem                   |
| version_ssl_library | OpenSSL 1.1.1c  28 May 2019                     |
+---------------------+-------------------------------------------------+
openssl s_client -connect 127.0.0.1:3306

Code: Alles auswählen

CONNECTED(00000003)
140321149908096:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:332:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 5 bytes and written 283 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
openssl s_client -connect 127.0.0.1:3306 -tls1 -cipher TLSv1.2

Code: Alles auswählen

CONNECTED(00000003)
140070725543040:error:141A90B5:SSL routines:ssl_cipher_list_to_bytes:no ciphers available:../ssl/statem/statem_clnt.c:3801:No ciphers enabled for max supported SSL/TLS version
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 7 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1564568351
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
---
Ich hoffe mir kann hierbei jemand weiterhelfen.

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 02.08.2019 09:57:34

Nachdem hier keiner eine Idee hat woran das liegen könnte frage ich einmal anders.

Wonach könnte ich bei dem Fehler noch suchen?

Code: Alles auswählen

unable to get issuer certificate
Meine Zertifikate sind in Ordnung. Ich habe weitere Zertifikate in anderen Servern (LDAP, Apache, usw.) im Einsatz. Hier gibt es keine Probleme.
Anscheinend hat wirklich der MariaDB Server selbst ein Problem mit den Zertifikaten. Oder mir fehlt noch eine Konfiguration?

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: mariadb - SSL Zertifikatproblem

Beitrag von eggy » 02.08.2019 10:57:19

joe2017 hat geschrieben: ↑ zum Beitrag ↑
02.08.2019 09:57:34
Nachdem hier keiner eine Idee hat
Wie bereits oben geschrieben: Da wird wohl entweder die CA oder eins der Zertifikate in der Kette zur CA zu fehlen.

Logging hochdrehen, Berechtigungen prüfen und mal die Suchmaschine Deiner Wahl bemühen, zu Deiner Fehlermeldung gibts Haufenweise Threads, die sich mit den Zertifikaten beschäftigen, daher recht wahrscheinlich, dass es am Intermediate liegt.

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 02.08.2019 11:02:44

Aber daran kann es ja gerade nicht liegen.

Wenn ich das Client Zertifikat auskommentiere, wird SSL vom Server verwendet. Jedoch nur One-Way TLS.
https://mariadb.com/kb/en/library/secur ... uiring-tls

mysql -u root -p
SHOW VARIABLES LIKE '%ssl%';

Code: Alles auswählen

+---------------------+-------------------------------------------------+
| Variable_name       | Value                                           |
+---------------------+-------------------------------------------------+
| have_openssl        | YES                                             |
| have_ssl            | YES                                             |
\s

Code: Alles auswählen

SSL:                    Cipher in use is TLS_AES_256_GCM_SHA384
Muss ich vielleicht beim erstellen des Client Zertifikates auf etwas bestimmtes achten?

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: mariadb - SSL Zertifikatproblem

Beitrag von eggy » 02.08.2019 13:11:05

nochmal: eins der Zertifikate in der Kette zur CA

"issuer cert" deutet ja darauf hin, dass er die CA nicht kennt, entweder weil er die CA selbst nicht kennt oder weil er den Weg dahin nicht findet (kennt intermediate nicht). In dem von mir vor einiger Zeit verlinkten Thread wurde vorgeschlagen, alle benötigten Zertifikate (cert, cert der ca, cert aller zwischenstationen) in eine pem Datei zu tun. Hast Du das gemacht? Hast Du geprüft, ob die Datei ok ist? Hat diese Datei auch die richtigen Berechtigungen, so dass der Server, wenn er unter seinem Account startet, das auch lesen darf, oder hat jemand anders da noch Rechte? Was sagt das Logfile? Wenn das nicht Aussagekraeftig genug ist, schauen ob man das Logging noch etwas weiter hochdrehen kann, notfalls mit externen Helfern wie strace und co rangehen. Aber erstmal mit openssl versuchen, ob das Zertifikat alles Benötigte enthält.

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 02.08.2019 15:52:18

Also ich hab sowohl für das ssl-ca als auch für das ssl-cert ein chain File getestet.

Auch die openssl Prüfung hab ich durchgeführt.

Code: Alles auswählen

openssl verify -CAfile .....
Alle Zertifikate werden mit OK angezeigt.

Im Log FIle sehe ich nur folgende Zeile:

Code: Alles auswählen

[Warning] Aborted connection 40 to db: 'unconnected' user: 'unauthenticated' host: 'server.domain.net' (This connection closed normally without authentication)

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 02.08.2019 16:45:54

Mal eine ganz blöde Frage...

Mein common Name im Client Zertifikat kann ich doch benennen wie ich möchte? Hierfür gibt es keine Vorgaben oder?
Ich habe folgenden common Name für meine Zerifikate verwendet:
Server: ServerHostname.domain.net (nsCertType = server)
Client: ServerHostname_client.domain.net (nsCertType = server)


Nicht das ich hier einen Fehler mache und es deshalb nicht funktioniert.

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 02.09.2019 09:52:36

Gibt es niemand, der mir hierzu einen Tipp geben könnte?

DeletedUserReAsG

Re: mariadb - SSL Zertifikatproblem

Beitrag von DeletedUserReAsG » 02.09.2019 14:46:00

joe2017 hat geschrieben: ↑ zum Beitrag ↑
02.09.2019 09:52:36
Gibt es niemand, der mir hierzu einen Tipp geben könnte?
Es gibt niemand, doch lange Monologthreads mit allen möglichen Sachen drin, dafür aber ohne Systematik, sind nichts für ihn. Er hat am liebsten kompakt aufgearbeitete Posts mit sämtlichen relevanten Informationen, wobei längere Ausgaben nach NoPaste ausgelagert, und Ergänzungen reineditiert werden.

Anderen geht’s möglicherweise ähnlich.

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 03.09.2019 09:01:04

Guten Morgen und danke für die Info,

ich dachte einfach das es sinnvol wäre, wenn ich meine zwischenstände Poste.
Aber du hast schon recht. Zu viel Informationen.

Gibt es eine Möglichkeit, eigen erstellte Beiträge oder Antworten zu löschen um diese neu zu erstellen?

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: mariadb - SSL Zertifikatproblem

Beitrag von joe2017 » 08.05.2020 16:14:26

Hallo zusammen,

ich habe heute das Ganze Thema nochmal aufgerollt und mein Problem gefunden.
Ich verwede einen eigenen OpenSSL Certificate Server. Hier hatte ich wahrscheinlich falsche Zertifikate ausgerollt.

Man benötigt ein Server und ein Client Zertifikat.
Hierbei ist darauf zu achten, dass als OpenSSL extensions einmal server_cert und usr_cert ausgewählt wird. Je nachdem wie die Beschreibung in eurer openssl.cnf benannt wurde, muss dies angepasst werden.

Ich hatte damals wahrscheinlich zwei Server Zertifikate anstatt Server/Client Zertifikate ausgerollt.

Falls gewünscht, kann ich meine komplette Installationsanleitung für die MariaDB installation mit Master-Slave Replication und einer ECDSA 384 SSL Verschlüsselung posten. Falls gewünscht, bitte kurze private Benachrichtigung.

Ich versuche immer etwas für eure Hilfe zurück zu geben.
Vielen Dank noch mal an alle!

Antworten