Uso do certificado SSL padrão / chave no MySQL 5.7?

6

Eu tenho um Percona MySQL 5.7 (5.7.21-20-log) instalado usando apt-get , quando eu o conecto usando a conta root e verifico o status ssl

# mysql --ssl
mysql> show variables like '%ssl%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| have_openssl  | YES             |
| have_ssl      | YES             |
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.21-20, for debian-linux-gnu (x86_64) using  6.3

Connection id:      31
Current database:
Current user:       root@localhost
SSL:            Cipher in use is ECDHE-RSA-AES128-GCM-SHA256

Portanto, por padrão, o SSL está sendo usado. No entanto, quando eu uso o comando completo

mysql -h 127.0.0.1 -P 3306 -u root  -p  --ssl-ca=/var/lib/mysql/ca.pem --ssl-cert=/var/lib/mysql/server-cert.pem --ssl-key=/var/lib/mysql/server-key.pem

Retorna o erro

ERROR 2026 (HY000): SSL connection error: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
    
por Ryan 21.03.2018 / 11:35

1 resposta

5

Seu problema é usar certificado de servidor e chave no lado do cliente.

--ssl-cert=/var/lib/mysql/server-cert.pem --ssl-key=/var/lib/mysql/server-key.pem

Conforme documentado em 6.4.2 Opções de comando para conexões criptografadas (a ênfase é minha):

--ssl-cert=file_name

The path name of the SSL public key certificate file in PEM format. On the client side, this is the client public key certificate. On the server side, this is the server public key certificate. On the server side, this option implies --ssl.

--ssl-key=file_name

The path name of the SSL private key file in PEM format. On the client side, this is the client private key. On the server side, this is the server private key. On the server side, this option implies --ssl.

Você pode forçar a conexão TLS usando --ssl , sozinho:

mysql -h 127.0.0.1 -P 3306 -u root -p --ssl

Útil aqui também pode ser o --ssl-cipher=cipher_list . Com ele você pode verificar se a conexão não usa nenhuma codificação que você não queira, mesmo quando permitido na configuração do servidor. No entanto, quando você tem poder sobre ambos, isso deve ser configurado principalmente no lado do servidor.

    
por 23.03.2018 / 12:15

Tags