在 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.mil
或server2.subdomain2.army.mil
。同样, 的首选项*.mil
将匹配server.army.mil
和server.navy.mil
。
答案3
我自己也一直在努力解决这个问题,上面的答案让我意识到发生了什么。
如果您有网站证书并且该证书已过期,则应删除旧证书。然后删除身份偏好该网站的类型项目。这些旧项目与证书一样过期。删除它们后,任何新的身份偏好都将被存储并正确使用。
所以:
- 删除旧证书
- 删除旧证书的身份首选项
- 添加新证书
然后您可以浏览网站,从列表中选择新证书,系统会记住该特定网址。目前我们使用的是 Safari 5.1.3,此版本不会使用任何通配符作为首选项,您必须为每次更改网址添加首选项...希望这对某些人有所帮助,只是把它放在那里,因为我没有找到任何完整的答案。