Java Jetty要求通过URL提供SSL客户端证书
我想在HTTPS站点上的Jetty中运行一个servlet,该站点只需要部分站点(特定URL)的客户端证书。例如: -无需客户证书 -需要客户证书 在Apache中,我可以通过在Java Jetty要求通过URL提供SSL客户端证书,java,authentication,servlets,https,jetty,Java,Authentication,Servlets,Https,Jetty,我想在HTTPS站点上的Jetty中运行一个servlet,该站点只需要部分站点(特定URL)的客户端证书。例如: -无需客户证书 -需要客户证书 在Apache中,我可以通过在或中指定SSLVERYCLIENT require来实现这一点,该命令迫使Apache在发出请求后重新协商SSL连接 我不想运行其他任何嵌入式Jetty,只是独立运行。这可能吗?Servlet会直接导致这种情况吗?可以通过配置完成吗?据我所知,您只能在每个端口的基础上指定SSL选项 即使您可以这样做,您试图实现的配置也是
或
中指定SSLVERYCLIENT require
来实现这一点,该命令迫使Apache在发出请求后重新协商SSL连接
我不想运行其他任何嵌入式Jetty,只是独立运行。这可能吗?Servlet会直接导致这种情况吗?可以通过配置完成吗?据我所知,您只能在每个端口的基础上指定SSL选项 即使您可以这样做,您试图实现的配置也是有问题的,因为它需要SSLRenegotiation,而SSLRenegotiation大约在一年前因为安全漏洞而被更改。因此,执行SSLRenognition的新方法仅受较新客户端的支持,有时即使支持它,也会因为错误而无法工作 我推荐一种简单的解决方法:将Jetty配置为在两个SSL端口上侦听:
例如,在443上不需要HTTPS客户端身份验证,在8443上需要HTTPS客户端身份验证。然后使受保护的servlet仅在8443上可用。这不是一个很好的解决方案,但100%健壮,适用于Jetty和所有客户机。在我的环境中,所有客户机和服务器都必须更新(reneg.问题发生的几周很有趣)。此外,通过各种防火墙将不允许使用非标准端口。几个月后,有人知道一种可以使用单个端口的解决方案吗?