Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Tutorial MySQL – Configurando e Gerenciando SSL em seu Servidor MySQL

Nesta postagem do blog, revisamos alguns dos aspectos importantes da configuração e gerenciamento de SSL na hospedagem MySQL. Isso inclui a configuração padrão, desabilitando o SSL e habilitando e aplicando o SSL em um servidor MySQL. Nossas observações são baseadas na versão da comunidade do MySQL 5.7.21.

Configuração SSL padrão no MySQL

Por padrão, o servidor MySQL sempre instala e habilita a configuração SSL. No entanto, não é obrigatório que os clientes se conectem usando SSL. Os clientes podem optar por se conectar com ou sem SSL, pois o servidor permite os dois tipos de conexões. Vamos ver como verificar esse comportamento padrão do servidor MySQL.

Quando o SSL é instalado e habilitado no servidor MySQL por padrão, normalmente veremos o seguinte:

  1. Presença de arquivos *.pem no diretório de dados do MySQL. Estes são os vários certificados e chaves de cliente e servidor que estão em uso para SSL, conforme descrito aqui.
  2. Haverá uma nota no arquivo de log de erros do mysqld durante a inicialização do servidor, como:
    • [Nota] Encontrado ca.pem, server-cert.pem e server-key.pem no diretório de dados. Tentando ativar o suporte SSL usando-os.
  3. O valor da variável ‘have_ssl’ será YES:

mysql> mostra variáveis ​​como ‘have_ssl’;

+—————+——-+

| Nome_variável | Valor |

+—————+——-+

| have_ssl      | SIM |

+—————+——-+


Com relação ao cliente MySQL, por padrão, ele sempre tenta ir para a conexão de rede criptografada com o servidor e, se isso falhar, ele volta para o modo não criptografado.

Então, conectando-se ao servidor MySQL usando o comando:

mysql -h -u -p

Podemos verificar se a conexão do cliente atual está criptografada ou não usando o comando status:

mysql> status

————–

mysql  Ver 14.14 Distrib 5.7.21, para Linux (x86_64) usando  EditLine wrapper

ID de conexão:         75

Banco de dados atual:

Usuário atual:          [email protected]

SSL:                   A cifra em uso é DHE-RSA-AES256-SHA

Pager atual:         stdout

Usando arquivo de saída:         ”

Usando delimitador:       ;

Versão do servidor:        5.7.21-log MySQL Community Server (GPL)

Versão do protocolo:      10

Conexão:            127.0.0.1 via TCP/IP

…………………………..

O campo SSL destacado acima indica que a conexão está criptografada. Podemos, no entanto, pedir ao cliente MySQL para se conectar sem SSL usando o comando:

mysql -h -u  -p –ssl-mode=DESATIVADO

 mysql> status

————–

ID de conexão:         93

Banco de dados atual:

Usuário atual:          [email protected]

SSL:                   Não está em uso

Pager atual:         stdout

Usando arquivo de saída:         ”

Usando delimitador:       ;

Versão do servidor:        5.7.21-log MySQL Community Server (GPL)

Versão do protocolo:      10

Conexão:            127.0.0.1 via TCP/IP

……………………………

Podemos ver que, embora o SSL esteja habilitado no servidor, podemos nos conectar a ele sem SSL.

Tutorial MySQL - Como configurar e gerenciar SSL em seu servidor #MySQLClique para tweet

Desativando SSL no MySQL

Se o seu requisito é desativar completamente o SSL no servidor MySQL em vez da opção padrão de 'ativado, mas modo opcional', podemos fazer o seguinte:

  1.  Exclua o certificado *.pem e os arquivos de chave no diretório de dados do MySQL.
  2. Inicie o MySQL com a opção SSL desativada. Isso pode ser feito adicionando uma entrada de linha:

ssl=0   no arquivo my.cnf.

 Podemos observar que:

  1. NÃO haverá nenhuma nota nos logs do mysqld como :
    • [Nota] Encontrado ca.pem, server-cert.pem e server-key.pem no diretório de dados. Tentando ativar o suporte SSL usando-os.
  2.  O valor da variável 'have_ssl' será DESATIVADO:

mysql> mostra variáveis ​​como ‘have_ssl’;

+—————+——-+

| Nome_variável | Valor |

+—————+——-+

| have_ssl      | DESATIVADO |

+—————+——-+

Aplicando SSL no MySQL

Vimos que embora o SSL estivesse habilitado por padrão no servidor MySQL, ele não era aplicado e ainda podíamos conectar sem SSL.

Agora, definindo a variável de sistema require_secure_transport, poderemos impor que o servidor aceite apenas conexões SSL. Isso pode ser verificado tentando se conectar ao servidor MySQL com o comando:

mysql -h -u sgroot -p –ssl-mode=DISABLED

E podemos ver que a conexão seria recusada com a seguinte mensagem de erro do servidor:

ERRO 3159 (HY000):Conexões usando transporte inseguro são proibidas enquanto –require_secure_transport=ON.

Considerações SSL para canais de replicação

Por padrão, em uma configuração de replicação do MySQL, os escravos se conectam ao mestre sem criptografia.

Portanto, para se conectar a um mestre de maneira segura para tráfego de replicação, os escravos devem usar MASTER_SSL=1; como parte do 'MUDAR MESTRE PARA' comando que especifica os parâmetros para se conectar ao mestre. Observe que esta opção também é obrigatória caso seu mestre esteja configurado para impor a conexão SSL usando require_secure_transport.