如何使用MAMP为本地主机和虚拟主机设置SSL? [英] How to set up SSL for localhost and virtual hosts with MAMP?

查看:16
本文介绍了如何使用MAMP为本地主机和虚拟主机设置SSL?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我在Mac上使用High Sierra、MamP v 4.2.1和Chrome v 71

好了,我们走吧。

推荐答案

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

为了能够对localhost使用HTTPS,我们实际上需要两个证书:根证书和专门为localhost域创建的域证书

These nifty scripts我发现创建两者都要注意。它们非常容易使用--只需严格按照说明操作,就可以使用了。文档中唯一不太清楚的是,它显示Then mark the certificate as trusted,这意味着您必须在Keychain Access中单击证书,并将Trust选项更改为Always

(Here您可以找到有关这些脚本实际作用的更详细说明)

如果一切正常,您现在应该有两个文件server.crtserver.key。我已在/Applications/MAMP中创建了一个ssl文件夹并移动了其中的文件;但您可以将它们放在您认为最合适的任何位置。

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

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

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

LoadModule ssl_module modules/mod_ssl.so 

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

另外,查找此行:

Servername  localhost:443

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

接下来,打开/Applications/MAMP/conf/apache/extra/httpd-ssl.conf并确保显示以下行:

Listen 443
同样,这一点很重要,因为我们必须在同一端口上设置所有内容。为此,您还应该单击Mac底座中的MAMP图标,点击Preferences,转到Ports选项卡并选择Set Web & MySql ports to 80 & 3306

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

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

/Applications/MAMP/conf/apache/httpd.conf中,查找以下行:

<VirtualHost _default_:443>

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

因此将以上几行更改如下:

<VirtualHost _default_:443>

#   General setup for the virtual host
DocumentRoot "/path/to/your/htdocs" 
ServerName localhost

当您进一步向下滚动时,当我们仍然在默认的VirtualHost指令中时,您会发现这两行:

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

SSLCertificateKeyFile "/Applications/MAMP/conf/apache/server.key"
将这些更改为您放置我们在步骤1中生成的文件的位置。如前所述,我已将我的文件放在"/Applications/Mamp/ssl"中,因此我更改了 以上行收件人:

SSLCertificateFile "/Applications/MAMP/ssl/server.crt"

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

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

如果您想要创建自定义域myproject.dev并对其使用SSL,以便您可以在https://myproject.dev访问它,该怎么办?

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

同样,我找到了名为create-ssl-certificatethis little tool,它将为您生成特定本地域的SSL证书。这也非常容易使用,唯一不太清楚的部分是它是一个NPM包,您可以使用npm -g install create-ssl-certificate全局安装。

如果create-ssl-certificate一切顺利,您现在应该有两个文件,就像步骤1中的localhost一样。默认情况下,create-ssl-certificate调用生成的文件ssl.crtssl.key。我已将它们重命名为server.crtserver.key,以与localhost文件一致。然后,我在myproject根文件夹中创建了一个ssl文件夹,并将文件移到其中。

让我们暂时忘掉这些文件,继续进行一些Apache配置。

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

如果您以前创建过虚拟主机,您可能已经创建过,所以可以跳过此步骤。

要"激活"创建虚拟主机的可能性,我们唯一需要做的就是转到/Applications/MAMP/conf/apache/httpd.conf并取消注释该行:

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

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

现在,我们可以设置虚拟主机,以便访问位于https://myproject.devmyproject。首先,编辑您的hosts文件并添加以下行:

127.0.0.1   myproject.dev

然后,转到/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf并添加以下内容:

<VirtualHost myproject.dev:443>
    ServerName myproject.dev
    DocumentRoot "/Users/myusername/Sites/myproject"
    SSLEngine on
    SSLCertificateFile "/Users/myusername/Sites/myproject/ssl/server.crt"
    SSLCertificateKeyFile "/Users/myusername/Sites/myproject/ssl/server.key"        
</VirtualHost>

使用此配置,您将能够访问https://myproject.dev,因为会指示服务器搜索我们在步骤4中创建的SSL证书。

这篇关于如何使用MAMP为本地主机和虚拟主机设置SSL?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