Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl 无法接受Safari 11中的自签名证书以访问流浪者/宅地本地站点_Ssl_Safari_Vagrant_Homestead_Macos High Sierra - Fatal编程技术网

Ssl 无法接受Safari 11中的自签名证书以访问流浪者/宅地本地站点

Ssl 无法接受Safari 11中的自签名证书以访问流浪者/宅地本地站点,ssl,safari,vagrant,homestead,macos-high-sierra,Ssl,Safari,Vagrant,Homestead,Macos High Sierra,我安装了Wagrant和Homestead在本地测试我的应用程序。当我访问http://mysite.app在Firefox和Chrome中。但是,Safari不允许我使用该站点的http/非安全版本,并将自动将我重定向到安全(https)版本。例如,当访问http://mysite.app,我被重定向到https://mysite.app 其他浏览器(Firefox和Chrome)不会重定向我,我可以使用标准的非安全版本。所以这不是服务器强制的重定向 如果Safari允许我访问https版本,

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

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

如果Safari允许我访问
https
版本,那么重定向本身就不是问题。由于它是本地开发环境,SSL证书是自签名的,Safari不允许我使用不受信任的证书访问站点。所以最后,当使用Safari访问这个流浪网站时,我总是遇到一个
Safari无法建立安全连接的错误

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

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


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

虽然我不知道Safari为什么要强制使用SSL,也不想在这个流浪者/宅地盒子(如Firefox或Chrome)上使用我的网站的非安全(http)版本,但我找到了一种方法,将自签名的网站证书标记为MacOS密钥链访问中的受信任证书

请注意,以前版本的MacOS不应存在此问题,因为Safari允许您直接在浏览器中添加异常,并使用无效的SSL证书继续访问站点。这将在Safari 11(High Sierra)中消失

因此,可以在主机上访问我的Vagrant网站(使用到Vagrant box或其他浏览器的ssh连接),将其添加到密钥链并将其标记为受信任

然而,另一个关于钥匙链访问的问题出现了。虽然这在早期版本的MacOS中适用,但在High Sierra(或至少10.13.2 Beta)下,将密钥链访问应用程序中的证书标记为受信任的功能消失了。在我的iMac和MacbookAir上,双击添加到密钥链中的证书绝对没有任何作用。即使从上下文菜单中单击“获取信息”
,也无法编辑证书

是使用命令行将证书标记为受信任。使用终端,
cd
将证书保存到计算机上的目录,并运行以下命令:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain example.app.cer
使用您的证书名称更改
example.app.cer
。这将在密钥链访问中将证书标记为受信任,并允许您访问本地站点,就好像它是用有效的证书签名的一样


tl;dr将从“流浪者/宅地”框中获取的站点证书添加到密钥链中,运行命令并仅使用https连接

前面的答案并不完全正确。macOS High Sierra能够通过Keychain Access应用程序信任证书,因此无需CLI

步骤:

  • 打开密钥链访问应用程序并查找您的证书
  • 文件->获取信息
  • 打开信息窗口内的信任菜单(注意信任一词左侧的三角形)
  • 将使用此证书时设置为“始终信任”

  • 完成。

    FYI,这将影响最新版本的Google Chrome。他们也不可能从浏览器中删除添加异常的功能。实际上,Chrome似乎仍然包含此功能,但从版本63-12/7/2018()起,不适用于.dev域()。在我的本地环境中,当我在这上面清除杂草时,我发现当访问.dev站点时,不再有“无论如何访问站点…”选项,但当我将其更改为.localhost时,有一个…很高兴知道。看起来默认宅地
    .app
    现在也无效。我以后会使用
    .localhost
    。哼。。。无法确定测试,但看起来他们在最近的更新(至少10.13.5-beta版)中添加了将证书标记为可信的功能。正如我在之前的回答中所述,它在High Sierra 10.13.2 Beta中不起作用。请注意,如果您在虚拟机中使用生成的自签名证书,则需要将生成的证书文件复制到您的计算机,然后在Keychain Access中打开它,然后单击它,然后执行获取信息/信任设置。完成后,页面将毫无例外地加载。