如何在Jetty中进行CLIENT-CERT SSL重新协商?

时间:2013-01-18 22:54:22

标签: java servlets ssl jetty client-certificates

我有一个具有公共https区域的webapp,以及使用SSL重新协商保护客户端证书的私有https。 这个配置在带有APR的Tomcat 7中正常工作(并非没有太多工作)。

现在我正在和Jetty合作,但我已经尝试了所有东西,但是我无法让它发挥作用。

客户端证书对话框从未出现在浏览器中,我总是收到HTTP 403错误。

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

服务器似乎已启用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

我错过了一些明显的东西吗?我不知道。我经常搜索并尝试了很多可能的配置,但是没有运气。

1 个答案:

答案 0 :(得分:0)

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

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

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