本地APEX环境设置访问RestAPI

本地搭建APEX环境,访问RestAPI数据源会有如下报错,按照该步骤设置可以解决这些报错。

ORA-29273: HTTP request failed
ORA-29024: Certificate validation failure
ORA-06512: at "SYS.UTL_HTTP", line 380

设置oracle钱包(wallet)

  1. 创建钱包,本例钱包为https_wallet
orapki wallet create -wallet https_wallet -pwd Demo_123 -auto_login
  1. 导出网站根证书,并且上传到数据库服务器中
    在这里插入图片描述

  2. 将证书CA导入到钱包中

orapki wallet add -wallet https_wallet -cert DigiCertGlobalRootCA.crt -trusted_cert -pwd Demo_123

设置网络访问控制(ACL)

如果Oracle版本为12以上,请按照如下方法设置,中文资料中会搜索到很多使用已经废弃的ACL设置资料,清晰请参考以下官方文档。
DBMS_NETWORK_ACL_ADMIN

  1. 将主机*.github.com的连接和解析权限授予APEX用户APEX_230100
BEGIN
  DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
    host => '*.github.com',
    ace  =>  xs$ace_type(privilege_list => xs$name_list('connect', 'resolve'),
    principal_name => 'APEX_230100',
    principal_type => xs_acl.ptype_db)); 
  COMMIT;
END;
  1. 将您创建的钱包的use_client_certificates和use_passwords权限授予APEX用户APEX_230100
BEGIN
  dbms_network_acl_admin.append_wallet_ace(
    wallet_path => 'file:/home/oracle/https_wallet',
    ace         =>  xs$ace_type(privilege_list => xs$name_list('use_client_certificates', 'use_passwords'),
    principal_name => 'APEX_230100',
    principal_type => xs_acl.ptype_db));
END;
  1. 查看授权信息
select * from DBA_HOST_ACES
  1. 如果需要的话,可以使用以下脚本删除访问授权
BEGIN 
  dbms_network_acl_admin.remove_host_ace(
    host => '*.github.com',
    ace  =>  xs$ace_type(privilege_list => xs$name_list('resolve', 'connect'),
    principal_name => 'APEX_230100',
    principal_type => xs_acl.ptype_db)); 
END;

设置APEX默认钱包路径

  1. 使用ADMIN账号登录INTERNAL空间
  2. 依次进入Manage Instance -> Instance Settings -> Wallet
  3. 将Wallet Path设置为自行定义的值file:///home/oracle/https_wallet

验证结果

执行如下SQL,能够正常查询到数据,如果APEX设置了默认钱包,则p_wallet_path参数可以省略。

select apex_web_service.make_rest_request(
    p_url         => 'https://api.github.com', 
    p_http_method => 'GET',
    p_wallet_path => 'file:///home/oracle/https_wallet' ) from dual;

参考文章:Application Express and HTTPS: Never see “Certificate Validation Error” again

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值