wallet validación utl_http solicitud ora fallo example certificado begin_request 12c 11g oracle ssl plsql oracle12c

validación - utl_http oracle 11g



Uso de utl_http & wallets en 12c: falla de validación del certificado (1)

Responder mi propia pregunta para el beneficio de los demás.

Según Oracle Support, solo se debe importar la cadena de certificados, no el certificado del sitio final. En el ejemplo que utilicé arriba, solo importe los siguientes certificados en la billetera:

Geotrust SSL CA y Geotrust Global CA

No importe el certificado * .presstogo.com

Para citar el soporte de Oracle:

El motivo por el cual el select falla en 12c es que 12c no quiere ver el certificado del usuario en el monedero como un certificado de confianza.

Esto aparentemente no era un problema en las versiones anteriores, pero eliminar ese certificado de la billetera solucionó el problema aquí.

Esto contradice toda la información que he encontrado en línea sobre el uso de utl_http para conectarse a los sitios de Https, y me confundió muchísimo.

Espero que esto ayude a otros en mi situación.

Espero que alguien pueda detectar lo que estoy haciendo mal, ya que me estoy quedando calvo de esto.

He usado utl_http & wallets para llamar a https en 11gR1 sin muchos problemas, pero nuestra nueva instalación 12c me está causando un gran dolor.

Intenté importar el certificado de confianza utilizando tanto el administrador de cartera de Oracle como la línea de comando, sin ningún éxito. Sé que Oracle puede ser quisquilloso en guardar la billetera, así que he intentado varias sesiones nuevas sin suerte.

He descargado los tres certificados necesarios para * .presstogo.com, Geotrust SSL CA y Geotrust Global CA.

La versión de línea de comando de mi construcción de la billetera es la siguiente:

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, probemos esto. Inicie sesión en sqlplus y ejecute lo siguiente:

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;

DECLARAR

*

ERROR en la línea 1:

ORA-29273: solicitud HTTP fallida

ORA-06512: en "SYS.UTL_HTTP", línea 1130

ORA-29024: error de validación de certificado

ORA-06512: en la línea 6

Para el registro, vale la pena señalar que lo siguiente funciona:

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; /

Ayúdame Obi-Wan, eres mi única esperanza.