PL/SQLコードを実行して、APEXを使用してWebサイトにデータをポストしようとしています。Oracle APEXを使用して自己署名された、公認されていないWebサイトへのREST呼び出し
問題は、ウェブサイトの証明書が自己署名されているので、それが適正な認定を受けていない、と私は以下のエラーが取得しています、次のとおりです。
ORA-29273: HTTP request failed ORA-06512: at "SYS.UTL_HTTP", line 1130 ORA-28860: Fatal SSL error
私は以下のコード使用しています:
をprocedure publish_error_tickets
is
req utl_http.req; res utl_http.resp; url varchar2(4000) := 'https://some_url'; name varchar2(4000); buffer varchar2(4000); content varchar2(4000) := '{ "issue": { "project_id": 1, "subject": "Example", "priority_id": 4 } }'; begin req := utl_http.begin_request(url, 'POST',' HTTP/1.1'); utl_http.set_header(req, 'user-agent', 'mozilla/4.0'); utl_http.set_header(req, 'content-type', 'application/json'); utl_http.set_header(req, 'Content-Length', length(content)); utl_http.write_text(req, content); res := utl_http.get_response(req); begin loop utl_http.read_line(res, buffer); dbms_output.put_line(buffer); end loop; utl_http.end_response(res); exception when utl_http.end_of_body then utl_http.end_response(res); end; end;
私の質問は、httpメッセージの証明書の検証プロセスを何とか無視できますか?サイトの証明書を購入する必要なく、ウェブサイトにアクセスする方法が必要です。事前に
おかげで、同じ問題を抱えて誰のための タマス
utl_htttpをSSL経由で接続するには、証明書をOracleウォレットに追加し、utl_http.set_walletを呼び出す必要があります。 –
はい、私はすでに知っていますが、サーバーがOracle XE上で稼働しているので、Oracleのウォレットにアクセスできないため、javaのようなSSLハンドシェークのすべてのものをバイパスすることが可能かどうか尋ねています。 Oracle XEには回避策がありますが、ウォレットなしで実行できる場合は、まずそれを試してみてください。 – Spigy
はい、あります。私はXEも使用し、Apacheリバース・プロキシを使用して、Oracleがhttpで接続できるようにします。詳細については、http://blog.rhjmartens.nl/2015/07/making-https-webservice-requests-from.html –