我配置了SSL证书,并在具有MariaDB的Centos 7服务器上正常工作。然后,我将证书从/etc/ssl/certs
文件夹移到了根目录,并关闭了SSL。当我将证书移回其原始位置并重新启动MariaDB时,SSL无法启动。我按照以下说明删除了证书并创建了新证书。
我再次检查了这些文件是否由mysql和0600权限所拥有,就像在移动它们之前一样。
/var/log/mariadb/mariadb.log
文件中报告的错误是:
[Warning] SSL error: SSL_CTX_set_default_verify_paths failed
以下是创建证书时使用的命令。
1)使用自签名证书设置
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显示证书已禁用。通过复制文件路径并使用ls命令显示文件存在,可以验证my.cnf文件中每个条目的路径。
我认为这可能是一个错误:
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