我已经为Apache httpd网站配置了SSL客户端证书,以便只有在其Web浏览器中安装了正确证书的用户才能访问该网站。
如果只安装了一个客户端证书,Web浏览器将自动选择它(它不是默认值,但可以在设置对话框中的某处配置)。但是,如果用户安装了多个证书,则Web浏览器会显示证书列表,用户必须选择正确的证书才能继续。
问题是:有没有办法配置httpd发送提示,以便网络浏览器可以自动选择所需的证书?
答案 0 :(得分:2)
SSL (TLS) protocol仅允许服务器在客户端证书上指定两个约束:
您可以使用"openssl s_client"查看Apache服务器信任哪些CA以获取客户端证书。我不知道如何配置Apache来更改该列表(抱歉),但我打赌有一种方法。因此,如果您可以将列表限制为(例如)您自己组织的CA,那么您将尽一切努力允许Web浏览器自动选择客户端证书。
正如尤金所说,浏览器是否真的这样做取决于特定的浏览器。
答案 1 :(得分:1)
我要说,由于证书的选择是客户端任务,因此没有明确的方法强制客户端从服务器端使用此证书或该证书。
答案 2 :(得分:1)
除了@Nemo和@Eugene所说的,默认情况下,Apache Httpd将从其SSLCACertificateFile
或SSLCACertificatePath
配置指令发送CA列表。
但是,您可以强制它使用certificate_authorities
或SSLCADNRequestFile
指令在SSLCADNRequestPath
中发送不同的列表,并将它们指向另一组证书。仅使用这些证书的主题DN(并在列表中发送)。如果要强制使用某些名称,您甚至可以使用您想要的任何名称对这些证书进行自签名。我已经尝试了这个(与SSLVerifyClient optional_no_ca
一起使用,你可以让客户端为服务器实际上没有的CA证书发送证书。(这不一定有用,但它有效。)