【发布时间】: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