发布
社区首页 >问答首页 >ORA-29024:证书验证失败- Apex和HTTPS

ORA-29024:证书验证失败- Apex和HTTPS
EN

Stack Overflow用户
提问于 2020-07-11 15:47:36
回答 3查看 18.2K关注 0票数 5

让我解释一下正在发生的事情:

  • 数据库: Oracle 19c
  • 顶点: 19.1.0.00.15
  • 单机编号为19.1.0.r0921545

我完成了配置Apex社会化登录到Microsoft AAD的任务,几乎没有任何问题:

  • 我在Apex中创建了身份验证方法。
  • 我注册了我的申请,并在Azure获得了网络凭证。
  • 我使用根CA Microsoft证书在数据库中创建了一个钱包,并将实例设置配置为使用该钱包。
  • 我在数据库服务器中的钱包包含属性auto_login,以避免使用密码。
  • 我创建了ACE条目,以允许连接到端口443中的login.microsoftonline.com。
  • 虽然这对问题本身和产生的错误并不重要,但请注意,我在内部工作区中配置了钱包设置,以便向顶级应用程序提供对钱包的访问。

几个星期以来,这个过程运行得很好,我有一个完美的单一Sing on机制,用于我在不同工作空间中的所有顶级应用程序。然而,从几天前开始,我总是犯同样的错误:

ORA-29024:证书验证失败

经过一番挖掘,我意识到有人已经为传出流量配置了一个代理。在尝试Apex之前,我使用APEX_WEB_SERVICE在SQL中进行了尝试。

使用代理设置请求到login.microsoftonline.com

代码语言:javascript
代码运行次数:0
复制
select apex_web_service.make_rest_request(
    p_url         => 'https://login.microsoftonline.com',
    p_http_method => 'GET',
    p_wallet_path => 'file:/home/oracle/wallet',
    p_wallet_pwd => 'MyPassword' ,
    p_proxy_override => 'http://myproxy:myport'
  7  ) from dual;
ERROR:
ORA-29273: HTTP request failed
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1035
ORA-29024: Certificate validation failure
ORA-06512: at "SYS.UTL_HTTP", line 380
ORA-06512: at "SYS.UTL_HTTP", line 1148
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 934
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1580
ORA-06512: at "APEX_190100.WWV_FLOW_WEBSERVICES_API", line 408
ORA-06512: at line 1

没有代理设置的请求,只是为了看看我能不能到达那里

代码语言:javascript
代码运行次数:0
复制
SQL> select apex_web_service.make_rest_request(
  2      p_url         => 'https://login.microsoftonline.com',
  3      p_http_method => 'GET',
  4      p_wallet_path => 'file:/home/oracle/wallet'
  5* ) from dual
SQL> /
ERROR:
ORA-29273: HTTP request failed
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1035
ORA-29024: Certificate validation failure
ORA-06512: at "SYS.UTL_HTTP", line 380
ORA-06512: at "SYS.UTL_HTTP", line 1148
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 934
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1580
ORA-06512: at "APEX_190100.WWV_FLOW_WEBSERVICES_API", line 408
ORA-06512: at line 1

使用代理设置向google请求

代码语言:javascript
代码运行次数:0
复制
select apex_web_service.make_rest_request(
    p_url         => 'https://google.com',
    p_http_method => 'GET',
    p_wallet_path => 'file:/home/oracle/wallet',
    p_wallet_pwd => 'MyPassword' ,
  6      p_proxy_override => 'http://myproxy:myport'
  7  ) from dual ;
ERROR:
ORA-29273: HTTP request failed
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1035
ORA-29024: Certificate validation failure
ORA-06512: at "SYS.UTL_HTTP", line 380
ORA-06512: at "SYS.UTL_HTTP", line 1148
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 934
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1580
ORA-06512: at "APEX_190100.WWV_FLOW_WEBSERVICES_API", line 408
ORA-06512: at line 1

在没有代理设置的情况下向google请求

代码语言:javascript
代码运行次数:0
复制
SQL> select apex_web_service.make_rest_request(
  2      p_url         => 'https://google.com',
  3      p_http_method => 'GET',
  4      p_wallet_path => 'file:/home/oracle/wallet'
  5* ) from dual
