YandexDirect

27 ноября 2020

Ошибка ORA-29259 ORA-29273 при запросе URL с https

 Доброго дня всем,

на днях столкнулся с проблемой, с Oracle Database 11g (11.2.0.4), необходимо было делать запросы на внешний URL с https. 

Как обычно настраивается такое взаимодействие:

1) Необходимо прописать acl

2) Настроить Oracle wallet


1) Настраиваем acl

BEGIN

  DBMS_NETWORK_ACL_ADMIN.create_acl (

    acl          => 'https.xml', 

    description  => 'ACL to grant access to https',

    principal    => 'APEX_050100',

    is_grant     => TRUE, 

    privilege    => 'connect',

    start_date   => SYSTIMESTAMP,

    end_date     => NULL);

  COMMIT;

END;

/


BEGIN

  DBMS_NETWORK_ACL_ADMIN.assign_acl (

    acl         => 'https.xml',

    host        => 'site_with_https.com', 

    lower_port  => 443,

    upper_port  => NULL);

  COMMIT;

END;

/


2) Настраиваем  wallet 

Тут лучше всего подойдет статья https://oracle-base.com/articles/misc/utl_http-and-ssl

Теперь к сути проблемы, настроил продуктивный сервер, там все нормально, соединение устанавливается успешно. А на препроде ошибка ORA-29273 и ORA-29259:







2 дня активного гугления не привели к никакому результату, пока я не решил сравнить какие патчи установлены на обе базы данных. Я предполагал что сервера идентичны. Но я очень удивился, когда обнаружил что на сервере с ошибкой установлен патч 20551790, которого нет на продуктивной системе. Данный патч закрывает баг UTL_HTTP: "ORA-29259: end-of-input reached" after updating TLS protocol support with MES bundle (Doc ID 2213850.1).

Выяснилось следующее, если у вас установлен патч 22695784, который добавляет поддержку протоколов TLSv1.1 и TLSv1.2,  а также установлен патч 20551790, который ограничивает использование протокола TLSv1.0, вместо протокола TLSv1.2 используется TLSv1.0, который отклоняется URL с https. Решение одно, необходимо удалить патч 20551790.

После того, как я удалил этот патч, соединение прошло успешно.

Комментариев нет:

Отправить комментарий

Общее·количество·просмотров·страницы