WL-Proxy-Client-Cert header 未发送

WL-Proxy-Client-Cert header not sent

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

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

我确实按照文档中的描述在管理控制台中启用了 "Client Cert Proxy Enabled" 选项。我还知道客户端已通过身份验证,因为我看到浏览器请求的证书,之后我可以成功访问该站点。

我是不是漏掉了什么?

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

SSLOptions +ExportCertData

它在 "IfModule ossl_module" 下,紧挨着为代理指定双向身份验证的 "SSLVerifyClient require" 指令。

请注意,在此之后,在 servlet 中,证书将出现在通常的 "javax.servlet.request.X509Certificate" 属性中,就好像服务器本身正在执行客户端证书身份验证一样(不会收到额外的 headers) .

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