我想在一个HTTPS站点上在Jetty中运行一个servlet,该站点只需要部分站点的客户端证书(特定URL)。例如:
https://example.com/someservlet/public - 无需客户证书 https://example.com/someservlet/protected - 需要客户证书
在Apache中,我可以通过在SSLVerifyClient require
或<Directory>
内指定<Location>
来强制Apache在请求后重新协商SSL连接来实现此目的。
我不想将Jetty嵌入到其他任何东西中,只是单独使用。这可能吗? Servlet可以直接以某种方式导致这种情况吗?可以通过配置来完成吗?
答案 0 :(得分:3)
据我所知,您只能基于每个端口指定SSL选项。
即使您可能尝试实现的配置存在问题,因为它需要SSLRenegotiation,由于存在安全漏洞,该协议在一年前就已更改。因此,新的客户端只支持执行SSLRenogitiation的新方法,有时即使支持它也不会因为错误而起作用。
我建议一个简单的解决方法:配置Jetty侦听两个SSL端口: 例如,在没有HTTPS客户端身份验证的443和需要HTTPS客户端身份验证的8443上。然后使您的受保护的servlet仅在8443上可用。这不是一个很好的解决方案,但100%强大,适用于Jetty和所有客户端。