繁体   English   中英

是否可以自动 select 正确的客户端证书?

[英]Is it possible to automatically select correct client side certificate?

我已经使用 SSL 客户端证书配置了 Apache httpd 网站,这样只有在 web 浏览器中安装了正确证书的用户才能访问该网站。

如果只安装了一个客户端证书 web 浏览器将自动 select 它(它不是默认设置,但可以在设置对话框的某处进行配置)。 但如果用户安装了多个证书,web 浏览器会显示证书列表,用户必须选择正确的一个才能继续。

问题是:有没有办法配置httpd发送提示,使web浏览器可以自动select所需的证书?

SSL (TLS) 协议只允许服务器对客户端证书指定两个约束:

  1. 证书类型(RSA、DSA 等)
  2. 签署客户端证书的可信证书颁发机构 (CA)

您可以使用“openssl s_client”查看您的 Apache 服务器信任哪些 CA 以获得客户端证书。 我不知道如何配置 Apache 来更改该列表(抱歉),但我敢打赌有办法。 因此,如果您可以将列表限制为(例如)您自己组织的 CA,那么您将尽您所能允许 Web 浏览器自动访问 select 客户端证书。

正如尤金所说,浏览器是否真的这样做取决于特定的浏览器。

我想说,由于证书的选择是客户端任务,因此没有明确的方法可以强制客户端从服务器端使用这个或那个证书。

除了@Nemo 和@Eugene 所说的,默认情况下,Apache Httpd 将发送它从其SSLCACertificateFileSSLCACertificatePath配置指令中获取的 CA 列表。

但是,您可以强制它使用SSLCADNRequestFileSSLCADNRequestPath指令在certificate_authorities中发送不同的列表,并将它们指向另一组证书。 仅使用这些证书的主题 DN(并在列表中发送)。 如果您想强制使用某些名称,您甚至可以使用您想要的任何名称对这些证书进行自签名。 我已经尝试过了(与SSLVerifyClient optional_no_ca结合使用,您可以让客户端发送服务器实际上没有的 CA 证书的证书。(这不一定有用,但它有效。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM