8

Oracle 12.1.0.1.0 を使用しています。

問題なく、utl_http を介して多くのサービスに https 呼び出しを発行しています。これは何年も前から行っており、Facebook の認証にも使用しています。

最近、facebook.com の URL を https で呼び出す際に解決できない問題に直面しています。*.facebook.com で証明書を使用するように facebook が切り替わったのと一致しているようです。これが原因とは言い難いのですが、関係しているかもしれません。時間を節約するためだけに、ネットワーク ACL の許可が適切であり、証明書の検証エラーはありません。

問題が発生するエラーコードは次のとおりです。

    ORA-29273: HTTP request failed
    ORA-06512: at "SYS.UTL_HTTP", line 1130
    ORA-28750: unknown error
     ORA-06512: at "SYS.UTL_HTTP", line 1130

エラーは、utl_http.begin_request を発行する pl/sql 行で発生します。

私の質問は: 誰でもこの問題を再現できますか? 誰かがそこにいて、解決策を見つけましたか? どんな入力でも大歓迎です。

2 つの例を含めます。1 つは、正常に動作する redhat.com ドメインへの呼び出しです。もう 1 つは、上記の問題がある facebook.com ドメインへの呼び出しです。どちらの場合も、使用されるコードは同じです。両方のドメインが *.domain の証明書を使用します。

対象ページ: https://www.redhat.com/en/about

-- redhat ページの証明書チェーン

    GTE CyberTrus Global Root
      Baltimore CyberTrust Root                 <===  rh_01.crt
        Cybertrust Public SureServer SV CA      <===  rh_02.crt
          *.redhat.com

-- ウォレットには、矢印でマークされた証明書が含まれています。*.redhat.com 証明書は含まれません。信頼できる証明書のみがウォレットに入るはずだからです。

-- redhat.com のウォレットの作成方法は次のとおりです。

    orapki wallet create -wallet /dir1/rh -pwd walletpassword -auto_login
    orapki wallet add    -wallet /dir1/rh -trusted_cert -cert "/dir1/rh/rh_01.crt" -pwd walletpassword
    orapki wallet add    -wallet /dir1/rh -trusted_cert -cert "/dir1/rh/rh_02.crt" -pwd walletpassword

-- https 呼び出しを行うコードは次のとおりです。

    declare
    wrequest         utl_http.req;
    wwallet_location varchar2(400) := 'file:/dir1/rh';
    wwallet_password varchar2(400) := 'walletpassword';
    wurl             varchar2(400) := 'https://www.redhat.com/en/about';
    begin
    utl_http.set_wallet(wwallet_location, wwallet_password);
    wrequest := utl_http.begin_request(wurl, 'GET', utl_http.http_version_1_1);
    end;

-- これは正常に動作します

============================================== ここはFacebookページの呼び出しに失敗する同じセットアップ。

対象ページ:https ://www.facebook.com/login/identify?ctx=recover

-- Facebook ページの証明書チェーン

    GTE CyberTrus Global Root
      Baltimore CyberTrust Root               <===  fc01_.crt
        Digicert High Assurance EV Root CA    <===  fc02_.crt
          Digicert High Assurance CA-3        <===  fc03_.crt
            *.facebook.com

-- ウォレットには、矢印でマークされた証明書が含まれています

-- Facebook のウォレットの作成方法は次のとおりです。

    orapki wallet create -wallet /dir1/fc -pwd walletpassword -auto_login
    orapki wallet add    -wallet /dir1/fc -trusted_cert -cert "/dir1/fc/fc_01.crt" -pwd walletpassword
    orapki wallet add    -wallet /dir1/fc -trusted_cert -cert "/dir1/fc/fc_02.crt" -pwd walletpassword
    orapki wallet add    -wallet /dir1/fc -trusted_cert -cert "/dir1/fc/fc_03.crt" -pwd walletpassword       

-- https 呼び出しを行うコードは次のとおりです。

    declare
    wrequest         utl_http.req;
    wwallet_location varchar2(400) := 'file:/dir1/fc';
    wwallet_password varchar2(400) := 'walletpassword';
    wurl             varchar2(400) := 'https://www.facebook.com/login/identify?ctx=recover';
    begin
    utl_http.set_wallet(wwallet_location, wwallet_password);
    wrequest := utl_http.begin_request(wurl, 'GET', utl_http.http_version_1_1);

    end;

-- このコードはエラーを返します

    ORA-29273: HTTP request failed
    ORA-06512: at "SYS.UTL_HTTP", line 1130
    ORA-28750: unknown error
     ORA-06512: at "SYS.UTL_HTTP", line 1130

このエラーを再現できますか? それとも私だけですか?前もって感謝します。

4

1 に答える 1

1

同じ問題が発生しており、オラクルはワイルドカー SSL をサポートしていないことを確認しています。

于 2016-08-05T18:49:57.117 に答える