ORA-24247: network access denied by access control list (ACL)
Després d'investigar una miqueta veia que es produïa en obrir una connexió HTTP fent servir el package
UTL_HTTP
. I això funcionava perfectament a la 10g. El més fort és que fent servir un procediment anònim funcionava i amb un procedure no.Això funciona:
declare
l_http_req utl_http.req;
begin
l_http_req := utl_http.begin_request ('http://alapamui.blogspot.com/', 'POST');
utl_http.end_request(l_http_req);
end;
/
Això no funciona:
create or replace procedure test_http is
l_http_req utl_http.req;
begin
l_http_req := utl_http.begin_request ('http://alapamui.blogspot.com/', 'POST');
utl_http.end_request(l_http_req);
end;
/
begin
test_http;
end;
/
Investigant una miqueta més, resulta que a la 10g un usuari amb permisos per executar
UTL_HTTP
podia accedir a qualsevol URL, però a la 11g han incorporat un mecanisme més fi basat en ACL (Access Control Lists).A la web de ORACLE-BASE hi ha una explicació de com funcionen els accessos a xarxa a la 11g. En el meu cas he tingut prou amb el següent:
BEGINSi el que cal és accedir a una pàgina per HTTPS, cal configurar també els certificats a l'Oracle o obtindreu un error com el següent:
DBMS_NETWORK_ACL_ADMIN.create_acl (
acl => 'alapamui.xml',
description => 'Alapamui ACL',
principal => 'ALAPAMUI',
is_grant => TRUE,
privilege => 'connect',
start_date => SYSTIMESTAMP,
end_date => NULL);
COMMIT;
END;
/
BEGIN
DBMS_NETWORK_ACL_ADMIN.assign_acl (
acl => 'alapamui.xml',
host => 'alapamui.blogspot.com',
lower_port => NULL,
upper_port => NULL);
COMMIT;
END;
/
ORA-29024: Certificate validation failure
Els certificats a l'Oracle s'enregistren en una cosa que li diuen Wallet. Si no disposeu de l'Oracle Wallet Manager podeu enregistrar els certificats fent servir la comanda
orapki
.
No comments:
Post a Comment