如何让 Safari 自动为整个站点使用特定的客户端证书?

api*_*ein 31 safari ssl-certificate

在 Safari 中使用客户端证书存在许多问题:

  • Safari 要求在网站的每个页面上选择一个客户端证书(烦人)
  • Safari 甚至可能会重新要求您在已访问过的页面上选择证书,尤其是在您必须更新客户端证书时

我该如何解决这些问题?

api*_*ein 33

Safari 的客户端证书和相关首选项与一种证书一起存储在钥匙串管理器中。

当您选择一个网站,以使用证书,它存储与在Keychain管理器中的另一个条目样的身份偏好设置。不幸的是,默认情况下它只为您所在的确切页面存储它。名称和位置都设置为页面的 URL。

要解决此问题,您只需编辑身份首选项之一并将where部分更改为基本 URL,例如https://somesslsite.com/(尾部斜杠很重要!)。我还将名称更新为相同的内容以防止混淆。然后,您可以删除该站点的所有其他身份首选项条目。

如果您的证书已过期,并且必须添加新证书,我建议您删除旧证书条目和所有相关的身份首选项条目。

要查找证书身份首选项条目,请打开钥匙串管理器,确保选择了所有项目,并根据需要搜索部分 URL 和/或证书名称。你可能不会有很多,所以,如果不工作只是排序列表,你应该能够很容易地找到它们。

注意:我自己回答这个问题,因为我想通了,但想为自己和其他人坚持这些知识。

  • 不幸的是,Safari 一直在询问每个子 URL... :-/ (2认同)

小智 23

较新版本的 OS X 现在支持部分路径和通配符。因此,您可以使用钥匙串管理器为整个网站和/或域创建身份首选项。

部分路径示例(注意尾部斜杠是必需的!):

https://server.mydomain.com/
Run Code Online (Sandbox Code Playgroud)

通配符示例:

*.mydomain.com
Run Code Online (Sandbox Code Playgroud)

此处的完整详细信息(来自“man security”页面):

在 10.5.4 之前,只能基于每个 URL 设置 SSL/TLS 客户端身份验证的身份首选项。被访问的 URL 必须与服务名称完全匹配才能使首选项生效。

在 10.5.4 中,通过使用带有部分路径 URL 的服务名称来匹配同一服务器上更具体的路径,可以在每个服务器的基础上指定身份首选项。例如,如果存在“ https://www.apache-ssl.org/ ”的身份首选项,它将对“ https://www.apache-ssl.org/cgi/cert-export ”生效,等等。请注意,部分路径 URL 必须以尾部斜杠字符结尾。

从 10.6 开始,可以通过使用通配符*作为服务名称最左边的部分,在每个域的基础上指定身份首选项。与 SSL 通配符不同,身份偏好通配符可以匹配多个子域。例如,名称的身份首选项*.army.mil将匹配server1.subdomain1.army.milserver2.subdomain2.army.mil。同样,首选*.mil将匹配server.army.milserver.navy.mil