Conexões JDBC Thin com uma Wallet (mTLS)

O Autonomous Database determina uma conexão segura que usa a Segurança da Camada de Transporte (TLSv1.2). Dependendo das opções de configuração de rede, o Autonomous Database suporta a autenticação mTLS e TLS.

Observação

Se você usar TLS, em vez de mTLS, para suas conexões que utilizam o Driver JDBC Thin com JDK8u162 ou superior, não será necessária uma wallet. As conexões TLS são ativadas para as seguintes configurações de rede:


  • Somente acesso de ponto final privado: configuração de rede com um ponto final privado.

  • Acesso seguro somente de IPs e VCNs permitidos: configuração com uma Lista de Controle de Acesso (ACL)

    Se o Autonomous Database estiver em um ponto final público sem qualquer ACL, você poderá adicionar 0.0.0.0/0 como sua ACL de CIDR e ativar a autenticação TLS. A adição de 0.0.0.0/0 como ACL de CIDR é idêntica à inclusão do Autonomous Database no ponto final público sem ACL.

Consulte Conexões Seguras com o Autonomous Database com mTLS ou com TLS para obter mais informações.

Pré-requisitos de Conexão do Driver JDBC Thin com Wallets (mTLS)

Os aplicativos que usam o driver JDBC Thin suportam autenticação TLS e mTLS ( mutual TLS). O uso da autenticação mTLS exige que você forneça as credenciais do banco de dados Oracle, incluindo as wallets Oracle ou os arquivos Java KeyStore (JKS), ao estabelecer conexão com o banco de dados.

Execute as seguintes etapas antes de estabelecer conexão com o banco de dados:

  1. Provisionar o Autonomous Database: Crie um banco de dados e obtenha suas credenciais de banco de dados (nome de usuário e senha).

    Consulte Provisionar uma Instância do Autonomous Database para obter mais informações.

  2. Para conexões TLS mútuas, Faça Download das Credenciais do Cliente: Descompacte o arquivo wallet_databasename.zip em um local seguro. Certifique-se de que somente usuários autorizados tenham acesso a esses arquivos.

    Consulte Download de Credenciais do Cliente (Wallets) para obter informações sobre o download de credenciais do cliente para o Autonomous Database.

  3. Verificar a versão do JDK por segurança: Se você está usando JDK11, JDK10 ou JDK9, não precisa fazer nada nesta etapa. Se a sua versão do JDK for inferior a JDK8u162, faça download dos Arquivos de Política de Jurisdição JCE Unlimited Strength. Consulte as observações de instalação no arquivo README. Faça download dos arquivos JCE em Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download.
  4. Verificar Versão do Driver JDBC: Faça download de um driver JDBC Thin suportado (ojdbc8.jar e ucp.jar). Você também precisa dos jars adicionais: oraclepki.jar, osdt_core.jar e osdt_cert.jar para uso com wallets Oracle.

    As versões suportadas são:

    • JDBC Thin: 11.2.0.4 (ou mais recente com patch one-off para o Bug 28492769), 12.2 (ou mais recente com patch one-off para o Bug 28492769), 18 (versão base ou mais recente com patch one-off para o Bug 28492769), 19 (versão base ou mais recente) ou 21 (versão base ou mais recente)

    Para aplicativos que usam o recurso Universal Connection Pool (UCP) do JDBC, é altamente recomendável usar versões 19.13 ou mais recentes, 21.3 ou mais recentes do driver JDBC. Essas versões incluem um comportamento de drenagem adequado para minimizar o impacto nos aplicativos quando a manutenção planejada é executada no Autonomous Database. O UCP reabastecerá as conexões no pool de forma proativa para que as conexões ativas não sejam afetadas pela manutenção.

    Para versões mais antigas do driver, um patch para bug 31112088 também pode ser solicitado ao preencher uma Solicitação de Serviço.

    Faça download das versões suportadas: Downloads de Jars Companion e do driver JDBC do Oracle Database.

Usando uma String de Conexão do URL JDBC com o Driver JDBC Thin e Wallets

A string de conexão é encontrada no arquivo tnsnames.ora, que faz parte do download das credenciais do cliente. O arquivo tnsnames.ora contém os nomes de serviço predefinidos. Cada serviço tem seu próprio alias de TNS e string de conexão.

