Configuração SSL do MySql - Seção do cliente

1

Estou tentando proteger meu trabalho com uma conexão SSL entre alguns aplicativos e meus dabtabases.

Na primeira vez, pesquiso como criar certificados e faço algo assim:

Criação da pasta:

[...]$ mkdir certificats && cd certificats

CA:

[...]$ openssl genrsa 2048 > ca-key.pem

[...]$ openssl req -new -x509 -nodes -days 500 -key ca-key.pem > ca-cert.pem

Servidor:

[...]$ openssl req -newkey rsa:2048 -days 500 -nodes 
       -keyout server-key.pem > server-req.pem

[...]$ openssl x509 -req -in server-req.pem -days 500
       -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem

Cliente:

[...]$ openssl req -newkey rsa:2048 -days 500 -nodes 
       -keyout client-key.pem > client-req.pem

[...]$ openssl x509 -req -in client-req.pem -days 500 -CA ca-cert.pem 
       -CAkey ca-key.pem -set_serial 01 > client-cert.pem

Eu respondo a todas as perguntas feitas assim: a mesma resposta para os três arquivos, exceto para "nome comum" (eu vi em algum lugar do que isso pode causar problemas).

Configuração do servidor:

Depois disso, eu fiz isso:

[...]$ vim /etc/my.cnf

para adicionar as seguintes regras (no [mysqld]):

ssl-ca=/etc/ssl/certs_mysql/ca-cert.pem
ssl-cert=/etc/ssl/certs_mysql/server-cert.pem
ssl-key=/etc/ssl/certs_mysql/server-key.pem

Agora, quando eu faço login em uma conta normal, posso ver usando

SHOW VARIABLES LIKE '%ssl%';

que o ssl está ativado. (veja 3 path + 2 'YES')

Conexão:

Então, agora, para conexão, eu tenho que usar:

[...]$ mysql -u user -ppassword -h localhost --ssl-ca=ca-cert.pem 
             --ssl-key=client-key.pem --ssl-cert=client-cert.pem

certo? (o usuário está no modo 'REQUIRE SSL').

Mas isso não funcionou bem:

ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)

Se eu remover o "ca-cert.pem" da conexão, este trabalho "bem". Eu posso conectar, e eu vi "Ssl_cipher" com algo como "xxx-xxx-AES264-xxx" quando eu escrevi "\ s".

Então, eu tentei adicionar:

[client]

ssl-ca=/etc/ssl/certs_mysql/ca-cert.pem
ssl-cert=/etc/ssl/certs_mysql/client-cert.pem
ssl-key=/etc/ssl/certs_mysql/client-key.pem

Mas quando eu adiciono "ssl-x" na seção "client", o mysql pára, MAS não irá reiniciar usando

[...]$ service mysqld restart

Por que não posso escrever a configuração ssl na seção do cliente?

Eu tento uma conexão com meus bancos de dados usando um arquivo PHP, quando eu usei os 3 arquivos, a conexão é recusada, mas se eu usasse apenas "client-key.pem" e "client-cert.pem", eu m conectado.

eu vi em algum lugar do que usar

[...]$ cat client-cert.pem server-cert.pem > ca-cert.pem

pode resolver o problema, mas o certificado usado continha 2 certs?

Então, o problema, no entanto, está no ca-cert.pem? Não reconhecer como um "certificado real" para que a conexão se recusasse? Mas por que não posso usar [cliente]?

Agradecemos antecipadamente por suas respostas

    
por user2169206 14.03.2013 / 11:47

1 resposta

0

Isso é um pouco longo demais para postar como comentário, mesmo que não seja uma resposta completa. Mas se conseguirmos essa informação, podemos dar alguns passos adiante. Então aqui vai:

Para resolver um problema de SSL, eu gostaria de começar tirando mysql da equação. Então comece usando apenas SSL para conectar, assim:

openssl s_client -connect localhost:MYSQLPORTNR -cert client.pem -key client-key.pem -CAfile ca-cert.pem 

onde MYSQLPORTNR deve ser substituído com o número da porta na qual você está executando o mysql. Em seguida, adicione a saída disso ao seu post.

    
por 14.03.2013 / 12:27