

# Criptografar conexões de clientes com SSL/TLS para instâncias de banco de dados do MariaDB no Amazon RDS
<a name="mariadb-ssl-connections"></a>

O Secure Sockets Layer (SSL) é um protocolo padrão do setor para proteger as conexões de rede entre o cliente e o servidor. Após o SSL versão 3.0, o nome mudou para Transport Layer Security (TLS). O Amazon RDS é compatível com criptografia SSL/TLS para instâncias de banco de dados do MariaDB. Usando o SSL/TLS, você pode criptografar uma conexão entre seu cliente de aplicação e sua instância de banco de dados do MariaDB. A compatibilidade com SSL/TLS está disponível em todas as Regiões da AWS.

Com o Amazon RDS, é possível proteger dados em trânsito criptografando conexões de clientes com instâncias de banco de dados do MariaDB por meio de SSL/TLS, exigindo SSL/TLS para todas as conexões com uma instância de banco de dados do MariaDB e conectando-se pelo cliente da linha de comando do MySQL com SSL/TLS (criptografado). As seções a seguir apresentam orientações sobre como configurar e utilizar a criptografia SSL/TLS para instâncias de banco de dados do MariaDB no Amazon RDS.

**Topics**
+ [Suporte de SSL/TLS para instâncias de banco de dados do MariaDB no Amazon RDS](MariaDB.Concepts.SSLSupport.md)
+ [Exigir SSL/TLS para contas de usuário específicas em uma instância de banco de dados do MariaDB](MariaDB-ssl-connections.require-ssl-users.md)
+ [Exigir SSL/TLS para todas as conexões com uma instância de banco de dados do MariaDB no Amazon RDS](mariadb-ssl-connections.require-ssl.md)
+ [Conectar-se à instância de banco de dados do MariaDB no Amazon RDS com SSL/TLS por meio do cliente de linha de comandos do MySQL (criptografado)](USER_ConnectToMariaDBInstanceSSL.CLI.md)

# Suporte de SSL/TLS para instâncias de banco de dados do MariaDB no Amazon RDS
<a name="MariaDB.Concepts.SSLSupport"></a>

O Amazon RDS cria um certificado SSL/TLS e instala o certificado na instância de banco de dados quando o Amazon RDS provisionar a instância. Esses certificados são assinados por uma autoridade de certificado. O certificado SSL/TLS inclui o endpoint da instância de banco de dados como o nome comum (CN) do certificado SSL/TLS para se proteger contra ataques de falsificação. 

Um certificado SSL/TLS criado pelo Amazon RDS é a entidade raiz confiável e deve funcionar na maioria dos casos, mas poderá falhar se a aplicação não aceitar cadeias de certificados. Se a aplicação não aceitar cadeias de certificados, tente usar um certificado intermediário para se conectar à Região da AWS. Por exemplo, é necessário usar um certificado intermediário para se conectar às regiões AWS GovCloud (US) com SSL/TLS.

Para obter informações sobre como baixar certificados, consulte [Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados](UsingWithRDS.SSL.md). Para obter mais informações sobre como usar o SSL/TLS com o MySQL, consulte [Atualizar aplicações para conexão com instâncias do MariaDB usando novos certificados SSL/TLS](ssl-certificate-rotation-mariadb.md).

O Amazon RDS para MariaDB é compatível com o Transport Layer Security (TLS) versões 1.3, 1.2, 1.1 e 1.0. A compatibilidade com o TLS depende da versão secundária do MariaDB. A tabela a seguir mostra a compatibilidade das versões secundárias do MariaDB com o TLS.


| Versão do TLS | MariaDB 11.8 | MariaDB 11.4 | MariaDB 10.11 | MariaDB 10.6 | MariaDB 10.5 | MariaDB 10.4 | 
| --- | --- | --- | --- | --- | --- | --- | 
|  TLS 1.3  |  Todas as versões secundárias  |  Todas as versões secundárias  |  Todas as versões secundárias  |  Todas as versões secundárias  |  Todas as versões secundárias  |  Todas as versões secundárias  | 
|  TLS 1.2  |  Todas as versões secundárias  |  Todas as versões secundárias  |  Todas as versões secundárias  |  Todas as versões secundárias  |  Todas as versões secundárias  |  Todas as versões secundárias  | 
|  TLS 1.1  |  Não suportado  |  Não suportado  |  Sem compatibilidade  |  10.6.16 e anterior  |  10.5.23 e anterior  |  10.4.32 e anterior  | 
|  TLS 1.0  |  Não suportado  |  Não suportado  | Sem compatibilidade | 10.6.16 e anterior |  10.5.23 e anterior  |  10.4.32 e anterior  | 

# Exigir SSL/TLS para contas de usuário específicas em uma instância de banco de dados do MariaDB
<a name="MariaDB-ssl-connections.require-ssl-users"></a>

É possível exigir criptografia SSL/TLS para conexões de contas de usuário especificadas com as instâncias de banco de dados do MariaDB no Amazon RDS. Proteger informações confidenciais contra acesso não autorizado ou interceptação é crucial para aplicar políticas de segurança nas quais a confidencialidade dos dados é uma questão importante.

