我可以跳过证书验证 oracle utl_http 吗?

Net*_* Yo 3 oracle curl plsql

我正在 pl/SQL 中开发一些连接到多个外部服务的应用程序,

例子:

declare
 utl_req         utl_http.req;
 utl_resp        utl_http.resp;
begin
-- This line in production for security, but takes forever to get authorized 
-- by oracle host provider :@
-- utl_http.set_wallet('file:/path/wallet', 'password');

-- In test env i would like something like
-- utl_http.set_option('CURLOPT_SSL_VERIFYHOST', false);
-- utl_http.set_option('CURLOPT_SSL_VERIFYPEER', false);
 utl_req := utl_http.begin_request('https://login.microsoftonline.com/...
/oauth2/token', 'POST', 'HTTP/1.1');-- Die
--...more code
end;
Run Code Online (Sandbox Code Playgroud)

输出:

ORA-29024: Certificate validation failure
Run Code Online (Sandbox Code Playgroud)

有没有办法命令 Oracle 忽略证书验证以进行测试,无需等待将证书添加到钱包的身份验证。

类似于 php

$curl_request = curl_init();
    curl_setopt($curl_request, CURLOPT_URL, 'https://login.microsoftonline.com/...
/oauth2/token');
    curl_setopt($curl_request, CURLOPT_POST, 1);
    // No thankyou i don't care about security in testing :P
    curl_setopt($curl_request, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl_request, CURLOPT_SSL_VERIFYHOST, 0);
    ... more code
Run Code Online (Sandbox Code Playgroud)

Bar*_*han 5

不,utl_http.begin_request不能通过命令行选项跳过证书验证。为此,Oracle Wallet需要创建一个。可以使用Oracle Wallet Manager GUI 工具来创建它。

创建两个证书文件ewallet.p12和 后cwallet.sso,将它们移动到您操作系统中的 wallet 文件夹,并将文件权限更改为770

就在utl_http.begin_request线路问题之前

utl_http.set_wallet('file:/etc/oracle/owm');
Run Code Online (Sandbox Code Playgroud)

指向操作系统钱包路径

  • 太难过了,感谢您的回答。我知道你需要一个钱包以及如何配置它,但是我们无法在我们的 oracle 实例所在的服务器中自己做这些,所以我们需要要求提供者配置这些东西(添加证书、apex 的静态文件) , css, js) 通过票证,这有时需要永远(数周甚至数月)并且需要大量的审查和论证,对于生产来说是可以的,但是对于开发来说是一个麻烦希望 plsql 更动态(哈!)并且有一个选项所以跳过这个大多数语言甚至普通的 CURL 都有这样的选项。 (5认同)