我有一个Web应用程序,该应用程序具有一个公共https区域,以及一个使用SSL重新协商受客户端证书保护的私有https。
在具有APR的Tomcat 7中,此配置可以正常工作(不是没有很多工作)。

现在,我正在与Jetty合作,并且尝试了所有方法,但无法使其正常工作。

客户端证书对话框永远不会出现在浏览器中,并且我总是收到HTTP 403错误。

我的环境是:
jdk 1.7.0.02
Eclipse Helios推出了带有m2e的码头9.0.0.M3。 (码头:运行)

服务器似乎已启用SSL重新协商,并按照here的指示对其进行了测试,因此我很确定SSL重新协商安全性问题没有问题。

我已重写ClientCertAuthenticator(以便进行调试)并创建了一个自定义LoginService,看起来X509Cert从未出现在请求中。

似乎从未触发SSL重新协商,并且身份验证失败,因为请求中没有证书。

配置的LoginService仅对每个验证都返回true。如果需要的话,我也可以发布它们,但是重要的方法永远不会被调用。

如果我使用needCLientCert或wantClientCert应用程序工作正常,但是浏览器会在公共区域中请求证书。

我的配置文件:

web.xml:http://pastebin.com/LQ3RcWY4

jetty.xml:http://pastebin.com/iE9xqcLq

jetty-context.xml:http://pastebin.com/rcSsBfRW

pom.xml(码头部分):http://pastebin.com/wBLATggq

我是否缺少明显的东西?我不知道。我已经搜索了很多并尝试了许多可能的配置,但是,没有运气。

最佳答案

http://docs.codehaus.org/display/JETTY/Jetty+Security

通过在Jetty中关闭SSL重新协商来解决。如果使用JVM> 1.6u19,则可以在连接器上调用setAllowRenegotiate(true)

但是,您打开服务器进行BEAST攻击。

07-26 06:13
查看更多