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


19

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

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

我该如何解决这些问题?

Answers:


19

Safari的客户端证书和相关首选项存储在 钥匙串经理 用一个 证书

当您选择要用于网站的证书时,它会在Keychain Manager中存储另一个条目 身份偏好 。不幸的是,默认情况下,它仅存储您所在的确切页面。名称和位置都设置为页面的URL。

要解决此问题,您只需编辑其中一个标识首选项条目并更改 哪里 部分到基本URL,比如 https://somesslsite.com/ (尾随斜线很重要!)。我也更新了 名称 同样的事情,以防止混淆。然后,您可以删除所有其他 身份偏好 该网站的条目。

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

找到 证书 身份偏好 条目,打开钥匙串管理器,确保 所有项目 选中,并根据需要搜索部分URL和/或证书名称。你可能没有很多,所以如果这不起作用,只需按列表排序 你应该能够轻松找到它们。

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


1
不幸的是,Safari一直在询问每个子网址......: - /
Tafkadasoh

删除评论。 DanJs的回答已经解释了这一点。
Calon

不是说你必须更新 地点 属性。名字不够。
andy

14

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

部分路径示例(请注意,需要使用尾部斜杠!):

https://server.mydomain.com/

通配符示例:

*.mydomain.com

这里有详细信息(来自'man security'页面):

在10.5.4之前,SSL / TLS客户端身份验证的身份首选项只能基于每个URL进行设置。正在访问的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.mil 要么 server2.subdomain2.army.mil。同样,偏爱 *.mil 将两者都匹配 server.army.milserver.navy.mil


为我工作(在Mac OS X 10.9.1上运行Safari 7.0.1)
Tafkadasoh

3

我一直在努力解决这个问题,上面的回答让我意识到发生了什么。

如果您拥有网站的证书并且已过期,那么您应该删除旧证书。然后还删除 身份偏好 输入该网站的项目。这些旧项目与证书一样过期。删除它们后,将正确存储和使用任何新的标识首选项。

所以:

  1. 删除旧证书
  2. 删除旧证书的标识首选项
  3. 添加新证书

然后,您可以浏览到该网站,从列表中选择新证书,这将记住该特定的Web地址。目前我们在Safari 5.1.3并且此版本不会使用任何通配符作为首选项,您将不得不为网址中的每个更改添加首选项...希望这有助于某人,只是把它放在那里,因为我没有找到任何完整的答案。


请参考@apinstein答案,了解正确的方法
dwery
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.