如何使用MAMP为本地主机和虚拟主机设置SSL? [英] How to set up SSL for localhost and virtual hosts with MAMP?
问题描述
我在Mac上使用High Sierra、MamP v 4.2.1和Chrome v 71
好了,我们走吧。
推荐答案
1)为本地主机创建SSL证书
为了能够对localhost
使用HTTPS,我们实际上需要两个证书:根证书和专门为localhost
域创建的域证书。
Then mark the certificate as trusted
,这意味着您必须在Keychain Access中单击证书,并将Trust
选项更改为Always
。
(Here您可以找到有关这些脚本实际作用的更详细说明)
如果一切正常,您现在应该有两个文件server.crt
和server.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-certificate
的this little tool,它将为您生成特定本地域的SSL证书。这也非常容易使用,唯一不太清楚的部分是它是一个NPM包,您可以使用npm -g install create-ssl-certificate
全局安装。
如果create-ssl-certificate
一切顺利,您现在应该有两个文件,就像步骤1中的localhost
一样。默认情况下,create-ssl-certificate
调用生成的文件ssl.crt
和ssl.key
。我已将它们重命名为server.crt
和server.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.dev
的myproject
。首先,编辑您的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屋!