Não é possível configurar o MySQL SSL: não é possível ler o certificado

2

Eu quero ativar o MySQL SSL. Eu tenho todos os certificados e chaves em /etc/ssl/private/myhost . Eles também são (com sucesso) usados pelo Apache2.

Eu não tenho o SELinux ou o AppArmor em execução.

Eu configurei my.cnf da seguinte forma

#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

Eu configurei permissões para que os usuários no grupo ssl-private possam ler os arquivos e adicionei todos os daemons necessários (ou seja, wwwrun , mysql , postfix ) a esse grupo. Permissões se parecem com o seguinte

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

Eu também copiei e colei o caminho do arquivo de certificado do my.cnf para o comando sudo -u mysql cat /etc/ssl/private/myhost/myhost.crt e ele exibiu o meu certificado. O mesmo comando funcionou para a chave.

Mas finalmente quando eu inicio o MySQL eu recebo o seguinte erro:

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

Como posso consertar isso?

    
por usr-local-ΕΨΗΕΛΩΝ 14.08.2012 / 16:42

1 resposta

3

O problema está na propriedade de arquivos. Eu vi o mesmo com dkimproxy e consegui resolver essa aplicação específica.

Como o diretório de certificados SSL é de propriedade do grupo ssl-private e como mysqld-safe é executado como mysql group, o Linux não permitirá a leitura da chave privada. Com o dkim, forcei o programa a ser executado como um grupo diferente editando o script de inicialização.

Solução 1 (mais rápida)

Faça uma cópia do diretório certificates / keys e chown to mysql:mysql . Requer sincronizar as cópias das chaves a cada renovação. Perfeitamente escalável entre aplicativos e número de servidores (suponha que o mesmo certificado seja usado por outros aplicativos também, por exemplo, Postfix) assim que um atualiza os certificados com um script ou lista de verificação (assim você não se esqueça de copiar certificados para um certo app)

Opção 2

Pergunte ao superuser.com :) como compartilhar os mesmos arquivos entre vários grupos

    
por 21.08.2012 / 13:51