ORACLE,UTL_HTTP和SSL

时间:2015-03-23 15:34:45

标签: oracle security ssl

我尝试通过加密的TLS 1.2证书到达安全网站提供的WebService,我将其导出并添加到钱包中。

首先,我尝试在11.2.0.1.0 ORACLE数据库上使用程序包UTL_HTTP.request访问该站点,但我有ORA-28857 SSL错误未知消息。

我在12.1.0.1.0 ORACLE数据库上尝试相同但我有ORA-29024消息。

所以,我在网上搜索并找到了关于这个主题的所有内容......

这就是我所做的:

首先:我使用PKCS#7(.p7b)格式从Internet Explorer导出证书(包括链)

然后,我用orapki实用程序创建一个钱包

 orapki wallet create -wallet e:\wallet -pwd <pwd>

然后我添加我的证书

 orapki wallet add -wallet e:\wallet -trusted_cert -cert e:\certificats\<cert file> -pwd <pwd>

我尝试访问安全网站

 select UTL_HTTP.REQUEST('https://<secured site>.com',null,'file:E:\wallet','<pwd>') from dual;

我收到了消息:

ORA-29273: échec de demande HTTP
ORA-06512: à "SYS.UTL_HTTP", ligne 1722
ORA-28857: Erreur SSL inconnue
ORA-06512: à ligne 1
29273. 00000 -  "HTTP request failed"
*Cause:    The UTL_HTTP package failed to execute the HTTP request.
*Action:   Use get_detailed_sqlerrm to check the detailed error message.
           Fix the error and retry the HTTP request.

我尝试创建ACL:     开始         dbms_network_acl_admin.create_acl(             acl =&gt; &#39; utl_http.xml&#39 ;,             description =&gt; &#39;测试ACL&#39;,             principal =&gt; &#39;&#39 ;,             is_grant =&gt;真正,             privilege =&gt; &#39;连接&#39 ;,             start_date =&gt;空值,             end_date =&gt;空值     );     结束;     /

BEGIN
  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
        acl         => 'utl_http.xml',
        principal   => '<user>',
        is_grant    =>  TRUE,
        privilege   => 'use-client-certificates',
                start_date => null,
                end_date => null);
END;
/

BEGIN
    DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
       acl => 'utl_http.xml',
       host => '<secured site>',
       lower_port => 1,
       upper_port => 9999);
END;
/

BEGIN
    DBMS_NETWORK_ACL_ADMIN.ASSIGN_WALLET_ACL(
       acl => 'utl_http.xml',
       wallet_path => 'file:E:\wallet');
END;
/

(我对所有人都很有用,但我已准备好做所有事情来做那件事^^)

我尝试访问安全网站

 select UTL_HTTP.REQUEST('https://<secured site>.com',null,'file:E:\wallet','<pwd>') from dual;

我收到了消息:

Rapport d'erreur :
ORA-29273: échec de demande HTTP
ORA-06512: à "SYS.UTL_HTTP", ligne 1130
ORA-29024: Echec de validation de certificat
ORA-06512: à ligne 10
29273. 00000 -  "HTTP request failed"
*Cause:    The UTL_HTTP package failed to execute the HTTP request.
*Action:   Use get_detailed_sqlerrm to check the detailed error message.
           Fix the error and retry the HTTP request.

我读到Oracle 11在使用TLS 1.2加密证书时遇到问题所以我尝试使用Oracle 12(创建钱包和ACL的方法相同)

我收到了消息:

Rapport d'erreur :
ORA-29273: échec de demande HTTP
ORA-06512: à "SYS.UTL_HTTP", ligne 1130
ORA-29024: Echec de validation de certificat
ORA-06512: à ligne 10
29273. 00000 -  "HTTP request failed"
*Cause:    The UTL_HTTP package failed to execute the HTTP request.
*Action:   Use get_detailed_sqlerrm to check the detailed error message.
           Fix the error and retry the HTTP request.

希望我的解释清楚

我尝试知道如何通过基于证书的证书来访问安全站点

感谢您提供急需的支持^^

最好的问候

2 个答案:

答案 0 :(得分:3)

可能是我来不及,但我遇到了同样的问题并找到了答案。

早于11.2.0.3的Oracle数据库不支持SHA2 SSL标准,例如我们无法从11.2.0.1连接谷歌。

使用12c时 - 尝试从钱包中删除链的结束证书。 (我在这里找到了这个答案:Using utl_http & wallets on 12c: certificate validation failure

答案 1 :(得分:0)

Oracle钱包采用PKCS12格式。您不能在Oracle钱包中使用PKCS7格式的证书。您想要使用“Base-64编码的X.509(.CER)”选项。您还必须获取链中的每个证书,以获取要连接的站点的证书。这些将被加载到钱包的“受信任的证书”部分。

此页面上有详细的详细说明:

UTL_HTTP and SSL(HTTPS) Using Oracle Wallets