

# Atualizar aplicações para conexão com instâncias de banco de dados Microsoft SQL Server usando novos certificados SSL/TLS
<a name="ssl-certificate-rotation-sqlserver"></a>

Em 13 de janeiro de 2023, o Amazon RDS publicou novos certificados de autoridade de certificação (CA) para se conectar às suas instâncias de banco de dados do RDS via Secure Socket Layer ou Transport Layer Security (SSL/TLS). A seguir, você pode encontrar informações sobre como atualizar seus aplicativos para usar os novos certificados.

Este tópico pode ajudá-lo a determinar se algum aplicativo cliente usa SSL/TLS para conectar-se às suas instâncias de banco de dados. Em caso positivo, examine mais a fundo se esse aplicativo exige verificação de certificado para se conectar. 

**nota**  
Algumas aplicações são configuradas para se conectar a instâncias de banco de dados do SQL Server apenas quando podem verificar com êxito o certificado no servidor.   
Para esses aplicativos, você deve atualizar os repositórios confiáveis de aplicativos cliente para incluir os novos certificados de CA. 

Depois de atualizar seus certificados de CA nos armazenamentos confiáveis do aplicativo cliente, você pode fazer o rodízio dos certificados nas suas instâncias de banco de dados. É altamente recomendável testar esses procedimentos em um ambiente de desenvolvimento ou teste antes de implementá-los em seus ambientes de produção.

Para obter mais informações sobre a mudança de certificados, consulte [Alternar o certificado SSL/TLS](UsingWithRDS.SSL-certificate-rotation.md). Para obter mais informações sobre como fazer download de 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 informações sobre o uso de SSL/TLS com instâncias de bancos de dados Microsoft SQL Server, consulte [Uso do SSL com uma instância de banco de dados do Microsoft SQL Server](SQLServer.Concepts.General.SSL.Using.md).

