我创建这个“问题”是为了记录我如何在本地设置 SSL,以防我将来需要再次执行此操作。我想我会在这里记录下来,希望这对其他人也有帮助,因为这是一个棘手的过程。
我正在使用 High Sierra、MAMP v 4.2.1 和 Chrome v 71 的 Mac
好吧,让我们滚吧。
为了能够使用 HTTPS,localhost我们实际上需要两个证书:根证书和专门为域创建的域证书localhost。
我发现这些漂亮的脚本可以创建这两者。它们非常易于使用\xe2\x80\x94,只需严格按照说明进行操作即可。文档中唯一不太清楚的是,它说Then mark the certificate as trusted,这意味着您必须单击“钥匙串访问”中的证书并将Trust\xc2\xa0 选项更改为Always。
(在这里您可以找到这些脚本实际用途的更详细解释)
\n\n如果一切顺利,您现在应该有两个文件server.crt和server.key. 我在其中创建了一个ssl文件夹/Applications/MAMP并将文件移动到其中;但您可以将它们放在您认为最好的地方。
现在让我们忘记这些文件并继续进行一些 Apache 配置。
\n\n默认情况下,Apache 未配置为接受 SSL 连接,因此我们必须更改它。打开/Applications/MAMP/conf/apache/httpd.conf并确保以下行未被注释掉。如果是,请删除#行开头的:
LoadModule ssl_module modules/mod_ssl.so \n\nInclude /Applications/MAMP/conf/apache/extra/httpd-ssl.conf\nRun Code Online (Sandbox Code Playgroud)\n\n另外,寻找这一行:
\n\nServername localhost:443\nRun Code Online (Sandbox Code Playgroud)\n\n并确保端口设置为 443。443 是 HTTPS 安全连接的默认端口(常规、不安全的 HTTP 连接默认侦听端口 80)。
\n\n接下来,打开/Applications/MAMP/conf/apache/extra/httpd-ssl.conf并确保有以下行:
Listen 443\nRun Code Online (Sandbox Code Playgroud)\n\n同样,这很重要,因为我们必须在同一端口上设置所有内容。为此,您还应该单击 MAC 扩展坞中的 MAMP 图标,点击Preferences,转到Ports选项卡并选择Set Web & MySql ports to 80 & 3306。
停止并重新启动 MAMP 以应用我们迄今为止所做的更改。
\n\n仍在 中/Applications/MAMP/conf/apache/httpd.conf,查找这些行:
<VirtualHost _default_:443>\n\n# General setup for the virtual host\nDocumentRoot "/Applications/MAMP/Library/htdocs"\nServerName www.example.com:443\nRun Code Online (Sandbox Code Playgroud)\n\n这些行设置 Apache 对于所有 HTTPS 连接的默认行为。这ServerName只是一个虚拟名称,您应该将其替换为localhost; 您还应该确保默认值DocumentRoot与您的项目根文件夹匹配。
因此,将上面的行更改如下:
\n\n<VirtualHost _default_:443>\n\n# General setup for the virtual host\nDocumentRoot "/path/to/your/htdocs" \nServerName localhost\nRun Code Online (Sandbox Code Playgroud)\n\n当您进一步向下滚动时,虽然我们仍处于默认VirtualHost指令中,但您会发现这两行:
SSLCertificateFile "/Applications/MAMP/conf/apache/server.crt"\n\nSSLCertificateKeyFile "/Applications/MAMP/conf/apache/server.key"\nRun Code Online (Sandbox Code Playgroud)\n\n将这些更改为放置我们在步骤 1 中生成的文件的位置。就像我之前所说,我已将我的文件放在“/Applications/MAMP/ssl”中,因此我已将上面的行更改为:
\n\nSSLCertificateFile "/Applications/MAMP/ssl/server.crt"\n\nSSLCertificateKeyFile "/Applications/MAMP/ssl/server.key"\nRun Code Online (Sandbox Code Playgroud)\n\n停止并重新启动 MAMP 以应用更改。现在,如果您访问,https://localhost您应该能够看到根文件夹中的项目列表。就是这样localhost!
如果您想创建一个自定义域myproject.dev并为此使用 SSL,以便您可以通过 访问它,该怎么办https://myproject.dev?
与我们所做的非常相似localhost,我们需要专门为该myproject.dev域创建一个 SSL 证书,然后为myproject.dev. 让我们从创建证书开始。
再次,我发现了这个名为 的小工具create-ssl-certificate,它将为您生成特定本地域的 SSL 证书。这也非常容易使用,唯一不太清楚的部分是它是一个 NPM 包,您可以使用npm -g install create-ssl-certificate.
如果 一切顺利create-ssl-certificate,您现在应该有两个文件,就像步骤 1 中一样。localhost默认情况下,create-ssl-certificate调用生成的文件ssl.crt和ssl.key。我已将它们重命名为server.crt并server.key与 \xc2\xa0 文件保持一致localhost。ssl然后我在根文件夹中创建了一个文件夹myproject,并将文件移到其中。
让我们暂时忘记这些文件并继续进行一些 Apache 配置。
\n\n如果您之前创建过虚拟主机,那么您可能已经完成了此操作,因此可以跳过此步骤。
\n\n要“激活”创建虚拟主机的可能性,我们唯一需要做的就是转到/Applications/MAMP/conf/apache/httpd.conf并取消注释此行:
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
现在我们可以设置一个虚拟主机,以便我们可以访问myproject\xc2\xa0at https://myproject.dev。首先,编辑hosts\xc2\xa0 文件并添加以下行:
127.0.0.1 myproject.dev\nRun Code Online (Sandbox Code Playgroud)\n\n然后,转到/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf并添加以下内容:
<VirtualHost myproject.dev:443>\n ServerName myproject.dev\n DocumentRoot "/Users/myusername/Sites/myproject"\n SSLEngine on\n SSLCertificateFile "/Users/myusername/Sites/myproject/ssl/server.crt"\n SSLCertificateKeyFile "/Users/myusername/Sites/myproject/ssl/server.key" \n</VirtualHost>\nRun Code Online (Sandbox Code Playgroud)\n\n通过此配置,您将能够访问https://myproject.dev\xc2\xa0,因为服务器被指示搜索我们在步骤 4 中创建的 SSL 证书。
| 归档时间: |
|
| 查看次数: |
10874 次 |
| 最近记录: |