web-dev-qa-db-ja.com

MySQL SSLをセットアップできません:証明書を読み取れません

MySQLSSLを有効にしたい。 /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グループのユーザーがファイルを読み取れるように権限を設定し、必要なすべてのデーモン(つまり、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からコマンド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-safemysqlグループとして実行されるため、Linuxは秘密鍵の読み取りを許可しません。 dkimを使用して、initスクリプトを編集することにより、プログラムを別のグループとして実行することに成功しました。

解決策1(最速)

証明書/キーディレクトリとchownmysql:mysqlにコピーします。更新のたびにキーのコピーを同期する必要があります。スクリプトまたはチェックリストで証明書を更新するとすぐに(Postfixなど、他のアプリでも同じ証明書が使用されていると仮定して)、アプリケーションとサーバーの数全体で完全にスケーラブルです(したがって、証明書を特定のアプリにコピーすることを忘れないでください)アプリ)

オプション2

Superuser.comで質問してください:)複数のグループ間で同じファイルを共有する方法