**Topics**
+ [Determinar se alguma aplicação está se conectando à sua instância de banco de dados Microsoft SQL Server usando SSL](#ssl-certificate-rotation-sqlserver.determining-server)
+ [Determinar se um cliente requer verificação de certificado para se conectar](#ssl-certificate-rotation-sqlserver.determining-client)
+ [Atualizar o armazenamento confiável de aplicações](#ssl-certificate-rotation-sqlserver.updating-trust-store)

## Determinar se alguma aplicação está se conectando à sua instância de banco de dados Microsoft SQL Server usando SSL
<a name="ssl-certificate-rotation-sqlserver.determining-server"></a>

Verifique a configuração da instância de banco de dados para obter o valor do parâmetro `rds.force_ssl`. Por padrão, o parâmetro `rds.force_ssl` é definido como 0 (desativado). Se o parâmetro `rds.force_ssl` estiver definido como 1 (ativado), os clientes serão obrigados a usar SSL/TLS para conexões. Para ter mais informações sobre parameter groups, consulte [Grupos de parâmetros para Amazon RDS](USER_WorkingWithParamGroups.md).

Executar a seguinte consulta para obter a opção de criptografia atual para todas as conexões abertas para uma instância de banco de dados. A coluna `ENCRYPT_OPTION` retornará `TRUE` se a conexão estiver criptografada.

```
select SESSION_ID,
    ENCRYPT_OPTION,
    NET_TRANSPORT,
    AUTH_SCHEME
    from SYS.DM_EXEC_CONNECTIONS
```

Essa consulta mostra apenas as conexões atuais. Ela não mostra se os aplicativos que se conectaram e desconectaram no passado usaram SSL.

## Determinar se um cliente requer verificação de certificado para se conectar
<a name="ssl-certificate-rotation-sqlserver.determining-client"></a>

Você pode verificar se diferentes tipos de clientes exigem verificação do certificado para se conectar.

**nota**  
Se você usar conectores diferentes dos listados, consulte a documentação do conector específico para obter informações sobre como ele impõe conexões criptografadas. Para obter mais informações, consulte [Módulos de conexão para bancos de dados Microsoft SQL](https://docs.microsoft.com/en-us/sql/connect/sql-connection-libraries?view=sql-server-ver15), na documentação do Microsoft SQL Server.

### SQL Server Management Studio
<a name="ssl-certificate-rotation-sqlserver.determining-client.management-studio"></a>

Verifique se a criptografia é aplicada para conexões do SQL Server Management Studio:

1. Inicie o SQL Server Management Studio.

1. Em **Connect to server (Conectar-se ao servidor)**, digite as informações de servidor, o nome de usuário e a senha de login.

1. Escolha **Options**.

1. Verifique se **Encrypt connection (Criptografar conexão)** está selecionada na página de conexão.

Para obter mais informações sobre o SQL Server Management Studio, consulte [Usar o SQL Server Management Studio](http://msdn.microsoft.com/en-us/library/ms174173.aspx).

### Sqlcmd
<a name="ssl-certificate-rotation-sqlserver.determining-client.sqlcmd"></a>

Os exemplos a seguir com o cliente `sqlcmd` mostram como verificar uma conexão SQL Server de um script para determinar se conexões bem-sucedidas requerem um certificado válido. Para obter mais informações, consulte [Conectar-se com sqlcmd](https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connecting-with-sqlcmd?view=sql-server-ver15) na documentação do Microsoft SQL Server.

Ao usar `sqlcmd`, uma conexão SSL exigirá verificação com base no certificado do servidor se você usar o argumento de comando `-N` para criptografar conexões, como no exemplo a seguir.

```
$ sqlcmd -N -S dbinstance.rds.amazon.com -d ExampleDB                     
```

**nota**  
Se `sqlcmd` for chamado com a opção `-C`, ele confiará no certificado do servidor, mesmo que ele não corresponda ao armazenamento confiável no lado do cliente.

### ADO.NET
<a name="ssl-certificate-rotation-sqlserver.determining-client.adonet"></a>

No exemplo a seguir, o aplicativo se conecta usando SSL, e o certificado de servidor deve ser verificado.

```
using SQLC = Microsoft.Data.SqlClient;
 
...
 
    static public void Main()  
    {  
        using (var connection = new SQLC.SqlConnection(
            "Server=tcp:dbinstance.rds.amazon.com;" +
            "Database=ExampleDB;User ID=LOGIN_NAME;" +
            "Password=YOUR_PASSWORD;" + 
            "Encrypt=True;TrustServerCertificate=False;"
            ))
        {  
            connection.Open();  
            ...
        }
```

### Java
<a name="ssl-certificate-rotation-sqlserver.determining-client.java"></a>

No exemplo a seguir, o aplicativo se conecta usando SSL, e o certificado de servidor deve ser verificado.

```
String connectionUrl =   
    "jdbc:sqlserver://dbinstance.rds.amazon.com;" +  
    "databaseName=ExampleDB;integratedSecurity=true;" +  
    "encrypt=true;trustServerCertificate=false";
```

Para habilitar a criptografia SSL para clientes que se conectam usando o JDBC, talvez seja necessário adicionar o certificado do Amazon RDS para a loja de certificados de Java CA. Para obter instruções, consulte o tópico sobre como [Configurar o cliente para criptografia](https://docs.microsoft.com/en-us/SQL/connect/jdbc/configuring-the-client-for-ssl-encryption?view=sql-server-2017), na documentação do Microsoft SQL Server. Você também pode fornecer o nome de arquivo do certificado de CA confiável diretamente, anexando `trustStore=path-to-certificate-trust-store-file` a string de conexão.

**nota**  
Se você usar `TrustServerCertificate=true` (ou equivalente) na string de conexão, o processo de conexão ignorará a validação da cadeia de confiança. Nesse caso, o aplicativo se conecta mesmo que o certificado não possa ser verificado. O uso de `TrustServerCertificate=false` impõe a validação de certificado e é uma prática recomendada.

## Atualizar o armazenamento confiável de aplicações
<a name="ssl-certificate-rotation-sqlserver.updating-trust-store"></a>

Você pode atualizar o armazenamento confiável para aplicativos que usam o Microsoft SQL Server. Para obter instruções, consulte [Criptografia de conexões específicas](SQLServer.Concepts.General.SSL.Using.md#SQLServer.Concepts.General.SSL.Client). Além disso, consulte o tópico sobre como [Configurar o cliente para criptografia](https://docs.microsoft.com/en-us/SQL/connect/jdbc/configuring-the-client-for-ssl-encryption?view=sql-server-2017), na documentação do Microsoft SQL Server.

Se você estiver usando um sistema operacional que não seja o Microsoft Windows, consulte a documentação da distribuição do software para implementação de SSL/TLS para obter informações sobre como adicionar novo certificado de CA raiz. Por exemplo, o OpenSSL e o GnuTLS são opções populares. Use o método de implementação para adicionar confiança ao certificado de CA raiz do RDS. A Microsoft fornece instruções para configurar certificados em alguns sistemas.

Para obter informações sobre como baixar o certificado raiz, 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 exemplos de scripts que importam certificados, consulte [Script de exemplo para importar certificados para o seu armazenamento confiável](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script).

**nota**  
Ao atualizar o armazenamento confiável, é possível reter certificados mais antigos, além de adicionar os novos certificados.