Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Conexão Oracle Database TLS1.2 / SSL usando JDBC thin e JKS


Aqui estão as etapas a serem seguidas para configurar o driver thin Oracle JDBC para conectar-se ao banco de dados usando TLS v1.2 (supondo que a configuração do banco de dados esteja correta).

Etapa 1:aplique o patch para o bug 19030178 (não é necessário a partir da versão 12.2.0.1)

Você precisará aplicar o patch para o bug 19030178 que permite TLSv1.2. Observe que o patch permite o TLSv1.2, mas não o habilita por padrão. Portanto, com o driver corrigido 12.1.0.2, você também precisa definir oracle.net.ssl_version='1.2'. Essa propriedade pode ser definida como uma propriedade do sistema (usando -D) ou por meio das propriedades da fonte de dados.

Etapa 2:instalar arquivos JCE

Sem os arquivos Java Cryptography Extension (JCE), os conjuntos de cifras fortes (por exemplo, TLS_RSA_WITH_AES_256_CBC_SHA256) não serão habilitados. Portanto, se você estiver usando o JDK7 ou o JDK8, deverá instalar os arquivos de política de jurisdição de força ilimitada JCE. Esses arquivos podem ser encontrados no site da Oracle.

Etapa 3:sempre use a atualização mais recente do JDK

Certifique-se de usar a atualização mais recente do JDK7 ou JDK8 porque foram corrigidos os bugs necessários para o TLSv1.2.

Etapa 4:use arquivos JKS em vez de carteiras

Parece que você já fez isso, mas apenas para os outros verem:as carteiras são complicadas de configurar e usar com o driver thin Oracle JDBC porque exigem jars extras e propriedades extras. Os arquivos JKS, por outro lado, são suportados nativamente no JRE e, na minha experiência, sempre funcionaram bem.

Etapa 5:ao usar o JDK7, ative explicitamente conjuntos de cifras fortes

Esta etapa não é necessária ao usar o JDK8. Com o JDK7, se você estiver usando um conjunto de criptografia forte, como TLS_RSA_WITH_AES_256_CBC_SHA256, deverá habilitá-lo por meio da propriedade de conexão oracle.net.ssl_cipher_suites.

Etapa 6:depurar com -Djavax.net.debug=all

Finalmente, se você tiver mais problemas, poderá ativar o rastreamento para descobrir o que está acontecendo usando -Djavax.net.debug=all.

====EXEMPLO COM JDK7 E O 12.1.0.2 THIN DRIVER ATUALIZADO =====
java  -Doracle.net.ssl_version='1.2' -Doracle.net.ssl_cipher_suites='(TLS_RSA_WITH_AES_256_CBC_SHA256)' -Doracle.net.ssl_server_dn_match='true' -Djavax.net.ssl.trustStore='truststore.jks' -Djavax.net.ssl.trustStorePassword='welcome1' -Djavax.net.ssl.keyStore='keystore.jks' -Djavax.net.ssl.keyStorePassword='welcome1'  JDBCTest 'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=host)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=myservice))(security=(ssl_server_cert_dn="CN=name,O=org,L=city,ST=state,C=country")))' 'pdb1' 'welcome1'

====EXEMPLO COM JDK8 E O 12.1.0.2 THIN DRIVER ATUALIZADO =====
java -Doracle.net.ssl_version='1.2' -Doracle.net.ssl_server_dn_match='true' -Djavax.net.ssl.trustStore='truststore.jks' -Djavax.net.ssl.trustStorePassword='welcome1' -Djavax.net.ssl.keyStore='keystore.jks' -Djavax.net.ssl.keyStorePassword='welcome1'  JDBCTest 'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=host)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=myservice))(security=(ssl_server_cert_dn="CN=name,O=org,L=city,ST=state,C=country")))' 'pdb1' 'welcome1'