【问题标题】:WL-Proxy-Client-Cert header not sentWL-Proxy-Client-Cert 标头未发送
【发布时间】:2015-02-28 09:58:19
【问题描述】:

我正在使用 Oracle HTTP Server 作为 WebLogic 的反向代理。我已经在代理和服务器上设置了 SSL,并使用了客户端证书身份验证。它可以工作并且客户端通过 OHS 进行身份验证,但我需要将客户端证书信息传递给 WebLogic,以便我可以在我的 servlet 中查看此证书。文档说代理可以将“WL-Proxy-Client-Cert”http 标头中的客户端证书转发到 WebLogic 服务器。

但是,我无法让它工作。在我的 servlet 中,我尝试了 request.getHeader() 和 request.getAttribute() 并获得了 null。我查看了请求对象的标头和属性,没有看到 WL-Proxy-Client-Cert 之类的东西。实际上我没有看到任何以 WL 开头的标头,只有几个以 X-WebLogic 开头的标头,其中没有一个具有证书。

我确实在管理控制台中启用了“启用客户端证书代理”选项,如文档中所述。我也知道客户端通过了身份验证,因为我看到了浏览器请求的证书,之后我可以成功访问该站点。

我错过了什么吗?

【问题讨论】:

  • 这听起来像 WebLogic 正在基于客户端证书进行身份验证...那么问题是什么,您还想要一些 Servlet 可用的证书信息吗?启用客户端证书代理后,我认为它应该可以与 getAttribute 一起使用;我假设您激活了更改?
  • 我激活了更改。我还检查了调试器,我在标题和属性中都没有看到它。由于我的 weblogic 服务器本身具有客户端证书身份验证,因此我确实在“javax.servlet.request.X509Certificate”属性中获得了证书,但这是代理本身的证书,而不是客户端的证书。我需要的是获取客户端证书。
  • 另外,正如某处所建议的那样,我在插件配置中启用了 WLProxySSL 和 WLProxySSLPassThrough 指令,但不幸的是这并没有什么不同。

标签: apache servlets weblogic reverse-proxy


【解决方案1】:

我终于得到了 Oracle 支持的答复。问题是我必须在我的虚拟主机配置中添加一个 SSL 指令:

SSLOptions +ExportCertData

它位于“IfModule ossl_module”下,紧挨着“SSLVerifyClient require”指令,该指令指定代理的 2 路身份验证。

请注意,在此之后,在 servlet 中,证书将出现在通常的“javax.servlet.request.X509Certificate”属性中,就好像服务器正在自己进行客户端证书身份验证一样(没有收到额外的标头)。

另外,请注意,如果您对代理完成的身份验证感到安全,您可以让服务器使用单向 SSL,并且您仍然会在 servlet 的属性中收到证书(在这种情况下,您可能应该添加他们建议的过滤器以确保请求仅来自代理)。我感觉即使服务器端口是普通的http它也能工作,虽然我还没有测试过。

【讨论】:

  • 是的,即使代理和 WebLogic 之间的连接是纯 HTTP(我使用带有 WL 插件的 apache 作为代理),它也可以工作。
猜你喜欢
  • 2017-11-27
  • 2018-06-22
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多