O funcionamento do proxy-db-oracle consiste em duas etapas de autenticação:
- Usuário do Segura autentica no proxy-db-oracle;
- proxy-db-oracle autentica no Oracle destino.
A configuração necessária para usar o proxy está descrito na documentação oficial mas este artigo simplifica alguns pontos. Para viabilizar o inicio de sessão da aplicação Segura, o passo a passo a seguir deve ser seguido e validado antes de iniciar sessões, demandando algumas ressalvas e detalhes a validar com o DBA responsável.
3 etapas principais durante a configuração:
- Configuração no servidor oracle
- Configuração no Segura
- Configuração no workstation do usuário
1) Configuração no servidor oracle
A etapa 1.4 pode causar indisponibilidade temporária do servidor e, caso alguma informação seja inserida incorretamente, poderá impedir o funcionamento dos listeners. ![]()
Recomendamos fortemente que qualquer tentativa de familiarização com essa configuração seja realizada previamente em ambiente de laboratório, e não em ambiente de produção. Também é fundamental realizar backups dos arquivos listener.ora e sqlnet.ora antes de qualquer alteração. ![]()
Execute com cautela e apenas se tiver certeza dos parâmetros a serem aplicados. ![]()
Caso tenha problemas, reverta os arquivos de configuração com o backup feito e reinicie os listeners. ![]()
Iniciar os listeners com o TCPS habilitado (configuração necessária nos arquivos de configuração do Oracle para que nosso proxy funcione, detalhada na etapa 1.2) no sqlnet.ora faz com que o login do tipo sqlplus / as sysdba, utilizado via SSH ou em rotinas de backup/consulta, deixe de funcionar. Como alternativa, utilize um usuário SYS ou SYSTEM com senha simples para essas operações, pois os únicos usuários atingidos serão esse e o definido na etapa 1.1.5. ![]()
Requisitos
- Oracle DB Server configurado com a versão mínima 19.0.0.0.0
- Servidor com ORAPKI instalado, para a criação das Wallets.
- Conectividade da workstation do usuário com o Segura® nas portas 1521 e 2484.
- Client de Banco de dados instalado.
- Dbeaver versão mínima: 23.1.0
- SQLPlus versão mínima: 21.0.0.0.0
- SQL Developer versão mínima: 23.1.0.097
1.1 Configurar a wallet para Oracle em Cluster
Somente será necessário realizar este passo se não houver nenhuma wallet.
1.1.1 Criar a wallet no servidor oracle:
orapki wallet create -wallet <ORACLE_WALLET_DIR> -pwd <ORACLE_WALLET_PASS> -auto_login

