Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jetty要求通过URL提供SSL客户端证书_Java_Authentication_Servlets_Https_Jetty - Fatal编程技术网

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

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选项 即使您可以这样做,您试图实现的配置也是

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

-无需客户证书 -需要客户证书

在Apache中,我可以通过在
中指定
SSLVERYCLIENT require
来实现这一点,该命令迫使Apache在发出请求后重新协商SSL连接


我不想运行其他任何嵌入式Jetty,只是独立运行。这可能吗?Servlet会直接导致这种情况吗?可以通过配置完成吗?

据我所知,您只能在每个端口的基础上指定SSL选项

即使您可以这样做,您试图实现的配置也是有问题的,因为它需要SSLRenegotiation,而SSLRenegotiation大约在一年前因为安全漏洞而被更改。因此,执行SSLRenognition的新方法仅受较新客户端的支持,有时即使支持它,也会因为错误而无法工作

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

在我的环境中,所有客户机和服务器都必须更新(reneg.问题发生的几周很有趣)。此外,通过各种防火墙将不允许使用非标准端口。几个月后,有人知道一种可以使用单个端口的解决方案吗?