Google chrome Tomcat/OpenSSL(以及Android上的Chrome):如何禁用客户端证书请求?

Google chrome Tomcat/OpenSSL(以及Android上的Chrome):如何禁用客户端证书请求?,google-chrome,tomcat,ssl,openssl,Google Chrome,Tomcat,Ssl,Openssl,背景: 我正在开发部署在Tomcat上的Grails应用程序。整个站点使用HTTPS(委托给带有APR本机库的OpenSSL)。当我使用Chrome从Android手机访问该网站时,我会收到以下提示,要求提供客户端证书(这是一个主要的可用性问题)。通过查看tcpdump,似乎OpenSSL确实在请求证书 我们不需要也不希望客户端证书身份验证(请注意,对于非公开内容,站点确实需要常规的用户/密码身份验证)。由于未知的原因,此提示出现在Android上的Chrome上,但不出现在其他浏览器上(所有桌

背景:

我正在开发部署在Tomcat上的Grails应用程序。整个站点使用HTTPS(委托给带有APR本机库的OpenSSL)。当我使用Chrome从Android手机访问该网站时,我会收到以下提示,要求提供客户端证书(这是一个主要的可用性问题)。通过查看tcpdump,似乎OpenSSL确实在请求证书

我们不需要也不希望客户端证书身份验证(请注意,对于非公开内容,站点确实需要常规的用户/密码身份验证)。由于未知的原因,此提示出现在Android上的Chrome上,但不出现在其他浏览器上(所有桌面浏览器、iPad上的Safari和其他浏览器)

我读到了OpenSSL支持的选项(这里似乎是适用的),但是当Tomcat在幕后调用OpenSSL时,如何配置它呢?在这种情况下,既不能使用该选项(以编程方式有效),也不能使用
-verify
(对OpenSSL客户端有效)

TL;DR:如何配置Tomcat和/或OpenSSL以避免向客户端浏览器请求客户端证书?无论我们做什么,我们必须在服务器端,这是一个公共互联网站点

多谢各位


脱离主题,但它是连接器元素中的属性。

您没有说明您使用的是哪个版本的Tomcat,因此我假设7.0.x您需要在server.xml中将以下内容添加到您的HTTPS连接器中

SSLVerifyClient="none"
所有其他SSL配置选项的详细信息都在文档中:

在这种情况下不是。OP使用的是APR/native连接器,而不是BIO或NIO连接器,clientAuth将是正确的属性。@MarkThomas提出了一个由来已久的问题,即为什么用于相同目的的两个连接器具有不同的属性名称。BIO和NIO使用JSSE公开一组配置选项,而APR/native使用OpenSSL公开一组配置选项有一套不同的。有足够多的细微差别(即使在表面上看起来相同的配置选项之间),将它们分开比尝试组合它们更容易混淆。