Veja a seguir uma entrada de amostra, com dbname_high como alias de TNS e uma string de conexão em tnsnames.ora
dbname_high= (description=
      (address=(protocol=tcps)(port=1522)(host=adb.example.oraclecloud.com))
      (connect_data=(service_name=dbname_high.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

Defina o local do tnsnames.ora com a propriedade TNS_ADMIN de uma das seguintes maneiras:

  • Como parte da string de conexão (somente com o driver JDBC 18.3 ou mais recente)
  • Como uma propriedade do sistema, -Doracle.net.tns_admin
  • Como uma propriedade de conexão (OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN

Usando o driver JDBC 18.3, a string de conexão inclui o alias de TNS e a propriedade de conexão TNS_ADMIN.

Amostra de string de conexão usando o driver JDBC 18.3 (Linux):

DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"

Amostra de string de conexão usando o driver JDBC 18.3 (Windows):

DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=C:\\Users\\test\\wallet_dbname"

A propriedade de conexão TNS_ADMIN especifica o seguinte:

  • O local do arquivo tnsnames.ora.
  • O local dos arquivos da Oracle Wallet (ewallet.sso, ewallet.p12) ou Java KeyStore (JKS) (truststore.jks, keystore.jks).
  • O local do arquivo ojdbc.properties. Esse arquivo contém as propriedades de conexão exigidas para usar Oracle Wallets ou Java KeyStore (JKS).
Observação

Se você estiver usando drivers JDBC 12.2.0.1 ou mais antigos, a string de conexão conterá apenas o alias de TNS. Para estabelecer conexão usando drivers JDBC mais antigos:

  • Defina o local do arquivo tnsnames.ora como uma propriedade do sistema com -Doracle.net.tns_admin ou como uma propriedade de conexão (OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN).
  • Defina as propriedades de conexão relacionadas a wallet ou JKS além de TNS_ADMIN.

Por exemplo, nesse caso, você define o alias de TNS no DB_URL sem a parte TNS_ADMIN como:

DB_URL=”jdbc:oracle:thin:@dbname_high”

Consulte Nomes de Serviço de Banco de Dados para o Autonomous Database para obter mais detalhes.

Usando uma Conexão JDBC com o Driver JDBC 18.3

Os aplicativos que usam o driver JDBC Thin podem estabelecer conexão com o Autonomous Databases usando Wallets Oracle ou Java KeyStore (JKS).

Usando Oracle Wallet

Para usar o Java e o Driver JDBC Thin 18.3 para se conectar ao Autonomous Database com a Oracle Wallet:

  1. Certifique-se de que os pré-requisitos sejam atendidos: Consulte Requisitos de Conexão do Driver JDBC Thin com Wallets (mTLS) para obter mais informações.

  2. Verifique a conexão: Você pode usar um programa Java, um servlet ou IDEs para verificar a conexão com o banco de dados. Um teste simples é fazer download de DataSourceSample.java ou UCPSample.java usando amostras de código JDBC e atualizar o URL de conexão para ter o alias de TNS necessário e informar TNS_ADMIN, fornecendo o caminho de tnsnames.ora e os arquivos de wallet. Além disso, no código-fonte de amostra, atualize o nome de usuário e a senha do banco de dados. Por exemplo:

    DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"
    Observação

    Se você estiver usando o Microsoft Active Directory com um banco de dados, no código-fonte de amostra, atualize o nome do usuário com o nome do usuário do Active Directory e atualize a senha com a senha do usuário do Active Directory. Consulte Usar o Microsoft Active Directory com o Autonomous Database para obter mais informações.
  3. Defina o local da wallet: O arquivo de propriedades ojdbc.properties é pré-carregado com a propriedade de conexão relacionada à wallet.

    oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))
    Observação

    Você não modifica o arquivo ojdbc.properties. O valor de TNS_ADMIN determina o local da wallet.
  4. Compile e Execute: Para obter uma conexão bem-sucedida, compile e execute a amostra. Certifique-se de ter oraclepki.jar , osdt_core.jar e osdt_cert.jar, em classpath. Por exemplo:

    java –classpath
          ./lib/ojdbc8.jar:./lib/ucp.jar:./lib/oraclepki.jar:./lib/osdt_core.jar:./lib/osdt_cert.jar:. UCPSample
Observação

A parte da wallet de log-in automático do arquivo zip de credenciais do cliente baixado do Autonomous Database elimina a necessidade de seu aplicativo usar autenticação de nome de usuário/senha.

Usando o Java KeyStore

Para usar o Java e o Driver JDBC Thin 18.3 para se conectar ao Autonomous Database com o Java KeyStore (JKS), faça o seguinte:

  1. Certifique-se de que os pré-requisitos sejam atendidos: Consulte Requisitos de Conexão do Driver JDBC Thin com Wallets (mTLS) para obter mais informações.

  2. Pronto para os detalhes do banco de dados: Você pode usar um programa Java, um servlet ou IDEs para verificar a conexão com o banco de dados. Um teste simples é fazer download de DataSourceSample.java ou UCPSample.java em amostras de código JDBC. Nessa amostra, use o URL de conexão, conforme mostrado. Observe que a conexão DB_URL contém o alias de TNS, por exemplo, dbname_high, presente no arquivo tnsnames.ora. Você pode fornecer o caminho do arquivo tnsnames.ora por meio da propriedade TNS_ADMIN, conforme mostrado no URL. Certifique-se de utilizar o nome de usuário e a senha relacionados ao seu banco de dados.

    DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"
    Observação

    Se você estiver usando o Microsoft Active Directory com o Autonomous Database, certifique-se de alterar o código-fonte de amostra para usar o nome do usuário do Active Directory e a senha do usuário do Active Directory. Consulte Usar o Microsoft Active Directory com o Autonomous Database para obter mais informações.
  3. Defina ao arquivo ojdbc.properties as propriedades de conexão relacionadas ao JKS. As senhas keyStore e do armazenamento confiável são aquelas especificadas quando você faz download do arquivo .zip das credenciais do cliente.

    Para usar a conectividade SSL em vez da Oracle Wallet, especifique os arquivos de armazenamento de chaves e armazenamento confiável e a senha respectiva no arquivo ojdbc.properties da seguinte forma:

    
    # Properties for using Java KeyStore (JKS)
    oracle.net.ssl_server_dn_match=true
    javax.net.ssl.trustStore==${TNS_ADMIN}/truststore.jks
    javax.net.ssl.trustStorePassword=password
    javax.net.ssl.keyStore==${TNS_ADMIN}/keystore.jks
    javax.net.ssl.keyStorePassword=password
    Observação

    Comente a propriedade relacionada à wallet no arquivo ojdbc.properties. Por exemplo:
    
    # Property for using Oracle Wallets
    # oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))
  4. Compile e Execute: Para obter uma conexão bem-sucedida, compile e execute a amostra. Por exemplo:

    java –classpath ./lib/ojdbc8.jar:./lib/ucp.jar UCPSample

Estabelecendo Conexão Usando o Driver JDBC Thin 12.2 ou Mais Antigo

Se você estiver usando o driver JDBC 12.2.0.2 ou mais antigo, defina as propriedades Java antes de iniciar o aplicativo. Normalmente, você define as propriedades no script de inicialização do aplicativo.

Se você não puder usar os drivers JDBC mais recentes, poderá estabelecer conexão com o Autonomous Database usando 12.2.0.2 ou outros drivers JDBC mais antigos. Os drivers JDBC 12.2 ou mais antigos não suportam o arquivo ojdbc.properties. Com versões mais antigas do driver JDBC, você precisa transmitir wallets ou propriedades relacionadas ao JKS como propriedades do sistema ou como propriedades de conexão para estabelecer uma conexão.

Usando Oracle Wallet

Para usar o Java e os Drivers JDBC 12.2 ou mais antigos para se conectar ao Autonomous Database com a Oracle Wallet, faça o seguinte:

  1. Certifique-se de que os pré-requisitos sejam atendidos: Consulte Requisitos de Conexão do Driver JDBC Thin com Wallets (mTLS) para obter mais informações.

  2. Verifique a conexão: Você pode usar um programa Java, um servlet ou IDEs para verificar a conexão com o banco de dados. Um teste simples é fazer download de DataSourceSample.java ou UCPSample.java usando amostras de código JDBC e atualizar o URL de conexão para ter o alias de TNS necessário. Além disso, atualize o código-fonte de amostra para usar o nome de usuário e a senha do banco de dados. Por exemplo:

    DB_URL="jdbc:oracle:thin:@dbname_high”
    Observação

    Se você estiver usando o Microsoft Active Directory com o Autonomous Database, atualize o código de origem de amostra para usar o nome de usuário do Active Directory e a senha de usuário do Active Directory. Consulte Usar o Microsoft Active Directory com o Autonomous Database para obter mais informações.
  3. Defina o local da wallet: Adicione OraclePKIProvider ao final da lista de provedores no arquivo java.security (esse arquivo faz parte da instalação do JRE localizada em $JRE_HOME/jre/lib/security/java.security), que normalmente é semelhante a:

    security.provider.14=oracle.security.pki.OraclePKIProvider
  4. Compile e Execute: Para obter uma conexão bem-sucedida, compile e execute a amostra. Certifique-se de ter oraclepki.jar , osdt_core.jar e osdt_cert.jar, em classpath. Além disso, você precisa especificar as propriedades de conexão. Atualize as propriedades com o local onde estão tnsnames.ora e os arquivos da wallet.

    java –classpath 
    ./lib/ojdbc8.jar:./lib/ucp.jar:./lib/oraclepki.jar:./lib/osdt_core.jar:./lib/osdt_cert.jar:.
    -Doracle.net.tns_admin=/users/test/wallet_dbname  
    -Doracle.net.ssl_server_dn_match=true  
    -Doracle.net.ssl_version=1.2  (Not required for 12.2)
    -Doracle.net.wallet_location= “(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/users/test/wallet_dbname)))” 
    UCPSample
