Atualizar aplicações para conexão com instâncias de banco de dados Microsoft SQL Server usando novos certificados SSL/TLS - Amazon Relational Database Service

Atualizar aplicações para conexão com instâncias de banco de dados Microsoft SQL Server usando novos certificados SSL/TLS

Em 19 de setembro de 2019, o Amazon RDS publicou novos certificados de autoridade de certificação (CA) para conectar-se às suas instâncias de banco de dados do RDS via SSL (Secure Socket Layer) ou TLS (Transport Layer Security). 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

Alguns aplicativos são configurados para se conectar a instâncias de banco de dados SQL Server apenas quando podem verificar com sucesso 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. Para obter mais informações sobre como fazer download de certificados, consulte Usar o SSL/TLS para criptografar uma conexão com uma instância de banco de dados. 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.

Determinar se alguma aplicação está se conectando à sua instância de banco de dados Microsoft SQL Server usando SSL

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 estiver definido como 1 (ativado), os clientes serão obrigados a usar SSL/TLS para conexões. Para obter mais informações sobre parameter groups, consulte Como trabalhar com grupos de parâmetros de banco de dados. Você também pode encontrar a configuração desse parâmetro no DMV sys.dm_server_registry.

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

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, na documentação do Microsoft SQL Server.

SQL Server Management Studio

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

  1. Inicie o SQL Server Management Studio.

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

  3. Escolha Options.

  4. 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.

Sqlcmd

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 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

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

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, 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

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. Além disso, consulte o tópico sobre como Configurar o cliente para criptografia, 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.

nota

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

Atualizar o armazenamento confiável de aplicações para JDBC

Você pode atualizar o armazenamento confiável para aplicativos que usam conexões JDBC para SSL/TLS.

Como atualizar o armazenamento confiável para aplicativos JDBC

  1. Faça download do certificado raiz de 2019 que funcione para todas as regiões da AWS e coloque o arquivo no diretório do armazenamento confiável.

    Para obter informações sobre como fazer download do certificado raiz, consulte Usar o SSL/TLS para criptografar uma conexão com uma instância de banco de dados.

  2. Converta o certificado para o formato .der usando o seguinte comando.

    openssl x509 -outform der -in rds-ca-2019-root.pem -out rds-ca-2019-root.der

    Substitua o nome do arquivo pelo arquivo obtido por download.

  3. Importe o certificado para o repositório de chaves usando o seguinte comando.

    keytool -import -alias rds-root -keystore clientkeystore -file rds-ca-2019-root.der
  4. Confirme se o armazenamento de chaves foi atualizado com êxito.

    keytool -list -v -keystore clientkeystore.jks

    Insira a senha do repositório de chaves quando solicitado.

    Sua saída deve conter o seguinte.

    rds-root,date, trustedCertEntry, Certificate fingerprint (SHA1): D4:0D:DB:29:E3:75:0D:FF:A6:71:C3:14:0B:BF:5F:47:8D:1C:80:96 # This fingerprint should match the output from the below command openssl x509 -fingerprint -in rds-ca-2019-root.pem -noout
Importante

Depois de determinar que as suas conexões com o banco de dados usam SSL/TLS e ter atualizado o armazenamento confiável de aplicativos, você poderá atualizar seu banco de dados para usar os certificados rds-ca-2019. Para obter instruções, consulte a etapa 3 em Atualizar o certificado CA modificando sua instância de banco de dados.