oracle - 我可以跳过证书验证 oracle utl_http 吗?
问题描述
我正在用 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.p12
和后cwallet.sso
,将它们移动到您操作系统中的钱包文件夹,并将文件权限更改为770。
就在utl_http.begin_request
线路问题之前
utl_http.set_wallet('file:/etc/oracle/owm');
指向操作系统钱包路径。
推荐阅读
- react-native - 动态添加解析器以响应钩子形式?
- javascript - Firebase AppCheck - Web 应用程序无法在调试模式下运行
- c++ - 如何修复尺寸错误?
- python - 谱聚类相似矩阵的实现
- android - AlarmManager.setRepeating 长时间延迟后发出警报(近 10 分钟)
- java - MvcResult 返回 application/json;charset=UTF-8
- excel - 将 txt 文件导入 Google Sheet 的脚本(基于现有的 VBA)
- reactjs - Reactmapgl 和视口从另一个组件更改
- python - 管理面板上的 Django TimeField 小部件更改
- java - Abbyy FREngine 12 Web API 获取许可证详细信息