Observação

São exemplos do sistema Windows. Adicione um caractere de continuação \ se você estiver definindo as propriedades –D em várias linhas no UNIX (Linux ou Mac).

Usando o Java KeyStore

Para usar o Java e os Drivers JDBC Thin 12.2 ou mais recentes para se conectar ao Autonomous Database com o Java KeyStore (JKS), faça o seguinte:

  1. Certifique-se de que os pré-requisitos sejam atendidos: Consulte Requisitos de Conexão do Driver JDBC Thin com Wallets (mTLS) para obter mais informações.

  2. Verifique a conexão: Você pode usar um programa Java, um servlet ou IDEs para verificar a conexão com o banco de dados. Um teste simples é fazer download de DataSourceSample.java ou UCPSample.java por meio de amostras de código JDBC e atualizar o URL de conexão para que tenha o alias de TNS necessário e informar TNS_ADMIN, fornecendo o caminho de tnsnames.ora e atualizar o URL de conexão para que tenha o alias de TNS necessário. Além disso, no código-fonte de amostra, atualize o nome de usuário e a senha do banco de dados. Por exemplo:

    DB_URL="jdbc:oracle:thin:@dbname_high”
    Observação

    Se você estiver usando o Microsoft Active Directory com o Autonomous Database, atualize o código de origem de amostra para usar o nome de usuário do Active Directory e a senha de usuário do Active Directory. Consulte Usar o Microsoft Active Directory com o Autonomous Database para obter mais informações.
  3. Compile e Execute: Para obter uma conexão bem-sucedida, compile e execute a amostra. Informe as propriedades de conexão, conforme mostrado. Atualize as propriedades com o local onde estão os arquivos tnsnames.ora e JKS. Se você quiser especificar essas propriedades de conexão de forma programática, consulte DataSourceForJKS.java. Por exemplo:

    java 
    -Doracle.net.tns_admin=/users/test/wallet_dbname
    -Djavax.net.ssl.trustStore=truststore.jks
    -Djavax.net.ssl.trustStorePassword=**********
    -Djavax.net.ssl.keyStore=keystore.jks    
    -Djavax.net.ssl.keyStorePassword=************   
    -Doracle.net.ssl_server_dn_match=true    
    -Doracle.net.ssl_version=1.2 // Not required for 12.2

