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

Atualizar aplicações para conexão com instâncias de banco de dados Oracle 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.

Importante

Quando você altera o certificado de uma instância de banco de dados Oracle do Amazon RDS, somente o listener do banco de dados é reiniciado. A instância de banco de dados não é reiniciada. As conexões de banco de dados existentes não são afetadas, mas novas conexões encontrarão erros por um breve período enquanto o listener é reiniciado.

nota

Para aplicativos cliente que usam SSL/TLS para conectar-se às instâncias de banco de dados, atualize os armazenamentos confiáveis do aplicativo 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 Oracle, consulte Oracle Secure Sockets Layer.

Determinar se as aplicações usam SSL para sua instância de banco de dados

Se a instância banco de dados Oracle usa um grupo de opção com a opção SSL adicionada, você pode estar usando SSL. Confira isso seguindo as instruções em Listar as opções e as configurações de opções para um grupo de opções. Para obter informações sobre a opção SSL, consulte Oracle Secure Sockets Layer.

Verifique o log do ouvinte para determinar se há conexões SSL. Esta é uma saída de exemplo em um log de ouvinte.

date time * (CONNECT_DATA=(CID=(PROGRAM=program) (HOST=host)(USER=user))(SID=sid)) * (ADDRESS=(PROTOCOL=tcps)(HOST=host)(PORT=port)) * establish * ORCL * 0

Quando PROTOCOL tem o valor tcps para uma entrada, ele mostra uma conexão SSL. No entanto, quando HOST é 127.0.0.1 , você pode ignorar a entrada. As conexões de 127.0.0.1 são um agente de gerenciamento local na instância de banco de dados. Essas conexões não são conexões SSL externas. Portanto, você terá aplicativos conectados usando SSL se você vir entradas de log do ouvinte em que PROTOCOL é tcps e HOST não é 127.0.0.1.

Para verificar o log do ouvinte, você pode publicá-lo no Amazon CloudWatch Logs. Para obter mais informações, consulte Publicação de logs da Oracle no Amazon CloudWatch Logs.

Atualizar o armazenamento confiável de aplicações

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

Atualizar o armazenamento confiável de aplicações para SQL*Plus

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

nota

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

Como atualizar o armazenamento confiável para aplicativos SQL*Plus

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

    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. Execute o comando a seguir para atualizar o Oracle Wallet.

    prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert -cert $ORACLE_HOME/ssl_wallet/rds-ca-2019-root.pem -auto_login_only

    Substitua o nome do arquivo pelo arquivo obtido por download.

  3. Execute o seguinte comando para confirmar que a carteira foi atualizada com sucesso.

    prompt>orapki wallet display -wallet $ORACLE_HOME/ssl_wallet

    Sua saída deve conter o seguinte.

    Trusted Certificates: Subject: CN=Amazon RDS Root 2019 CA,OU=Amazon RDS,O=Amazon Web Services\, Inc.,L=Seattle,ST=Washington,C=US

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 2019 que funciona para todas as regiões e coloque o arquivo no diretório ssl_wallet.

    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

Exemplo de código Java para estabelecer conexões SSL

O exemplo de código a seguir mostra como configurar a conexão SSL usando o JDBC.

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; public class OracleSslConnectionTest { private static final String DB_SERVER_NAME = "<dns-name-provided-by-amazon-rds>"; private static final Integer SSL_PORT = "<ssl-option-port-configured-in-option-group>"; private static final String DB_SID = "<oracle-sid>"; private static final String DB_USER = "<user name>"; private static final String DB_PASSWORD = "<password>"; // This key store has only the prod root ca. private static final String KEY_STORE_FILE_PATH = "<file-path-to-keystore>"; private static final String KEY_STORE_PASS = "<keystore-password>"; public static void main(String[] args) throws SQLException { final Properties properties = new Properties(); final String connectionString = String.format( "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=%s)(PORT=%d))(CONNECT_DATA=(SID=%s)))", DB_SERVER_NAME, SSL_PORT, DB_SID); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD); properties.put("oracle.jdbc.J2EE13Compliant", "true"); properties.put("javax.net.ssl.trustStore", KEY_STORE_FILE_PATH); properties.put("javax.net.ssl.trustStoreType", "JKS"); properties.put("javax.net.ssl.trustStorePassword", KEY_STORE_PASS); final Connection connection = DriverManager.getConnection(connectionString, properties); // If no exception, that means handshake has passed, and an SSL connection can be opened } }
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.