SQL> /
ERROR:
ORA-29273: HTTP request failed
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1035
ORA-12535: TNS:operation timed out
ORA-06512: at "SYS.UTL_HTTP", line 380
ORA-06512: at "SYS.UTL_HTTP", line 1148
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 934
ORA-06512: at "APEX_190100.WWV_FLOW_WEB_SERVICES", line 1580
ORA-06512: at "APEX_190100.WWV_FLOW_WEBSERVICES_API", line 408
ORA-06512: at line 1

我的问题如下:

  • 这是一个网络问题,还是一个有关入站/出站流量的代理问题?当我不指定代理时,我可以在端口443中找到微软,但不能访问谷歌。
  • 为什么与证书无关的证书无效?
  • 当我在中间有一个代理时,我如何设置我的APEX来使用Azure或任何其他提供者的身份验证?
  • 当我使用or独立的时候,我是否允许继续使用它,或者我需要一个与Tomcat相反的代理?

我尝试将ACE配置为在端口中使用HTTP_PROXY,运行

代码语言:javascript
代码运行次数:0
复制
begin
  sys.dbms_network_acl_admin.append_host_ace(
    host        => 'myproxyserver'
   ,lower_port  => 8080
   ,upper_port  => 8080
   ,ace         => xs$ace_type(
      privilege_list     => xs$name_list('http_proxy')
     ,granted            => true
     ,principal_name     => 'MY_PRINCIPAL'
     ,principal_type     => XS_ACL.PTYPE_DB
    )
  );
end;
/

即使我也授予ACE对钱包的特权

代码语言:javascript
代码运行次数:0
复制
SET SERVEROUTPUT ON
BEGIN
  DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE
  (
    WALLET_PATH => 'file:/home/oracle/wallet',
    ACE => XS$ACE_TYPE(
                        PRIVILEGE_LIST => XS$NAME_LIST('use_passwords','use_client_certificates'),
                        PRINCIPAL_NAME => 'MY_PRINCIPAL',
                        PRINCIPAL_TYPE => XS_ACL.PTYPE_DB
                      )
  );
EXCEPTION WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('Error while configuring ACL for wallet: '|| SQLERRM);
END;
/

但我还是会犯同样的错误。

任何帮助都将不胜感激!谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-19 13:31:32

感谢所有发帖回答的人,但最后,经过一段时间的挣扎,我找到了根本原因。实际上,甲骨文毕竟是正确的,因为微软改变了身份验证的处理方式,无论是使用Oauth2还是OpenID,当您使用Office365和Azure Active时。

在这种情况下,我的组织正在使用Office 365,一开始就已经足够从以下地方导入PKI证书:

https://www.microsoft.com/pki/mscorp/cps/default.htm

在Azure Active Directory中完成更改后,您现在还需要来自office.com的全局签名证书

我希望它能澄清其他遇到同样问题的用户,他们试图使用Apex社会登录来验证Azure Active Directory。

您可以直接从office365.com 365.com下载证书。

在将新的两个证书添加到钱包后,您现在可以无问题地输入:

代码语言:javascript
代码运行次数:0
复制
select apex_web_service.make_rest_request(
    p_url         => 'https://login.microsoftonline.com',
    p_http_method => 'GET',
  4      p_wallet_path => 'file:/home/oracle/wallet' ) from dual ;

APEX_WEB_SERVICE.MAKE_REST_REQUEST(P_URL=>'HTTPS://LOGIN.MICROSOFTONLINE.COM',P_
--------------------------------------------------------------------------------


<!-- Copyright (C) Microsoft Corporation. All rights reserved. -->
<!DOCTYP


SQL>
票数 0
EN

Stack Overflow用户

发布于 2020-07-13 11:59:20

我遇到了这样的问题,似乎Oracle SSL库有一些bug。最后,我为OJVM实现了一些Java,请在这里阅读我的答案:https://stackoverflow.com/a/60152830/11272044

票数 0
EN

Stack Overflow用户

发布于 2020-07-12 09:13:22

据我理解,您将需要做以下(除了您所做的):

  1. 以管理员身份登录Apex
  2. 从设置转到“钱包”
  3. 添加钱包路径(绝对路径带有前缀'file://‘和密码,用于创建钱包

现在你的问题应该解决了。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62851314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档