Conexões JDBC Thin com um Proxy HTTP

Se o cliente estiver protegido por firewall e a configuração de rede exigir um proxy HTTP para estabelecer conexão com a internet, use o JDBC Thin Client 18.1 ou superior, que permite conexões por meio de proxies HTTP.

Para estabelecer conexão com o Autonomous Database por meio de um proxy HTTPS, abra e atualize o arquivo tnsnames.ora. Adicione o nome do host do proxy HTTP (https_proxy) e a porta (https_proxy_port) à string de conexão. Substitua os valores pelas informações do proxy HTTPS. Por exemplo:

  1. Adicione o nome do host e a porta do proxy HTTP às definições de conexão em tnsnames.ora. Adicione os parâmetros https_proxy e https_proxy_port na seção de endereço das definições de conexão. Por exemplo, a seguinte amostra define o proxy HTTP como proxyhostname e a porta do proxy HTTP como 80; substitua esses valores pelas informações do proxy HTTP:

db2022adb_high =
       (description=
             (address=
                   (https_proxy=proxyhostname)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.example.oraclecloud.com)
             )
             (connect_data=(service_name=db2022adb_high.adb.oraclecloud.com)
             )
             (security=security=(ssl_server_dn_match=yes)
             )
       )
Observação

  • As versões do cliente JDBC Thin anteriores à 18.1 não suportam conexões por meio do proxy HTTP.

  • A conexão bem-sucedida depende de configurações de proxy específicas, e o desempenho das transferências de dados dependeria da capacidade do proxy. A Oracle não recomenda o uso desse recurso em ambientes de Produção nos quais o desempenho é crítico.

  • A configuração do arquivo tnsnames.ora para o proxy HTTP pode não ser suficiente, dependendo das políticas de segurança e configuração de rede da sua organização. Por exemplo, algumas redes exigem um nome de usuário e uma senha para o proxy HTTP.

  • Em todos os casos, entre em contato com o administrador de rede para abrir conexões de saída com hosts no domínio oraclecloud.com usando a porta relevante sem passar por um proxy HTTP.