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

标签 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;

输出:

ORA-29024: Certificate validation failure

有没有办法命令 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

最佳答案

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

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

就在utl_http.begin_request之前线路问题

utl_http.set_wallet('file:/etc/oracle/owm');

指向操作系统钱包路径

关于oracle - 我可以跳过证书验证 oracle utl_http 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51068160/

相关文章:

SQL 用 'IN' 实现 'OR' 运算符

mysql - 如何将数据库更改部署到实时服务器?

java - Oracle JDBC 字符集和 4000 个字符限制

node.js - 如何使用curl 在我的本地主机 Node 服务器上执行GET?

linux/Bash 从 curl 输出中提取变量

sql - ORA-29273 : HTTP request failed intermittent error using the utl_http package

oracle 错误,此处不允许列

php - 为什么要禁用 PHP 函数 `curl_exec `?

mysql - 更新一张表中一列的两行

用于列出数据库中所有模式的 Oracle SQL 查询