MariaDB / MySQL не может найти сертификаты SSL - PullRequest
0 голосов
/ 04 июня 2019

У меня настроены и работают сертификаты SSL на сервере Centos 7 с MariaDB. Затем я переместил сертификаты из папки /etc/ssl/certs в корневой каталог и отключил SSL. Когда я переместил сертификаты на прежнее место и перезапустил MariaDB, SSL не запустился. Я удалил сертификаты и создал новые, используя инструкции, описанные ниже.

Я дважды проверил, что файлы принадлежат разрешениям mysql и 0600, так же, как и до того, как я их переместил.

Ошибка в файле /var/log/mariadb/mariadb.log:

[Warning] SSL error: SSL_CTX_set_default_verify_paths failed

Вот команды, используемые при создании сертификата.

1) Настройка SSL с самозаверяющим сертификатом,

Расположение сертификатов по умолчанию в Centos 7 - это / etc / ssl / certs (что символические ссылки на / etc / pki / tls / certs)

(https://www.cyberciti.biz/faq/how-to-setup-mariadb-ssl-and-secure-connections-from-clients/)

# cd /etc/ssl/certs
# openssl genrsa 2048 > ca-key.pem
# openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem
# openssl req -newkey rsa:2048 -days 365000 -nodes -keyout server-key.pem -out server-req.pem
*** The ‘Common Name’ must be different for all 3 certs *** 

# openssl rsa -in server-key.pem -out server-key.pem
# openssl x509 -req -in server-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
# openssl req -newkey rsa:2048 -days 365000 -nodes -keyout client-key.pem -out client-req.pem
# openssl rsa -in client-key.pem -out client-key.pem
# openssl x509 -req -in client-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
# openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem

2) Установить права владения сертификатом и файлами ключей

# cd /etc/ssl/certs
# chown mysql:mysql *.pem
# chmod 600 *.pem

3) Отредактируйте файл my.cnf и добавьте следующее в [mysqld] section:

ssl
ssl-ca=/etc/ssl/certs/ca-cert.pem
ssl-cert=/etc/ssl/certs/server-cert.pem
ssl-key=/etc/ssl/certs/server-key.pem
ssl-cipher=kEECDH:+kEECDH+SHA:kEDH:+kEDH+SHA:+kEDH+CAMELLIA:kECDH:+kECDH+SHA:kRSA:+kRSA+SHA:+kRSA+CAMELLIA:!aNULL:!eNULL:!SSLv2:!RC4:!DES:!EXP:!SEED:!IDEA:!3DES

4) Отредактируйте файл my.cnf и добавьте следующее в конец раздела:

[client]
ssl-ca=/etc/ssl/certs/ca-cert.pem
ssl-cert=/etc/ssl/certs/client-cert.pem
ssl-key=/etc/ssl/certs/client-key.pem
6) Restart MySQL 
systemctl restart mariadb

5) Войдите в систему и проверьте статус SSL:

SHOW VARIABLES LIKE '%ssl%';
STATUS;

На этом этапе MariaDB / MySQL показывает, что сертификаты отключены. Я могу проверить путь каждой записи в файле my.cnf, скопировав filepath и используя команду ls, чтобы показать, что файл присутствует.

Я подумал, что, возможно, это ошибка:

https://bugs.mysql.com/bug.php?id=83592

Разрешения не были изменены ни для пути к каталогу, ни для символической ссылки на папку путей к каталогам (опубликовано ниже), поэтому я предполагаю, что они все же позволят mariaDB найти файл.

# ls -la /etc/ssl/certs
lrwxrwxrwx. 1 root root 16 May 16  2018 /etc/ssl/certs -> ../pki/tls/certs
# ls -la /etc/pki/tls/
drwxrwx---.  3 root root   149 Jun  4 20:18 certs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...