У меня настроены и работают сертификаты 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