无法设置 MySQL SSL:无法读取证书

无法设置 MySQL SSL:无法读取证书

我想启用 MySQL SSL。我拥有 中的所有证书和密钥/etc/ssl/private/myhost。它们也被 Apache2 (成功) 使用。

我没有运行 SELinux 或 AppArmor。

我配置my.cnf如下

#ssl
ssl-ca=/etc/ssl/private/myhost/myhost.ca_bundle
ssl-cert=/etc/ssl/private/myhost/myhost.crt
ssl-key=/etc/ssl/private/myhost/myhost.key
ssl-cipher=DHE-RSA-AES256-SHA

我已设置权限,以便ssl-private组中的用户可以读取文件,并将所有必需的守护程序(即wwwrun、、)添加到该组。权限如下所示mysqlpostfix

myhost:/etc/ssl/private/myhost # l
total 32K
drwxr-xr-x 2 root ssl-private 4,0K lug 14 13:11 .
drwxrwx--- 4 root ssl-private 4,0K lug 14 12:32 ..
-rw-r--r-- 1 root ssl-private 1,5K mag 30  2000 AddTrustExternalCARoot.crt
-rw-r--r-- 1 root ssl-private 3,3K lug 14 13:11 myhost.ca_bundle
-rw-r--r-- 1 root ssl-private 2,1K lug 13 22:00 myhost.crt
-rw-r--r-- 1 root ssl-private 1,8K lug 14 12:41 myhost.csr
-rw-r----- 1 root ssl-private 3,2K lug 14 12:36 myhost.key
-rw-r--r-- 1 root ssl-private 1,8K feb 15 23:00 PositiveSSLCA2.crt

我还将证书文件的路径从 my.cnf 复制并粘贴到命令中sudo -u mysql cat /etc/ssl/private/myhost/myhost.crt,它显示了我的证书。相同的命令适用于密钥。

但最后当我启动 MySQL 时出现以下错误:

SSL error: Unable to get certificate from '/etc/ssl/private/myhost/myhost.crt'
120814 14:20:37 [Warning] Failed to setup SSL
120814 14:20:37 [Warning] SSL error: Unable to get certificate

我该如何修复它?

答案1

问题在于文件所有权。我也见过同样的情况dkimproxy并且能够解决该特定应用程序的问题。

由于 SSL 证书目录归组所有ssl-private,并mysqld-safe以组身份运行mysql,因此 Linux 不允许读取私钥。使用 dkim,我通过编辑 init 脚本成功强制程序以其他组身份运行。

解决方案 1(最快)

将证书/密钥目录复制chownmysql:mysql。每次更新时都需要同步密钥副本。只要使用脚本或检查表更新证书(这样您就不会忘记将证书复制到某个应用程序),就可以完美地跨应用程序和服务器数量进行扩展(假设其他应用程序也使用相同的证书,例如 Postfix)

选项 2

在 superuser.com 上询问:)如何在多个组之间共享相同的文件

相关内容