我已经尝试了几天让 SSL 与 MySQL 一起工作。
这是我当前的设置:
MySQL 5.7.17-0ubuntu0.16.04.1
这是我启动 MySQL 服务器时收到的错误
由于以下 SSL 库错误,无法设置 SSL:SSL_CTX_set_default_verify_paths 失败
配置文件:
sl-ca = /etc/mysql-ssl/ca-cert.pem
ssl-cert = /etc/mysql-ssl/server-cert.pem
ssl-key = /etc/mysql-ssl/server-key.pem
ssl
我读这个帖子,Chown
文件,检查是否SELinux
已启用(未安装)
我也运行了这些命令并得到了以下响应:
sudo -u mysql cat /etc/mysql-ssl/ca-cert.pem
-----BEGIN CERTIFICATE-----
sudo -u mysql cat /etc/mysql-ssl/server-cert.pem
-----BEGIN CERTIFICATE-----
sudo -u mysql cat /etc/mysql-ssl/server-key.pem
-----BEGIN RSA PRIVATE KEY-----
此时,我不知道下一步该怎么做。有人能给我指明正确的方向吗?
答案1
- 使用有效的系统/服务账户来管理你的数据库 (mysql)
- 将所有者设置为此数据库服务账户(mysql)
- 检查路径有效性
- 检查 openssl 证书
- 设置正确且有用的访问权限(请注意 0660,因为文件不可执行)
- 检查 selinux 或 apparmor 设置!它们可以阻止访问!
下面应该显示文件信息并设置正确的用户和 RW 权限以 root 身份运行或添加须藤一切的开始:
echo # show all entries of my.cnf (should 4 without # also wrong config settings)
cat /etc/mysql/my.cnf | grep ssl;
echo # Folder checkup (should list your PEM-Files)
ls -al /etc/mysql-ssl/;
echo # set all PEM-Files to user mysql
chown -R mysql:root /etc/mysql-ssl/*.pem
echo # set all PEM-Files to read-only from User (oder or use 660 )
chmod -R 600 /etc/mysql-ssl/*.pem
echo # restart mariaDB wait 5 secounds and show SSL errors
service mysql restart; sleep 5; service mysql status | grep SSL_CTX_set_default_verify_paths
我在我的 Ubuntu 服务器上创建了一个单独的组 (ssl-certs),将 mysql 添加到该组并相应地设置所有权限 (两个文件夹 - 0750 /文件 - 0640)。如果您想确保 mysql 可以访问文件,您可以su
进入 mysql 并进行检查 (以 root 身份)。
su --shell=/bin/bash mysql
ls -la /path/cert/is/
不要忘记检查所有路径:CA、证书、私钥。
答案2
sl-ca = /etc/mysql-ssl/ca-cert.pem
应该
ssl-ca = /etc/mysql-ssl/ca-cert.pem
答案3
希望这对其他人有所帮助,将所有文件放到磁盘上并设置所有正确的权限后,我需要重新启动 apache。
答案4
对于可能遇到此问题的其他任何人。我将文件移至 MySQL 文件夹,将所有者设置为root
并将权限设置为 777。