我正在尝试使用UTL_HTTP包向远程web服务器发送请求。它使用普通的HTTP工作得很好,但当我尝试使用HTTPS时,我总是得到ORA-292024。
到目前为止我做了什么:
-
创建钱包:
mkdir /oracle/admin/mydb/my_wallet
orapki wallet create -wallet /oracle/admin/valdb/my_walled -pwd mypwd -auto_login
-
使用Chrome浏览到https网站,并将证书下载到p7b文件
-
将p7b文件存储在
/tmp/mycert.p7b
中的数据库机器上 -
将证书导入钱包:
orapki wallet add -wallet /oracle/admin/mydeb/my_wallet/ -trusted_cert cert "/tmp/mycert.p7b" -pwd mypwd
-
检查钱包状态:
orapki wallet display -wallet /oracle/admin/mydb/my_wallet
=>Requested Certificates: User Certificates: Trusted Certificates: Subject: CN=*.remote.server.com Subject: CN=ISRG Root X1,O=Internet Security Research Group,C=US Subject: CN=R3,O=Let's Encrypt,C=US
-
尝试发送请求:
EXEC UTL_HTTP.set_wallet('file:/oracle/admin/mydb/my_wallet', 'mypwd'); select UTL_HTTP.REQUEST('https://mes.customer.remove.server.com',NULL,'file:/oracle/admin/mydb/my_wallet','mypwd') from dual;
但不幸的是,返回的是:
ORA-29273: HTTP request failed
ORA-06512: at "SYS.UTL_HTTP", line 1530
ORA-29024: Certificate validation failure
ORA-06512: at "SYS.UTL_HTTP", line 380
ORA-06512: at "SYS.UTL_HTTP", line 1470
ORA-06512: at line 1
你知道我还能尝试什么吗?
是否会因为证书是通配符(*(证书而导致此问题?
我有同样的错误,是的,这是因为它是一个通配符证书。我在19c上所做的是只从钱包中删除通配符证书,但让所有其他证书从证书路径中删除,这就奏效了。然而,同样的行为不适用于12.2.0。告诉我,它在19c也适用于你。