WL-Proxy-Client-Cert标头未发送

时间:2015-02-28 09:58:19

标签: apache servlets weblogic reverse-proxy

我使用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开头的标题,其中没有一个具有证书。

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

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

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

SSLOptions + ExportCertData

它位于" IfModule ossl_module",紧靠" SSLVerifyClient需要"指令,指定代理的双向身份验证。

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

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