You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle APEX自治数据库调用HTTPS服务遇ORA-29024证书验证失败

问题排查与解决方案

针对你遇到的ORA-29273及证书、权限相关问题,按以下方向逐一排查:

1. 验证datos.gov.co的证书链完整性

虽然你解决了谷歌的证书问题,但datos.gov.co可能使用了不同的CA证书或中间证书未被数据库信任:

  • 先获取目标站点的证书信息:
    SELECT UTL_HTTP.GET_CERTIFICATE('https://www.datos.gov.co') FROM DUAL;
    
  • 检查自治数据库的钱包中是否包含该证书对应的根CA和中间证书。如果缺失,将证书导出后通过DBMS_WALLET或OCI控制台导入到数据库钱包中。

2. 区分APEX与UTL_HTTP的执行上下文差异

  • apex_web_service.make_rest_request默认使用APEX实例级钱包,而UTL_HTTP.REQUEST使用数据库级钱包,两者的信任证书集合可能不一致:
    • 登录APEX工作区,进入「实例设置」→「安全」,确认「REST Services Wallet」已正确配置,且包含datos.gov.co所需的证书链。
  • 关于APEX_APPLICATION.g_flow_schema_owner:需在调用UTL_HTTP前明确赋值,且该用户需具备EXECUTE UTL_HTTP权限、钱包访问权限,以及对应主机的ACL权限。

3. 捕获ORA-29273的详细错误信息

直接捕获异常细节,定位具体失败原因:

DECLARE
  l_response CLOB;
  l_error_detail VARCHAR2(4000);
BEGIN
  l_response := apex_web_service.make_rest_request(
    p_url => 'https://www.datos.gov.co',
    p_http_method => 'GET'
  );
EXCEPTION
  WHEN OTHERS THEN
    l_error_detail := SQLERRM || CHR(10) || DBMS_UTILITY.FORMAT_ERROR_STACK;
    DBMS_OUTPUT.PUT_LINE(l_error_detail);
END;
/

根据输出的子错误码(比如证书不匹配、主机名验证失败等)针对性修复。

4. 复查主机ACL配置细节

  • 确认DBA_HOST_ACLS中已添加www.datos.gov.co的完整主机名(避免通配符或部分域名):
    SELECT host, lower_port, upper_port FROM DBA_HOST_ACLS WHERE host = 'www.datos.gov.co';
    
  • 检查DBA_HOST_ACES中是否给APEX解析用户(通常是APEX_PUBLIC_USER)及你的业务schema用户授予了CONNECT权限,且权限未过期。

内容的提问来源于stack exchange,提问作者Edisson Gabriel López

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:49:58