如何在Jetty中使客户端证书SSL重新协商工作?

5
我有一个Web应用程序,有一个公共的https区域和一个使用SSL重新协商保护的私人https区域,需要客户端证书验证。在Tomcat 7中,这种配置可以正常工作(但需要大量工作)。现在我正在使用Jetty,尝试了所有方法,但无法使其正常工作。浏览器中从未出现客户端证书对话框,总是收到HTTP 403错误。我的环境是:jdk 1.7.0.02,jetty 9.0.0.M3(通过Eclipse Helios和m2e启动)。服务器似乎已启用SSL重新协商,按照此处指示进行测试,因此我非常确定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 (jetty部分): http://pastebin.com/wBLATggq

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

1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接