Alguns bancos brasileiros como Santander e Itaú exigem um certificado digital de cliente na hora de chamar suas APIs REST. Fazer isso diretamente via Oracle isso é um pouco irritante, visto que exige a criação de uma wallet específica para poder chamar esses serviços via MAKE_REST_REQUEST. Por isso, muita gente desiste e acabar fazendo as chamadas através de aplicações intermediárias. Neste artigo vamos abordar como fazer essas conexões REST diretamente via banco de dados com o MAKE_REST_REQUEST do APEX.
Para criar a wallet você precisa ter um Oracle Client versão full instalado, já que precisaremos do orapki. Não adianta ter o Instant Client. Ele também vem incluso nas versões do Oracle Database. Na minha opinião, não vale a pena baixar e instalar o cliente full ou banco de dados completo quando queremos apenas utilizar o OraPKI, mas isso fica a seu critério.
Você consegue saber um pouco mais sobre como usar o orapki sem precisar baixar o Full Cliente neste meu artigo aqui:
Creating and Configuring Wallets with OraPKI (Without Needing the Full Oracle Client)
A partir daqui você já precisa ter acesso ao orapki.
A primeira coisa que você precisa fazer, caso ainda não tenha uma wallet é criar uma. Para criar pode rodar o comando abaixo, substituindo a pasta por uma pasta de sua escolha:
orapki wallet create -wallet "C:\Users\valter\Downloads\adu" -pwd 123456xx
Após executar este comando você irá ver que ele gerou a wallet no seu sistema operacional, conforme demonstrado abaixo.
Depois disso, você vai começar importando o certificado do cliente com o comando abaixo. Primeiro o diretório onde fica a carteira e depois o difetório onde fica o .pfx do certificado do cliente e a senha do certificado de cliente:
orapki wallet import_pkcs12 -wallet "C:\Users\valter\Downloads\adu" -pwd 123456xx -pkcs12file "C:\Users\valter\OneDrive\Desktop\certificado_a_importar\user_cert.pfx" -pkcs12pwd 123456
Após executar você deverá receber essa mensagem de sucesso:
orapki command import_pkcs12 executed successfully.
Normalmente, você também precisará adicionar os certificados dos servidores do serviço no qual você quer conectar na parte dos certificados confiáveis da wallet
orapki wallet add -wallet "C:\Users\valter\Downloads\adu" -trusted_cert -cert "G:\Meu Drive\Aplicativos\OraPKI\certs\ICP-BR\AC_VALID_RFB_v5.crt" -pwd 123456xx
Você consegue verificar agora todo o conteúdo da sua wallet com este compando:
orapki wallet display -wallet "C:\Users\valter\Downloads\adu" -pwd 123456xx
Deverá mostrar os certificados de cliente e os certificados confiáveis como na tela abaixo:
Agora você precisa fazer o upload dessa wallet para algum diretório acessível pelo seu banco de dados. No meu exemplo, 'file:/opt/oracle/wallets/adu/'. Em alguns testes precisei colocar uma / no final e em outros não foi necessário. Testei em duas bases diferentes. Comece tentando sem a / no final do nome da wallet, deve funcionar.
Devemos adicionar os privilégios para os owners solicitados com SYS ou ADMIN. Segue abaixo o comando utilizado para atribuir os privilégios. Lembre de substituir YOUR_OWNER pelo nome do seu owner e APEX_230200 para a versão do seu banco
BEGIN
-- APEX
DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE(
wallet_path => 'file:/opt/oracle/wallets/adu/',
ace => xs$ace_type(
privilege_list => xs$name_list('use_client_certificates', 'use_passwords'),
principal_name => 'APEX_230200',
principal_type => xs_acl.ptype_db
)
);
-- OWNER
DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE(
wallet_path => 'file:/opt/oracle/wallets/adu/',
ace => xs$ace_type(
privilege_list => xs$name_list('use_client_certificates', 'use_passwords'),
principal_name => 'YOUR_OWNER',
principal_type => xs_acl.ptype_db
)
);
end;
Daqui pra frente é sua apontar a wallet na hora de chamar o serviço via MAKE_REST_REQUEST.
Top comments (0)