Jetty通过URL要求SSL客户端证书

6
我希望在Jetty上运行一个servlet,它需要客户端证书才能访问网站的一部分(特定URL)。例如: https://example.com/someservlet/public - 不需要客户端证书 https://example.com/someservlet/protected - 需要客户端证书
在Apache中,我可以通过在或中指定SSLVerifyClient require来实现此目的,这会强制Apache在请求后重新协商SSL连接。
我不想在其他任何东西中嵌入Jetty,只想独立运行。这是可能的吗?Servlet能否直接引起这种情况?是否可以通过配置完成?
1个回答

3
据我所知,您只能按端口指定SSL选项。即使您可以这样做,您试图实现的配置也存在问题,因为它需要SSLRenegotiation,而由于安全漏洞,该选项已经在一年前更改了。因此,执行SSLRenogitiation的新方法仅受较新的客户端支持,有时即使得到支持,也可能因为错误而无法正常工作。
我的建议是采用简单的解决方法:将Jetty配置为监听两个SSL端口:例如,在443上不需要HTTPS客户端身份验证,在8443上需要HTTPS客户端身份验证。然后,将受保护的servlet仅提供在8443上使用。这不是一个理想的解决方案,但是100%稳健,适用于Jetty和所有客户端。

1
在我的环境中,所有客户端和服务器都必须更新(在重新协商问题发生时,这是一段有趣的几周)。此外,通过各种防火墙将不允许使用非标准端口。 - slushpupie
几个月后,有没有人知道一个适用于单个端口的解决方案? - Nicolas C

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