Oracle自治云数据库HTTPS请求报ORA-29024证书验证失败问题咨询
Oracle自治云数据库HTTPS请求ORA-29024报错解决方案
你的解决思路是正确的,ORA-29024报错是因为目标站点的SSL证书不在自治数据库(ADB)默认信任的证书列表中,需要手动将证书链添加到ADB的信任钱包中,具体操作步骤如下:
- 步骤1:导出目标站点的完整证书链
用Chrome/Edge浏览器访问目标地址https://myappname.scm.azurewebsites.net,点击地址栏左侧的安全锁标识→选择「证书」→切换到「证书路径」标签页,依次选中根证书、中级证书、终端站点证书,每个证书点击「查看证书」→「详细信息」→「复制到文件」,导出格式选择Base64编码的X.509(.CER),分别保存到本地。 - 步骤2:上传证书到ADB可访问目录
用ADMIN用户登录ADB,通过DBMS_CLOUD.PUT_OBJECT存储过程将本地证书文件上传到ADB预定义的DATA_PUMP_DIR目录,示例代码如下:begin DBMS_CLOUD.PUT_OBJECT( directory_name => 'DATA_PUMP_DIR', file_name => 'azure_root.cer', contents => UTL_RAW.CAST_TO_RAW('-----BEGIN CERTIFICATE-----
你导出的根证书内容
-----END CERTIFICATE-----')
);
-- 中级证书、站点证书按照同样逻辑上传,修改file_name和contents即可
end;
/
- 步骤3:将证书添加到ADB信任钱包 执行`DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ENTRY`存储过程,将上传的证书添加到系统默认钱包中: ```sql begin DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ENTRY( p12_file => 'system:', p12_password => NULL, pem_content => BFILE('DATA_PUMP_DIR', 'azure_root.cer'), pem_password => NULL ); -- 依次添加中级证书、站点证书,修改pem_content对应的文件名即可 commit; end; /
- 步骤4:验证请求
重新执行你的HTTPS请求语句验证是否正常返回结果:select utl_http.request('https://myappname.scm.azurewebsites.net') from dual;
仅用于测试场景时,可临时关闭证书校验来规避报错,该操作存在安全风险不建议生产环境使用:
begin utl_http.set_wallet( wallet_path => 'system:', no_cert_check => TRUE ); end; /
内容的提问来源于stack exchange,提问作者Ronak Shetiya
相关产品推荐
相关产品推荐

