Hola Amig@s,
Si por un casual necesitamos conectarnos a una dirección https desde Oracle, por SQL o PL/SQL por ejemplo, no nos valdrá la conexión normal. Oracle necesita utilizar certificados que se instalan en la Oracle Wallet y que luego se llaman a la hora de establecer la conexión con el host remoto. Esto normalmente se utiliza con Web Services (SOAP y REST).
Pasos para realizar una conexión HTTPS:
1-Crear una ACL al puerto 443:
begin
dbms_network_acl_admin.create_acl (
acl => 'utl_http.xml',
description => 'HTTP Access',
principal => 'USUARIO', >> cambiar por el usuario correcto.
is_grant => TRUE,
privilege => 'connect',
start_date => null,
end_date => null
);
dbms_network_acl_admin.add_privilege (
acl => 'utl_http.xml',
principal => 'USUARIO', >> cambiar por el usuario correcto.
is_grant => TRUE,
privilege => 'resolve',
start_date => null,
end_date => null
);
dbms_network_acl_admin.assign_acl (
acl => 'utl_http.xml',
host => '*.google.com',
lower_port => 443,
upper_port => 443
);
commit;
end;
2-Crear un directorio donde se almacenará los certificados (wallet):
mkdir e:\oracle\wallet
3-Asociar el directorio al Oracle Wallet (donde se almacenará los certificados (wallet)):
orapki wallet create -wallet e:\oracle\wallet -pwd WalletPasswd123 -auto_login
4-Descargarnos el certificado raíz:
Para trabajar con Oracle Wallet tendremos que descargarnos el certificado raíz. Por ejemplo, para google, tecleamos google.com en la barra de tareas, hacemos clic sobre el icono de (seguro o secure) si estamos en chrome, luego en detalles, luego en el botón Ver Certificado (view certificate), luego en la pestaña Ruta del certificado o Certification Path, hacemos clic sobre el primer registro superior, pinchamos en el botón Ver Certificado, luego pinchamos en Detalle y abajo en el botón de Copiar a fichero.. lo exportamos seleccionando como tipo de certificado el de X.509 Codificado base 64 .CER, luego siguiente, indicamos una ruta donde dejarlo, por ejemplo c:\google.cer y finalizamos la exportación.
4-Asociar el certificado google.cer a la wallet:
Abrimos una consola y nos cambiamos a la ruta donde generamos el certificado que en este ejemplo era c:\
c:
cd\
Ahora ejecutamos el comando que asocia el certificado al directorio (wallet) creado anteriormente:
orapki wallet add -wallet e:\oracle\wallet -trusted_cert -cert "google.cer" -pwd WalletPasswd123
Si todo ha ido bien, no veremos ningún mensaje de respuesta, solo la ejecución del orapki.
5-Ahora que ya tenemos nuestra wallet con un certificado válido para el sitio al que queremos conectarnos, procederemos a probar la conexión HTTPS. Cuando se llama a la conexión UTL_HTTP tendremos que definirle que la conexión requerirá utilizar una wallet (colocar antes del begin request).
EXEC UTL_HTTP.set_wallet('file:e:\oracle\wallet', 'WalletPasswd123');
Ejemplo:
DECLARE
lo_req UTL_HTTP.req;
lo_resp UTL_HTTP.resp;
BEGIN
UTL_HTTP.SET_WALLET ('file:e:\oracle\wallet','WalletPasswd123');
lo_req := UTL_HTTP.begin_request('https://www.google.com');
lo_resp := UTL_HTTP.get_response(lo_req);
dbms_output.put_line(lo_resp.status_code);
UTL_HTTP.end_response(lo_resp);
END;
Respuesta:
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><meta content="Google.com...
E voila!
Nota: Si estamos detrás de un proxy, deberemos indicar también que será necesario un proxy a través del comando:
UTL_HTTP.SET_PROXY('IPDELPROXY:PUERTO');
También será necesario crear una ACL para el propio proxy:
BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl => 'utl_http.xml',
host => 'IPDELPROXYSINPUERTO');
END;
Nota: En caso de recibir un certificado en formato p12, primero hay que importarlo, luego exportarlo como pfx y por último para poder importar el fichero en la Oracle Wallet, lo convertiremos a extensión CER con el siguiente comando desde powershell:
Get-PfxCertificate -FilePath .\nombrecertificado.pfx | Export-Certificate -FilePath nuevocertificado.der -Type CERT
Espero que les haya resultado útil.
Salu2.
Home / Cursos Paso a Paso /
Noticias /
Oracle /
Sistemas Operativos
/ Como utilizar conexiones HTTPS en Oracle 11g, 12c, con Oracle Wallet
- Blogger Comment
Suscribirse a:
Enviar comentarios
(
Atom
)
1 comentarios:
buenas, en alguna ocasión lo conectaste con cloudflare de por medio?
Publicar un comentario