Se deseja exigir conexões SSL/TLS para contas de usuários específicos, siga uma das instruções abaixo (dependendo da versão do MySQL) para exigir conexões SSL/TLS na conta de usuário `encrypted_user`.

Para fazer isso, use a instrução a seguir.

```
ALTER USER 'encrypted_user'@'%' REQUIRE SSL;
```

Para obter mais informações sobre as conexões SSL/TLS com o MariaDB, consulte [Securing Connections for Client and Server](https://mariadb.com/kb/en/securing-connections-for-client-and-server/) (Como proteger conexões para cliente e servidor) na documentação do MariaDB.

# Exigir SSL/TLS para todas as conexões com uma instância de banco de dados do MariaDB no Amazon RDS
<a name="mariadb-ssl-connections.require-ssl"></a>

Use o parâmetro `require_secure_transport` para exigir que todas as conexões de usuários à sua instância de banco de dados do MariaDB usem SSL/TLS. Para as versões 11.4 e anteriores, o parâmetro `require_secure_transport` é definido como `OFF` por padrão. Para a versão 11.8 e versões posteriores, o valor padrão é definido como `ON`, aplicando SSL/TLS para conexões com a sua instância de banco de dados. Você poderá alterar o parâmetro `require_secure_transport` para `OFF` se forem necessárias conexões não seguras.

**nota**  
O parâmetro `require_secure_transport` só é compatível com o MariaDB versão 10.5 e posterior.

Você pode definir o valor de parâmetro `require_secure_transport` atualizando o grupo de parâmetros do banco de dados de sua instância de banco de dados. Você não precisa reinicializar sua instância de banco de dados para que a alteração entre em vigor.

Quando o parâmetro `require_secure_transport` é definido como `ON` para uma instância de banco de dados, um cliente de banco de dados poderá se conectar a ela se puder estabelecer uma conexão criptografada. Caso contrário, uma mensagem de erro semelhante à seguinte é retornada para o cliente:

```
ERROR 1045 (28000): Access denied for user 'USER'@'localhost' (using password: YES | NO)
```

Para obter informações sobre como configurar parâmetros, consulte [Modificar parâmetros em um grupo de parâmetros de banco de dados no Amazon RDS](USER_WorkingWithParamGroups.Modifying.md).

Para obter mais informações sobre o parâmetro `require_secure_transport`, consulte a [documentação do MariaDB](https://mariadb.com/docs/ent/ref/mdb/system-variables/require_secure_transport/).

# Conectar-se à instância de banco de dados do MariaDB no Amazon RDS com SSL/TLS por meio do cliente de linha de comandos do MySQL (criptografado)
<a name="USER_ConnectToMariaDBInstanceSSL.CLI"></a>

Os parâmetros `mysql` do programa cliente serão ligeiramente diferentes, se você estiver usando a versão do MySQL 5.7, a versão do MySQL 8.0 ou a versão do MariaDB.

Para descobrir qual versão você tem, execute o comando `mysql` com a opção `--version`. No exemplo a seguir, a saída mostra que o programa cliente é do MariaDB.

```
$ mysql --version
mysql  Ver 15.1 Distrib 10.5.15-MariaDB, for osx10.15 (x86_64) using readline 5.1
```

A maioria das distribuições Linux, como o Amazon Linux, CentOS, SUSE e Debian, substituiu o MySQL pelo MariaDB, e a versão do `mysql` neles é de MariaDB.

Para conectar-se à sua instância de banco de dados usando o SSL/TLS, siga estas etapas:

**Como conectar-se a uma instância de banco de dados com o SSL/TLS usando o cliente de linha de comando do MySQL**

1. Você pode baixar um certificado raiz que funciona para todas as Regiões da AWS.

   Para obter informações sobre como baixar certificados, consulte [Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados](UsingWithRDS.SSL.md).

1. Use um cliente da linha de comando do MySQL para conectar-se a uma instância de banco de dados com criptografia SSL/TLS. Para o parâmetro `-h`, substitua o nome de DNS (endpoint) da instância de banco de dados. Para o parâmetro `--ssl-ca`, substitua o nome do arquivo de certificado SSL/TLS. Para o parâmetro `-P`, substitua a porta da sua instância de banco de dados. Para o parâmetro `-u`, substitua o nome de usuário de um usuário de banco de dados válido, como o usuário principal. Digite a senha do usuário mestre quando lhe for solicitado.

   O exemplo a seguir mostra como iniciar o cliente usando o parâmetro `--ssl-ca` usando o cliente MariaDB:

   ```
   mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl -P 3306 -u myadmin -p
   ```

   Para exigir que a conexão SSL/TLS verifique o endpoint da instância de banco de dados em relação ao endpoint no certificado SSL/TLS, insira o seguinte comando:

   ```
   mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-verify-server-cert -P 3306 -u myadmin -p
   ```

   O exemplo a seguir mostra como iniciar o cliente usando o parâmetro `--ssl-ca` com o MySQL 5.7 e versões posteriores.

   ```
   mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-mode=REQUIRED -P 3306 -u myadmin -p
   ```

1. Digite a senha do usuário mestre quando lhe for solicitado.

Você deve ver saída semelhante ao seguinte:

```
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.6.10-MariaDB-log Source distribution
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
```