我使用强制 SSL 运行大多数生产站点,包括 CSS-Tricks。 但在本地,我一直避免让 SSL 正常工作。 我总是避免它,也许是因为它并不立即清楚如何做到这一点。 这也不是什么大不了的事,因为这只是本地流量。 但是,嘿,不妨让本地工作尽可能接近生产环境,对吧?
我遇到过一些情况,这些情况实际上非常重要,并且会影响开发。 比如一个本地的 PHP 函数在 HTTPS 上的行为与 HTTP 不同。 更常见的情况是,我在本地使用 HTTP,而一个资产是通过 HTTPS 加载的,因此失败了(需要手动批准不安全证书)。
1) 通过 MAMP 本地签署 SSL 证书
我经常对 MAMP 感到沮丧,但它在这么多年后仍然为我服务。 也许有一天我会迁移到 Docker 之类的东西。 但作为对 MAMP 的又一个小小的证明,它让 SSL 变得相当容易开启。 点击 SSL 选项卡并选中 SSL 复选框,然后生成一个自签名证书

请注意,这里有两个关于我的域名 `css-tricks.dev` 的条目。 这是因为一个是 SSL,另一个不是。 如果你想通过HTTP和HTTPS在这两个域名上提供内容,你就必须在 MAMP 中这样做。
现在,该站点将通过 HTTP 提供服务,但你会看到这个经典之美

没有浏览器是它的粉丝

你通常可以点击它,承认所涉及的风险(本地没有真正的风险),但你仍然会看到讨厌的不安全警告

通过钥匙串信任本地证书
信任本地证书的诀窍是在系统级别通过钥匙串访问程序来实现。
当你通过 MAMP 创建本地证书时,系统会提示你将其保存到某个地方。 无论你将它保存到哪里,找到它,并将证书拖到钥匙串中。

如果你不记得证书在哪里,因为你是在 100 年前创建的,你可以让 Chrome 给你一份副本。
- 点击 URL 栏中的红色警告感叹号
- 点击 SSL 警告区域中的“查看详细信息”
- 它将显示一个证书信息下拉菜单,如下所示

从那里,你可以点击并拖动证书图标到你想保存副本的任何位置。 然后将其拖到钥匙串访问中。
然后双击钥匙串访问中的证书,并展开“信任”区域。 你可以将“使用此证书时”选项调整为“始终信任”。

3) 拥有快乐的本地可信 SSL

你尝试过使用 Vagrant 作为你的本地 Web 服务器吗? 这样,你就可以尽可能接近生产环境。 它还允许你为每个站点创建不同的 VM,这样你就不会局限于你的 MAMP 堆栈的配置来开发所有站点。
如果你做了很多 WordPress 开发,Vagrant 和 VVV 真的很有用。
忽略它是 Mac 的事实,在一个单独的盒子(或 VM)上运行它,并使用 rsync 保持实时 SSL。
这确实增加了黑客能够 MITM 的风险,如果你被入侵,所以使用密钥文件通过 ssh 传输(加密所有连接)
很棒的小贴士。 我想我的工作环境和你一样,这也是我遇到的问题,不是真正的错误,而是缺乏尝试的耐心,但现在随着所有内容都迁移到 https,我也应该进行更新。 我想知道 Codekit 本地开发是否也适用于 https 上的站点,我会试试的 :)
喜欢 Chris 的小贴士。 有时候我会在本地机器上工作(为了方便起见使用 mamp),感觉速度稍微快一点。 考虑到 Google 过去“鼓励”将所有内容切换到 SLL,这无疑让我的生活更简单,因为我在将某些站点迁移到 SSL。 继续分享吧;)
太棒了! 我之前一直在寻找这个,但和其他人一样,在无果的搜索之后放弃了……
对于任何使用子域名多站点的人来说 - MAMP 在启用 SSL 时会禁用别名,因为你需要为每个子域名提供单独的证书。 因此,你需要将每个子域名作为单独的主机条目设置(包括子域名)。
Chris 的小技巧很不错,感谢分享。
在 Mac 上从 Chrome 复制/拖动证书并在钥匙串中信任它时,你可以删除复制的证书文件。 因此,当你从 Chrome 中拖动证书时,不需要将其放置在长期存储位置。 除非你真的想这么做。
Chrome 复制技巧在虚拟环境中也很有效,在这些环境中无法从主机访问证书。
你也可以通过命令行将它添加到你的钥匙串程序中
对于重复使用非常有效。
如果你在 Mac 上运行,你应该查看 Valet (https://laravel.net.cn/docs/5.3/valet),来自 Laravel,但它支持大量不同的 CMS/框架,无需任何麻烦即可让 SSL 正常工作,就像键入
valet secure
一样简单,我刚出来的时候就放弃了 MAMP。Rasso Hilber 写信说
Geoff 最近写了一些关于 SSL 证书的内容