2013-10-15 29 views
7

誰かが私が間違っていることに気づくことができたらうれしいです。12cでutl_httpとwalletsを使用する:証明書の検証に失敗しました

私はutl_http &ウォレットを使用して11gR1でhttpsを問題なく呼び出すことができましたが、新しい12cインストールでは悲しみが増えています。

oracle wallet managerとコマンドラインの両方を使用して信頼できる証明書をインポートしようとしましたが、成功しませんでした。 私は、オラクルが財布をキャッシュするのは難しいかもしれないことを知っているので、私は運がなくても複数の新しいセッションを試しました。

* .presstogo.com、Geotrust SSL CAの3つの必要証明書をダウンロードしました。& Geotrust Global CA。

次のように財布がある私の建物のコマンドラインバージョン:

orapki wallet create -wallet /oracle/product/12.0.1/owm/wallets/test1237 -pwd test=1237 -auto_login 
orapki wallet add -wallet /oracle/product/12.0.1/owm/wallets/test1237 -trusted_cert -cert "*.presstogo.com" -pwd test=1237 
orapki wallet add -wallet /oracle/product/12.0.1/owm/wallets/test1237 -trusted_cert -cert "GeoTrust SSL CA" -pwd test=1237 
orapki wallet add -wallet /oracle/product/12.0.1/owm/wallets/test1237 -trusted_cert -cert "Geotrust Global CA" -pwd test=1237 
orapki wallet display -wallet /oracle/product/12.0.1/owm/wallets/test1237 
Oracle PKI Tool : Version 12.1.0.1 
Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. 
Requested Certificates: 
User Certificates: 
Trusted Certificates: 
Subject:  OU=Class 3 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US 
Subject:  CN=GTE CyberTrust Global Root,OU=GTE CyberTrust Solutions\, Inc.,O=GTE Corporation,C=US 
Subject:  CN=GeoTrust SSL CA,O=GeoTrust\, Inc.,C=US 
Subject:  OU=Class 2 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US 
Subject:  OU=Class 1 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US 
Subject:  CN=GeoTrust Global CA,O=GeoTrust Inc.,C=US 
Subject:  CN=*.presstogo.com,OU=IT,O=Press to go AS,L=Oslo,ST=Norway,C=NO,SERIAL_NUM=SJYpOHrRdCDHE8KZ6dRFGMJthOjs7-v3 

OK]をクリックして、テストにこれをすることができます。以下のSQLPLUSし、実行するためにはログイン:

declare 
    lo_req utl_http.req; 
    lo_resp utl_http.resp; 
begin 
    utl_http.set_detailed_excp_support (true); 
    utl_http.set_wallet ('file:/oracle/product/12.0.1/owm/wallets/test1237', 'test=1237'); 
    lo_req := utl_http.begin_request ('https://production.presstogo.com/mars/hello'); 
    lo_resp := utl_http.get_response (lo_req); 
    -- A successfull request would have the status code "200". 
    dbms_output.put_line (lo_resp.status_code); 
    utl_http.end_response (lo_resp); 
exception 
    when others then  
    utl_http.end_response (lo_resp); 
    raise; 
end; 

行1でDECLARE

*

ERROR:

ORA-29273:HTTPリクエストが

ORA-06512を失敗しました:で"SYS.UTL_HTTP"、行1130

ORA-29024:証明書の検証に失敗しましたURE

ORA-06512:

declare 
    lo_req utl_http.req; 
    lo_resp utl_http.resp; 
begin 
    utl_http.set_wallet ('file:/oracle/product/12.0.1/owm/wallets/test1237', 'test=1237'); 
    lo_req := utl_http.begin_request ('https://www.google.be'); 
    lo_resp := utl_http.get_response (lo_req); 
    dbms_output.put_line (lo_resp.status_code); 
    utl_http.end_response (lo_resp); 
end; 
/ 

ヘルプ私はオビ=ワン、あなたが私の唯一の希望だ:レコードの行6

で、それは次のように仕事がないことは注目に値します。

答えて

17

他人の利益のために私自身の質問に答える。

Oracleサポートによると、エンド・サイト証明書ではなく、証明書チェーンのみをインポートする必要があります。

Geotrust SSL CA & Geotrust Global CA

オラクルのサポートを引用する* .presstogo.com証明書

インポートしない:

を私は財布の中に次の証明書をインポートし、上記の使用例では

12cでselectが失敗する理由は、12cが表示したくないことです。 ウォレット内のユーザー証明書を信頼できる証明書として使用します。

これは以前のバージョンでは明らかに問題ではありませんでしたが、ウォレットからの証明書が問題を修正した を削除しました。

これは、私がHttpsサイトに接続するためのutl_httpの使用に関してオンラインで見つけたすべての情報と矛盾しています。

これは私の状況で他の人に役立つことを願っています。

関連する問題