Jetty需要URL的SSL客户端证书

时间:2011-01-14 16:45:54

标签: java authentication servlets https jetty

我想在一个HTTPS站点上在Jetty中运行一个servlet,该站点只需要部分站点的客户端证书(特定URL)。例如:

https://example.com/someservlet/public - 无需客户证书   https://example.com/someservlet/protected - 需要客户证书

在Apache中,我可以通过在SSLVerifyClient require<Directory>内指定<Location>来强制Apache在请求后重新协商SSL连接来实现此目的。

我不想将Jetty嵌入到其他任何东西中,只是单独使用。这可能吗? Servlet可以直接以某种方式导致这种情况吗?可以通过配置来完成吗?

1 个答案:

答案 0 :(得分:3)

据我所知,您只能基于每个端口指定SSL选项。

即使您可能尝试实现的配置存在问题,因为它需要SSLRenegotiation,由于存在安全漏洞,该协议在一年前就已更改。因此,新的客户端只支持执行SSLRenogitiation的新方法,有时即使支持它也不会因为错误而起作用。

我建议一个简单的解决方法:配置Jetty侦听两个SSL端口: 例如,在没有HTTPS客户端身份验证的443和需要HTTPS客户端身份验证的8443上。然后使您的受保护的servlet仅在8443上可用。这不是一个很好的解决方案,但100%强大,适用于Jetty和所有客户端。