Atualizar aplicações para conexão com instâncias de banco de dados Oracle usando novos certificados SSL/TLS
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.
Importante
Quando você altera o certificado de uma instância de banco de dados do Amazon RDS for Oracle, 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 baixar certificados, consulte Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster 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.
Tópicos
Como descobrir se as aplicações se conectam usando SSL
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
-
Baixe o novo certificado raiz que funciona para todas as regiões da AWS e coloque o arquivo no diretório
ssl_wallet
.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.
-
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/
ssl-cert.pem
-auto_login_onlySubstitua o nome do arquivo pelo arquivo baixado.
-
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.
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.
Para obter exemplos de scripts que importam certificados, consulte Script de exemplo para importar certificados para o seu armazenamento confiável.
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 suas conexões com o banco de dados usam SSL/TLS e ter atualizado o armazenamento confiável de aplicações, você poderá atualizar o banco de dados para usar os certificados rds-ca-rsa2048-g1. Para obter instruções, consulte a etapa 3 em Atualizar o certificado CA modificando a instância ou o cluster de banco de dados.