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
グループのユーザーがファイルを読み取れるように権限を設定し、必要なすべてのデーモン(つまり、wwwrun
、mysql
、postfix
)をに追加しました。そのグループ。権限は次のようになります
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-safe
はmysql
グループとして実行されるため、Linuxは秘密鍵の読み取りを許可しません。 dkimを使用して、initスクリプトを編集することにより、プログラムを別のグループとして実行することに成功しました。
証明書/キーディレクトリとchown
をmysql:mysql
にコピーします。更新のたびにキーのコピーを同期する必要があります。スクリプトまたはチェックリストで証明書を更新するとすぐに(Postfixなど、他のアプリでも同じ証明書が使用されていると仮定して)、アプリケーションとサーバーの数全体で完全にスケーラブルです(したがって、証明書を特定のアプリにコピーすることを忘れないでください)アプリ)
Superuser.comで質問してください:)複数のグループ間で同じファイルを共有する方法