使用 Oracle APEX 对自签名、未经认证的网站进行 REST 调用
Posted
技术标签:
【中文标题】使用 Oracle APEX 对自签名、未经认证的网站进行 REST 调用【英文标题】:REST calls to a self-signed,not certified website using Oracle APEX 【发布时间】:2016-08-18 08:55:37 【问题描述】:我正在尝试通过执行 PL/SQL 代码,使用 APEX 将一些数据发布到网站。
问题是,网站的证书是自签名的,所以没有正确认证,我收到以下错误:
ORA-29273:HTTP 请求失败 ORA-06512:在“SYS.UTL_HTTP”,第 1130 行 ORA-28860: 致命的 SSL 错误
我正在使用以下代码:
过程 publish_error_tickets
是
req utl_http.req; res utl_http.resp; url varchar2(4000) := 'https://some_url'; name varchar2(4000); buffer varchar2(4000); content varchar2(4000) := ' "issue": "project_id": 1, "subject": "Example", "priority_id": 4 '; begin req := utl_http.begin_request(url, 'POST',' HTTP/1.1'); utl_http.set_header(req, 'user-agent', 'mozilla/4.0'); utl_http.set_header(req, 'content-type', 'application/json'); utl_http.set_header(req, 'Content-Length', length(content)); utl_http.write_text(req, content); res := utl_http.get_response(req); begin loop utl_http.read_line(res, buffer); dbms_output.put_line(buffer); end loop; utl_http.end_response(res); exception when utl_http.end_of_body then utl_http.end_response(res); end; end;
我的问题是,是否可以以某种方式忽略 http 消息的证书验证过程?必须有一种无需为网站购买经过验证的证书即可访问网站的方法。
提前致谢, 塔马斯
【问题讨论】:
要通过 SSL 使用 utl_htttp 连接到任何东西,您必须将证书添加到您的 Oracle 钱包并调用 utl_http.set_wallet。 是的,我已经知道了,但问题是服务器在 Oracle XE 上运行,所以我们无法访问 oracle 钱包,这就是为什么我问是否可以绕过整个 ssl 握手,就像在 java 中一样。虽然 Oracle XE 有一个解决方法,但如果它可以在没有钱包的情况下完成,我们想先尝试一下。 是的,有。我也使用 XE,并使用 Apache 反向代理,以便 Oracle 可以通过 http 连接。欲了解更多信息,请参阅:blog.rhjmartens.nl/2015/07/… 太棒了,成功了,感谢您的提示! 【参考方案1】:对于任何有同样问题的人,我使用 Jeffrey Kemp 发布的解决方案 (http://blog.rhjmartens.nl/2015/07/making-https-webservice-requests-from.html) 使用反向代理,它就像一个魅力!
【讨论】:
以上是关于使用 Oracle APEX 对自签名、未经认证的网站进行 REST 调用的主要内容,如果未能解决你的问题,请参考以下文章
在交互式网格 Oracle Apex 中的自定义验证中突出显示列
APEX 18.1.0.00.41中的图表显示标签名称为“group xx”