У меня проблема с принуждением MariaDB использовать мои файлы сертификатов SSL в Debian 8.
Apache2 отлично работает с текущими правами доступа к файлам в / etc / letsencrypt / * Единственная служба, которая имеет какие-либо проблемы с текущими сертификатами, - это MariaDB.
Я пробовал использовать ACL для файлов в /etc/letsencrypt/live/domain/*.pem:
setfacl -m "u:mysql:r--" /etc/letsencrypt/live/domain/*.pem
Это не сработало. После запуска bash от имени пользователя mysql я обнаружил, что / etc / letsencrypt / live недоступен для пользователя mysql. Итак, я запустил setfacl в live и доменных каталогах.
MariaDB по-прежнему не может получить доступ к этим сертификатам.
Итак ... после копирования файлов .pem в / etc / mysql и смены их владельца на mysql: mysql это вроде сработало. Теперь я получаю:
mysqld[4131]: 180211 0:27:54 [Warning] Failed to setup SSL
mysqld[4131]: 180211 0:27:54 [Warning] SSL error: Unable to get private key
mysqld[4131]: 180211 0:27:54 [Note] Server socket created on IP: 'x.x.x.x'.
mysqld[4131]: 180211 0:27:54 [Note] /usr/sbin/mysqld: ready for connections.
И эффект следующий:
mysql --ssl -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 137
Server version: 10.0.32-MariaDB-0+deb8u1 (Debian)
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> SHOW STATUS LIKE 'Ssl_cipher';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Ssl_cipher | |
+---------------+-------+
1 row in set (0.01 sec)
MariaDB [(none)]>
Мой текущий раздел SSL в /etc/mysql/my.cnf:
ssl-ca=/etc/mysql/chain.pem
ssl-cert=/etc/mysql/cert.pem
ssl-key=/etc/mysql/privkey.pem
Что я делаю не так? Что мне нужно сделать, чтобы MariaDB использовал этот SSL? Почему у других служб вообще нет проблем с разрешениями по умолчанию?
После предложения из этого комментария: Конфигурация MariaDB SSL - использование сертификата Let's Encrypt
Что мой ключ находится в неправильном формате, я пытался преобразовать этот ключ с помощью openssl в разные формат.
openssl rsa -in ./privkey.pem -out ./privkeyrsa.pem
И после настройки разрешений (0400) и владения этим файлом (mysql: mysql) SSL начал работать должным образом. (и, конечно, строка конфигурации, указывающая на правильный сертификат)
Я до сих пор не знаю, следует ли оставить разрешения SSL-сертификата такими, какие они есть, или я должен изменить их и потенциально исправить проблему с / etc / letsencrypt / live, недоступными для mysql и доступными для всего остального (даже с правильным ACL для пользователя mysql).
Но если он работает, и только mysql имеет доступ к этим файлам, все должно быть в порядке.