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
このエラーを再現できますか? それとも私だけですか?前もって感謝します。