最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何解决Oracle UTL_HTTP访问HTTPS失败?
时间:2026-08-23 09:29:50 编辑:袖梨 来源:一聚教程网
UTL_HTTP访问HTTPS失败主因是ACL未配置或Wallet证书链不全:ORA-24247表明ACL缺失(需DBMS_NETWORK_ACL_ADMIN创建并授connect/resolve权限),ORA-29024表明Wallet缺根或中间证书(需orapki导入完整信任链)。
UTL_HTTP访问HTTPS失败,90%以上不是代码写错,而是缺两样东西:ACL权限没配,或者Wallet证书链不全。这两项任一缺失,都会直接报错,且错误信息容易误导人。
ORA-24247:ACL没授权,连localhost都过不去
Oracle 11gR2起强制ACL机制,哪怕目标是https://localhost:443,只要没进ACL列表,就会报ORA-24247: network access denied by access control list (ACL)。这不是网络不通,是数据库主动拦截。
- 必须用
DBMS_NETWORK_ACL_ADMIN包创建ACL,不能只赋EXECUTE权限 - ACL要显式绑定主机名或IP:
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl=>'my_acl', host=>'api.example.com'),通配符*不被支持 - 端口范围必须精确匹配,比如只开
443,就不能用440-450代替 - 用户必须同时被授予
connect和resolve权限,后者用于DNS解析,漏掉会导致ORA-29273伴随ORA-06512
ORA-29024 / ORA-28860:Wallet证书链缺环节
Oracle不内置CA信任库,UTL_HTTP调HTTPS时只认Wallet里的证书。哪怕 用的是Let’s Encrypt,只要Wallet里没导入它的根+中间证书,就卡在SSL握手阶段,报ORA-29024: Certificate validation failure或ORA-28860: fatal SSL error。
- Wallet必须用
orapki命令行创建,图形化Oracle Wallet Manager已弃用,且不支持批量导入证书链 - 导入证书要用
-trusted_cert参数,且需分别导入根证书和中间证书(例如DigiCert Global Root CA + DigiCert TLS RSA SHA256 2020 CA1) - 不能只导出服务器证书(
server.crt),必须合并完整链:用cat root.pem intermediate.pem > full_chain.pem再导入 -
UTL_HTTP.SET_WALLET第一个参数是目录路径,不是文件名:'file:/home/oracle/wallet'✅,'file:/home/oracle/wallet/ewallet.p12'❌
UTL_HTTP.SET_WALLET路径与权限的硬性要求
SET_WALLET静默失败很常见,表面没报错,实际请求仍走不通过SSL校验——根本原因是路径格式错或OS权限不足。
- 路径必须带
file:协议头,且指向Wallet所在**目录**,不是.p12文件 - Oracle数据库进程运行用户(如
oracle)必须对整个Wallet目录有读权限,且ewallet.p12和cwallet.sso不能被组或其他用户写入(否则拒绝加载) - Wallet目录建议设为
700,文件设为600,避免因权限宽松导致加载失败
真正麻烦的不是某一步操作,而是这两套机制(ACL + Wallet)必须同时生效、各自完整,缺一不可。尤其在自治数据库(ADB)或云环境里,Wallet路径常被误写成挂载路径别名,ACL又容易漏掉resolve权限——这些细节不验证,光看错误码会反复踩坑。
相关文章
- 远古战役破解版最新版—破解版无限仙玉版下载 09-07
- Tplink路由器已离线无法使用网络的原因分析(如何判断Tplink路由器是否已离线) 09-07
- 浪漫餐厅兑换码全平台可用汇总—礼包码真实有效2026 09-07
- 洛克王国世界S1赛季什么时候结束 S1赛季将会持续到几号 09-07
- 正统三国平民最强攻略 0氪金武将选择推荐 09-07
- 远古战役0.1折下载—折扣版在哪里解锁 09-07