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

时间:2011-05-24 09:05:15

标签: ssl certificate client-side

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

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

问题是:有没有办法配置httpd发送提示,以便网络浏览器可以自动选择所需的证书?

3 个答案:

答案 0 :(得分:2)

SSL (TLS) protocol仅允许服务器在客户端证书上指定两个约束:

  1. 证书类型(RSA,DSA等)
  2. 签署客户端证书的受信任证书颁发机构(CA)
  3. 您可以使用"openssl s_client"查看Apache服务器信任哪些CA以获取客户端证书。我不知道如何配置Apache来更改该列表(抱歉),但我打赌有一种方法。因此,如果您可以将列表限制为(例如)您自己组织的CA,那么您将尽一切努力允许Web浏览器自动选择客户端证书。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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