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

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

我没有运行SELinux或AppArmor。

我configurationmy.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组中的用户可以读取这些文件,并将所有必需的守护程序(即wwwrunmysqlpostfix )添加到该组中。 权限如下所示

 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复制并粘贴证书文件的path到命令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 

我该如何解决这个问题?

问题在于文件的所有权。 我已经看到与dkimproxy相同,并已能够解决该特定的应用程序。

由于SSL证书目录由组ssl-private拥有,并且由于mysqld-safe作为mysql组运行,因此Linux将不允许读取私钥。 使用dkim,我通过编辑初始化脚本成功强制程序作为不同的组运行。

解决scheme1(最快)

制作一个证书/密钥目录的副本,然后input到mysql:mysql 。 需要在每次续订时同步密钥的副本。 只要用脚本或清单更新证书,就可以跨应用程序和服务器数量(假设其他应用程序也使用相同的证书,例如Postfix)完美地扩展(所以您不会忘记将证书复制到某个特定的APP)

选项2

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