1.1.2 Adicionar certificado auto assinado na wallet. Caso já exista uma wallet e ela tenha algum certificado, não seria necessário adicionar este certificado. Porém, ainda terá que adicionar o certificado da credencial descrita mais tarde.
orapki wallet add -wallet <ORACLE_WALLET_DIR> -pwd <ORACLE_WALLET_PASS> -dn "CN=<ORACLE_SERVER>" -keysize 2048 -self_signed -validity 3650
1.1.4 Validar os certificados existentes na wallet (até este ponto deve existir apenas um certificado na wallet ou os criados antes da configuração):
orapki wallet display -wallet <ORACLE_WALLET_DIR>
1.1.5 Gerar o certificado autoassinado da credencial do oracle (usuario para hacer login no oracle database). Veja que a CN deve ser igual ao username. Este comando gera uma key e um crt com o CN do usuário oracle:
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout <CREDENTIAL>.key -out <CREDENTIAL>.crt -subj "/CN=<CREDENTIAL>"
ESSES ARQUIVOS DEVEM SER SALVOS PARA POSTERIOR UPLOAD NA ETAPA X ![]()
1.1.6 Converter o .crt para .12
openssl pkcs12 -export -out <CREDENTIAL>.p12 -inkey <CREDENTIAL>.key -in <CREDENTIAL>.crt -passout pass:<CREDENTIAL_CERT_PASS>
1.1.7 Importar o p12 para a wallet criada na etapa 1.1.1
orapki wallet import_pkcs12 -pkcs12file <CREDENTIAL>.p12 -pkcs12pwd <CREDENTIAL_CERT_PASS> -wallet <ORACLE_WALLET_DIR> -pwd <ORACLE_WALLET_PASS>
1.1.8 Validar os certificados
A wallet deve possuir 2 certificados até esse ponto. Um para o servidor e outro para a credencial. Caso já tenha certificados antes da configuração, visualizará um certificado adicional com o CN do usuário a ser usado pelo proxy para login no oracle.
orapki wallet display -wallet <ORACLE_WALLET_DIR>
1.2 Configurar arquivos oracle listener.ora e sqlnet.ora no servidor oracle
Usualmente, em arquitetura grid o usuário grid edita o listener.ora e o usuário oracle o sqlnet.ora. Na arquitetura standalone, o usuário oracle edita os dois arquivos.
A localização desses arquivos muda dependendo da versão e configuração feita no deploy. Em caso de dúvidas, um DBA deve ser consultado.
De forma geral, esses arquivos são encontrados na pasta network/admin do Oracle Home.
Exemplo de comandos que ajudam a encontrar os arquivos:
echo $ORACLE_HOME
cd $ORACLE_HOME/network/admin
cat listener.ora
cat sqlnet.ora
A configuração do listener.ora deve ser exatamente igual â configuração a seguir ou pelo menos realizar o equivalente aos parâmetros a seguir. Perceba também que o diretorio da wallet criada na etapa 1.1.8 é passada aqui:
Esta configuração pode funcionar em ambas arquiteturas de standalone ou grid.
Uma possível alternativa na configuração de arquiteturas grid, seria escolher o IP da máquina a ser acessada pelo cofre.
Configuração de exemplo do listener.ora (contem a wallet da etapa 1.1.8):
SSL_CLIENT_AUTHENTICATION = TRUE
WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = <ORACLE_WALLET_DIR>)))
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCPS)(HOST = 0.0.0.0)(PORT = 2484))
)
)
Configuração do sqlnet.ora (contem a wallet da etapa 1.1.8) :
WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = <ORACLE_WALLET_DIR>)))
SQLNET.AUTHENTICATION_SERVICES = (TCPS,BEQ)
SSL_CLIENT_AUTHENTICATION = TRUE
1.3 Alterar/criar usuário no oracle database:
Para esta etapa é necessária uma conta sysdba ou com privilégios de suficientes.
Veja que o CN do usuário alterado/criado deve ser o mesmo CN que o certificado criado na etapa 1.1.5 ![]()
SQL> ALTER SESSION SET "_ORACLE_SCRIPT"=true;
SQL> CREATE USER <CREDENTIAL> IDENTIFIED EXTERNALLY AS 'CN=<CREDENTIAL>';
SQL> GRANT CREATE SESSION TO <CREDENTIAL>;
Caso o usuário já exista, deve adaptar o comando para ALTER
SQL> ALTER SESSION SET "_ORACLE_SCRIPT"=true;
SQL> ALTER USER <CREDENTIAL> IDENTIFIED EXTERNALLY AS 'CN=<CREDENTIAL>'
SQL> GRANT CREATE SESSION TO <CREDENTIAL>
1.4 Reiniciar listeners do oracle
A etapa 1.4 pode causar indisponibilidade temporária do servidor e, caso alguma informação seja inserida incorretamente, poderá impedir o funcionamento dos listeners.
Recomendamos fortemente que qualquer tentativa de familiarização com essa configuração seja realizada previamente em ambiente de laboratório, e não em ambiente de produção e backups dos arquivos listener.ora e sqlnet.ora sejam realizados antes de qualquer configuração. ![]()
Execute com cautela e apenas se tiver certeza dos parâmetros a serem aplicados.![]()
Caso tenha problemas, reverta os arquivos de configuração com o backup feito e reinicie os listeners novamente.![]()
Para arquiteturas standalone:
lsrnctl stop
lsnrctl start
Para grid:
Stop listener
srvctl stop listener -l listener
srvctl stop scan_listener
srvctl stop scan
Start listener
srvctl start scan
srvctl start scan_listener
srvctl start listener -l listener
lsnrctl status
1.5 Como validar se a configuração está correta no servidor oracle
Caso a configuração tenha funcionado, pode validar usando os comandos linux:
lnsrctl status
O comando “lsnrctl status” deve listar:
- O listener na porta 1521, onde os usuários normais se conectam;
- O listener na porta 2484, onde os usuários que utilizam o proxy devem conectar depois da etapa 1.3;
- Os services da instância do banco;
O comando a seguir deve listar os certificados da wallet do servidor oracle e é um bom teste de conectividade na etapa de autenticação cofre → oracle.
No cofre, execute:
openssl s_client -showcerts -connect [ORACLEDATABASE_IP]:2484
O comando deve ser adaptado para ler o certificado do workstation até o cofre também:
No workstation do usuário use:
openssl s_client -showcerts -connect [SEGURA_IP]:2484
2) Configuração na interface web do Segura:
2.2) Registrar as informações do Oracle no cofre
Na interface web, deve-se configurar:
-
O dispositivo com conectividades nas portas 1521, 2484, contendo o IP da maquina oracle destino;
-
A credencial registrada no cofre, atrelada ao dispositivo criado acima, com o username da etapa 1.1.5;
-
A credencial registrada também deve ter o .crt e o .key criados na etapa 1.1.5 e salvos na configuração da credencial. Depois de fazer o upload dos arquivos, os mesmos não aparecem como salvos via interface web mas isso é so um erro de presentação;
Menu da credencial > Session Settings
O .crt vai no certificate file e o key no campo key file. Como não colocou-se senha na key do certificado, claramente o campo fica vazio
2.3) Criar uma wallet com o certificado do usuário do PAM;
Tem dois métodos de configurar uma wallet de usuário do PAM.
2.3.3 Criar wallet via automação (método recomendado)
Para isso, primeiro configura-se uma credencial e dispositivo com orapki (binário necessário) e credencais necessárias para criar uma wallet, na tela a seguir do PAM, campo System Parameters > Global > Application > Oracle wallet automation credential:
Usualmente o usuário oracle usado via ssh possui as permissões corretas para conseguir gerar uma wallet, e deve ser a usada no campo em questão.
Uma vez veito isso, o usuário na interface web poderá gerar wallets usando a opção User options > My certificate > Oracle Wallet > Gerar a wallet e esperar uns minutos > Voltar no mesmo menu e fazer download do arquivo da wallet.zip
Esse arquivo .zip é a wallet do usuário e deve ser descompactada antes de utilizar.
Exemplo:
Isso finaliza as configurações da etapa 2 e resta a configuração no workstation do usuário a não ser que o método alternativo seja necessário.
2.3.4 Usar o p12 do usuário para gerar a wallet via orapki (método alternativo)
Caso o usuário via automação não funcione, o p12 pode ser importado de volta para o servidor oracle.
Esse p12 é usado para gerar uma wallet.
Essa wallet é usada no workstation mas pode ser gerada em qualquer instância com orapki instalado da seguinte forma:
2.3.4.1 Baixar o arquivo p12 da interface web (método alternativo):
A senha do p12 é configurada no mesmo menu caso ainda não tenha criado o certificado:
2.3.4.2) Transferir o p12 de volta ao servidor oracle usando winscp ou algum programa simila (método alternativo)r;
2.3.4.3) Gerar a wallet e importar o certificado p12 manualmente (método alternativo);
orapki wallet create -wallet “<USER_WALLET_DIR>” -pwd
<USER_WALLET_PASS> -auto_login
orapki wallet import_pkcs12 -pkcs12file .p12 -pkcs12pwd
<USER_CERT_PASS> -wallet “<USER_WALLET_DIR>” -pwd <USER_WALLET_PASS>
Depois, utilize winscp para transferir essa wallet do usuário de dentro do oracle server de volta para o workstation
Isso finaliza as configurações da etapa 2 e resta a configuração no workstation do usuário.
3) Configuração no workstation do usuário
A etapa final envolve configurar variáveis de ambiente necessários pela Oracle para funcionamento com o nosso proxy.
Requisitos:
Para usuários que conectem usando sql developer:
-
Instant client 21_8 disponível no link a seguir:
https://download.oracle.com/otn_software/nt/instantclient/218000/instantclient-basic-windows.x64-21.8.0.0.0dbru.zip -
SQL Developer versão 23.1.1 geralmente incluindo a versão com JDK
Oracle SQL Developer Downloads 23.1.1
Para usuários que conectem pelo dbeaver:
- Instant client 21_8;
- Dbeaver 25 ou 23;
3.1 Configurar os arquivos sqlnet.ora e tnsnames.ora do usuário
O sqlnet.ora do lado do cliente é simples:
SQLNET.AUTHENTICATION_SERVICES = (TCPS, BEQ, NTS)
SSL_CLIENT_AUTHENTICATION = TRUE
O tnsnames.ora, por outro lado, precisa de varios campos de configuração:
Exemplo (substituir por valores do ambiente):
mt4adm =
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCPS)
(HOST=10.10.10.44)
(PORT=2484)
)
(CONNECT_DATA=
(SENHASEGURA=
(USERNAME=mt4web)
(CREDENTIAL=oraclesegura)
(DEVICE=10.10.10.33)
(PORT=2484)
(TOTP=000000))
(SERVER=DEDICATED)
(SERVICE_NAME=pdb1)
)
(SECURITY =
(MY_WALLET_DIRECTORY="C:\Users\user\oracle\mt4web_oracledb_wallet")
)
)
No exemplo acima:
Cofre: 10.10.10.44
Oracle: 10.10.10.33
Username Segura: mt4web
Credencial oracle: oraclesegura
Identificador da conexão na conexão jdbc: mt4adm
Service name: Serviço que roda dentro do oracle para autenticar a credencial oracle, no exemplo “oraclesegura”.
MY_WALLET_DIRECTORY: caminho da wallet do usuário
3.2 Configurar variáveis de ambiente do workstation
No workstation, por convenção dentro dos fluxos de autenticação de clientes oracle, os arquivos sqlnet.ora e tnsnames.ora costumam a ficar no diretório salvo na variável TNS_ADMIN.
Continuando esse padrão, vamos validar duas variáveis:
- TNS_ADMIN deve ser igual à pasta que contem os arquivos sqlnet.ora e tnsnames.ora do workstation;
- O PATH do workstation deve conter o diretorio do instant_client 21_8;
Exemplo:
Comandos via cmd para validar variáveis de ambiente:
Pasta usada no exemplo:
Com isso em mente, a ultima etapa de de configuração é dentro dos clientes.
3.3 Configurar programas para iniciar conexão pelo proxy:
3.3.1 Configurar Dbeaver e conectar!!
Usar URL customizada e tipo de autenticação SO:
URL exempo:
jdbc:oracle:oci:@mt4adm
Veja que o “mt4adm” vem do identificador do arquivo tnsnames.ora
3.3.2 Configurar SQL Developer e conectar!!
Configuração de drivers:
Configuração da conexão, usando a mesma URL de autenticação que o DBEAVER:

















