无法在 Safari 11 中接受自签名证书以访问 Vagrant/Homestead 本地站点

Cannot accept self signed certificate in Safari 11 to access Vagrant / Homestead local site

我安装了 Vagrant 和 Homestead 以在本地测试我的应用程序。当我在 Firefox 和 Chrome 中访问 http://mysite.app 时,一切正常。但是,Safari 不允许我使用网站的 http / 非安全版本,并会自动将我重定向到安全 (https) 版本。例如,当访问 http://mysite.app 时,我被重定向到 https://mysite.app

其他浏览器(Firefox 和 Chrome)不会重定向我,我可以使用标准的非安全版本。所以这不是服务器强制执行的重定向。

如果 Safari 允许我访问 https 版本,重定向本身就不是真正的问题。由于它是本地开发环境,SSL 证书是自签名的,Safari 不允许我访问具有不受信任证书的站点。所以最后,我在使用 Safari 访问这个 Vagrant 网站时总是得到 Safari can't establish a secure connection 错误。

Safari 不提供(不再?)接受自签名证书的方法。同样,这不是 Chrome 或 Firefox 的问题,因为它们允许您直接从浏览器添加异常。

知道如何让 Safari 使用站点的 http 版本 让 Safari 信任自签名证书吗?

仅供参考,我在 High Sierra 10.13.2 Beta 上使用 Safari 11.0.2。 iMac 和 MacbookAir 上的结果相同,因此与计算机无关。

虽然我没有找到为什么 Safari 要强制使用 SSL 并且不想在此 Vagrant/Homestead 框(如 Firefox 或 Chrome), 我找到了一种在 MacOS Keychain Access 中将自签名站点证书标记为受信任的方法。

请注意,这不应该是早期版本的 MacOS 的问题,因为 Safari 过去允许您直接在浏览器中添加例外并继续访问具有无效 SSL 证书的站点。此选项接缝将在 Safari 11 (High Sierra) 中消失。

所以在主机上访问我的 Vagrant 网站 is to save the site certificate 的解决方案(使用 ssh 连接到 Vagrant box 或其他浏览器),将其添加到钥匙串并将其标记为受信任。

然而,另一个关于 Keychain Access 的问题出现了。虽然这曾经在早期版本的 MacOS 中工作,但在 High Sierra(或至少 10.13.2 Beta)下,从 Keychain Access 应用程序将证书标记为受信任的能力已经消失。在我的 iMac 和 MacbookAir 上,双击添加到钥匙串的证书完全没有任何反应。即使从上下文菜单中单击 Get Info 也无法编辑证书。

A workaround for this是使用命令行将证书标记为可信。使用终端,cd 到您计算机上保存证书的目录,然后 运行 此命令:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain example.app.cer

example.app.cer 更改为您的证书名称。这会将证书标记为 Keychain Access 中的可信证书,并允许您访问本地站点,就好像它是用有效证书签名的一样。

tl;dr 将从 Vagrant/Homestead 框中获取的站点证书添加到钥匙串,运行 命令并仅使用 https 连接。

之前的回答并不完全正确。 macOS High Sierra 具有通过钥匙串访问应用程序信任证书的能力,因此不需要 CLI。

步骤:

  1. 打开 Keychain Access 应用并找到您的证书。
  2. 文件->获取信息
  3. 打开信息中的“信任”菜单window(注意“信任”一词左侧的三角形披露。)
  4. 将使用此证书时设置为 "Always Trust"。

完成。