如何通过MAMP为本地主机和虚拟主机设置SSL?

时间:2019-01-17 15:40:22

标签: apache ssl mamp

我正在创建此“问题”,以记录如何在本地设置SSL,以防将来再次需要这样做。以为我在这里记录了它,希望对其他人也有帮助,因为这是一个棘手的过程。

我正在使用High Sierra,MAMP v 4.2.1和Chrome v 71的Mac

好的,让我们开始吧。

1 个答案:

答案 0 :(得分:1)

1)为本地主机创建SSL证书

要能够与localhost一起使用HTTPS,我们实际上需要两个证书:根证书和专门为{{1 }}域。

These nifty scripts我发现要同时创建两者。它们非常易于使用-只需严格按照说明进行操作,就可以了。文档中唯一不清楚的是它的localhost位置,这意味着您必须在“钥匙串访问”中单击证书,并将Then mark the certificate as trusted选项更改为Trust

({Here,您可以找到有关这些脚本实际作用的更详尽的解释)

如果一切正常,那么您现在应该拥有两个文件Alwaysserver.crt。我在server.key中创建了一个ssl文件夹,并将其中的文件移动了;但是您可以将它们放在您认为最佳的位置。

让我们现在忘记文件,继续进行一些Apache配置。

2)将MAMP的Apache配置为接受SSL

默认情况下,Apache未配置为接受SSL连接,因此我们必须对其进行更改。打开/Applications/MAMP,并确保以下行未被注释掉。如果是这样,请删除该行开头的/Applications/MAMP/conf/apache/httpd.conf

#

此外,请查找以下行:

LoadModule ssl_module modules/mod_ssl.so 

Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf

,并确保将端口设置为443。443是HTTPS安全连接的默认端口(默认情况下,常规的不安全HTTP连接侦听端口80)。

下一步,打开Servername localhost:443 并确保您具有以下行:

/Applications/MAMP/conf/apache/extra/httpd-ssl.conf

同样,这很重要,因为我们必须在同一端口上设置所有内容。为此,您还应该单击MAC扩展坞中的MAMP图标,点击Listen 443 ,转到Preferences标签,然后选择Ports

停止并重新启动MAMP以应用我们到目前为止所做的更改。

3)为SSL配置默认的虚拟主机

虽然仍位于Set Web & MySql ports to 80 & 3306中,请查找以下几行:

/Applications/MAMP/conf/apache/httpd.conf

这些行为所有HTTPS连接设置Apache的默认行为。 <VirtualHost _default_:443> # General setup for the virtual host DocumentRoot "/Applications/MAMP/Library/htdocs" ServerName www.example.com:443 只是一个虚拟名称,您应将其替换为ServerName;您还应确保默认的localhost与项目的根文件夹匹配。

因此,如下更改上述几行:

DocumentRoot

当您进一步向下滚动时,虽然我们仍在默认的<VirtualHost _default_:443> # General setup for the virtual host DocumentRoot "/path/to/your/htdocs" ServerName localhost 指令中,但您会发现这两行:

VirtualHost

将它们更改为将我们在第1步中生成的文件放置到的任何位置。就像我之前说过的,我将我的文件放置在“ / Applications / MAMP / ssl”中,因此我更改了 以上行到:

SSLCertificateFile "/Applications/MAMP/conf/apache/server.crt"

SSLCertificateKeyFile "/Applications/MAMP/conf/apache/server.key"

停止并重新启动MAMP以应用更改。现在,如果您转到SSLCertificateFile "/Applications/MAMP/ssl/server.crt" SSLCertificateKeyFile "/Applications/MAMP/ssl/server.key" ,则应该可以在根文件夹中看到项目列表。 https://localhost就是这样!

4)为自定义本地域创建SSL证书

如果您想创建自定义域localhost并也使用SSL,以便可以在myproject.dev上访问该怎么办?

与为https://myproject.dev所做的非常相似,我们需要为localhost域专门创建一个SSL证书,然后为myproject.dev配置一个虚拟主机。让我们从创建证书开始。

同样,我发现名为myproject.dev的{​​{3}}会为您生成特定本地域的SSL证书。这也非常易于使用,唯一不清楚的部分是它是一个NPM软件包,可以使用create-ssl-certificate在全局安装。

如果npm -g install create-ssl-certificate一切正常,则现在应该有两个文件,就像在步骤1中使用create-ssl-certificate一样。默认情况下,localhost调用生成的文件{{1 }}和create-ssl-certificate。我将它们重命名为ssl.crtssl.key以与server.crt文件保持一致。然后,我在server.key根文件夹中创建了一个localhost文件夹,并将文件移到其中。

让我们暂时忘记文件,然后继续进行一些Apache配置。

4)将MAMP的Apache配置为接受虚拟主机

如果您之前已经创建了虚拟主机,则可能已经完成了此操作,因此可以跳过此步骤。

要“激活”创建虚拟主机的可能性,我们唯一要做的就是转到ssl并取消注释以下行:

myproject

5)为SSL配置本地域的虚拟主机

现在我们可以设置虚拟主机,以便我们可以在/Applications/MAMP/conf/apache/httpd.conf上访问Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf。首先,编辑您的myproject文件并添加以下行:

https://myproject.dev

然后,转到hosts并添加以下内容:

127.0.0.1   myproject.dev

使用此配置,因为指示服务器搜索我们在步骤4中创建的SSL证书,您将能够访问/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf