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

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

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

  • Safari 要求在网站的每个页面上选择客户端证书(很烦人)
  • Safari 甚至可能会在你已经访问过的页面上重新要求你选择证书,特别是当你需要更新客户端证书时

我该如何解决这些问题?

答案1

Safari 的客户端证书和相关偏好设置存储在钥匙串管理器种类证书

当你选择用于网站的证书时,它会在钥匙串管理器中存储另一个条目,其中包含种类身份偏好。不幸的是,默认情况下它仅存储您当前所在的确切页面。名称和位置都设置为页面的 URL。

要解决此问题,您只需编辑其中一个身份偏好条目,然后更改在哪里部分添加到基本 URL,例如https://somesslsite.com/(尾部斜杠很重要!)。我还更新了姓名为避免混淆,您可以删除所有其他身份偏好该网站的条目。

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

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

注意:我自己回答了这个问题,因为我已经明白了,但我想为自己和他人保留这些知识。

答案2

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

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

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.milserver2.subdomain2.army.mil。同样, 的首选项*.mil将匹配server.army.milserver.navy.mil

答案3

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

如果您有网站证书并且该证书已过期,则应删除旧证书。然后删除身份偏好该网站的类型项目。这些旧项目与证书一样过期。删除它们后,任何新的身份偏好都将被存储并正确使用。

所以:

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

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

相关内容