Configurado MySQL para SSL, mas o SSL ainda está desativado ..!

10

Eu configurei o SSL para MySQL usando o seguinte script.

#!/bin/bash
#
mkdir -p /root/abc/ssl_certs
cd /root/abc/ssl_certs
#
echo "--> 1. Create CA cert, private key"
openssl genrsa 2048 > ca-key.pem

echo "--> 2. Create CA cert, certificate"
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem

echo "--> 3. Create Server certificate, key"
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem

echo "--> 4. Create Server certificate, cert"
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
echo ""
echo 
echo ""

echo "--> 5. Create client certificate, key. Use DIFFERENT common name then server!!!!"
echo ""
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem
echo "6. Create client certificate, cert"
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
exit 0

Os seguintes arquivos foram criados:

ca-key.pem             ca-cert.pem
server-req.pem         server-key.pem       server-cert.pem
client-req.pem         client-key.pem       client-cert.pem

Então eu combinei server-cert.pem e client-cert.pem em ca.pem (Eu li em um post para fazer isso ..)

Eu criei um usuário ssl no MySQL:

GRANT ALL ON  *.* to sslsuer@hostname IDENTIFIED BY 'pwd' REQUIRE SSL;

Em seguida, adicionei o seguinte em my.cnf

[mysqld]
ssl-ca          = /root/abc/ssl_certs/ca.pem
ssl-cert        = /root/abc/ssl_certs/server-cert.pem
ssl-key         = /root/abc/ssl_certs/server-key.pem

Depois de reiniciar o servidor, conectei-me ao mysql, mas o SSL ainda não estava em uso: (

mysql -u ssluser -p

SSL:                    Not in use

Até mesmo o parâmetro have_ssl ainda estava mostrando desativado ..: (

mysql> show variables like '%ssl%';
+---------------+---------------------------------------------+
| Variable_name | Value                                       |
+---------------+---------------------------------------------+
| have_openssl  | DISABLED                                    |
| have_ssl      | DISABLED                                    |
| ssl_ca        | /root/abc/ssl_certs/ca.pem          |
| ssl_capath    |                                             |
| ssl_cert      | /root/abc/ssl_certs/server-cert.pem |
| ssl_cipher    |                                             |
| ssl_key       | /root/abc/ssl_certs/server-key.pem  |
+---------------+---------------------------------------------+

Eu perdi qualquer passo, ou o que está errado?

As respostas com etapas perdidas em detalhes serão muito apreciadas.

    
por Sunrays 23.11.2012 / 10:23

6 respostas

6

Veja a solução aqui: link

Você precisa converter certificados para o formato antigo:

openssl rsa -in client-key.pem -out client-key.pem
openssl rsa -in server-key.pem -out server-key.pem
    
por 01.11.2015 / 12:52
3

Tente verificar isso:

  • Ative aviso de saída de log do MySQL e leia as entradas de registro reais.
  • Verifique as permissões do sistema de arquivos para permitir que o usuário com o qual o MySQL é executado ( mysql ?) leia os arquivos. Em /root , não acho que tenha por padrão.
  • O Apparmor ou SELinux está impedindo o MySQL de ler os certificados e chaves?
  • Você pode ser atingido por um bug desagradável de uma recente incompatibilidade OpenSSL vs. MySQL. Eu não consegui gerar chaves no Ubuntu 12.04 que o MySQL poderia ler, enquanto as que eu gero no Debian Squeeze funcionam bem.
por 23.11.2012 / 10:36
2

No Ubuntu, você pode verificar se apparmor bloqueia o acesso aos seus arquivos certificados, consulte o manual .

Em seguida, você deve verificar as permissões / propriedade de arquivos e adicionar os direitos necessários a /etc/apparmor.d/usr.sbin.mysqld . Veja este tópico .

    
por 08.11.2016 / 15:20
0

Acredito que esse problema se deva ao fato de você não ter especificado os caminhos de arquivo para o seu certificado de autoridade de certificação, chave de servidor e certificado de servidor corretamente. Deve estar no seguinte formato ...

ssl-ca=path/to/repo/mysql-directory/path/to/pem/cacert.pem
ssl-cert=path/to/repo/mysql-directory/path/to/pem/server-cert.pem
ssl-key=path/to/repo/mysql-directory/path/to/pem/server-key.pem

i.e. você precisa do PATH DE ARQUIVO COMPLETO dos certificados e chaves dentro da sua pasta de instalação do mysql e não de um caminho '/ root /' relativo.

Aqui está um exemplo da minha instalação:

mysql> show variables like '%ssl%';
+---------------+----------------------------------------------------------+
| Variable_name | Value                                                    |
+---------------+----------------------------------------------------------+
| have_openssl  | YES                                                      |
| have_ssl      | YES                                                      |
| ssl_ca        | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/ca.pem         |
| ssl_capath    |                                                          |
| ssl_cert      | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/server-cert.pem|
| ssl_cipher    |                                                          |
| ssl_key       | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/server-key.pem |
+---------------+----------------------------------------------------------+

Consulte o link a seguir para obter informações adicionais. link

    
por 30.09.2016 / 05:47
0

Eu tive esse problema e isso ajudou a alterar a propriedade dos arquivos .pem:

chown mysql.mysql /var/lib/mysql/*.pem  (or in your case /root/abc/ssl_certs/*.pem)

(De Craig Wright - link )

    
por 12.11.2018 / 22:48
-1

Adicione o "ssl" na seção [mysqld] no arquivo my.cnf como

ssl
ssl-ca          = /root/abc/ssl_certs/ca.pem
ssl-cert        = /root/abc/ssl_certs/server-cert.pem
ssl-key         = /root/abc/ssl_certs/server-key.pem

e depois reinicie o mysql e verifique novamente. Vai funcionar.

    
por 04.06.2015 / 09:36