Apache 如何使用MAMP为本地主机和虚拟主机设置SSL?
我创建这个“问题”是为了记录我是如何在本地设置SSL的,以防将来需要再次这样做。我想我会把它记录在这里,希望这也能对其他人有所帮助,因为这是一个棘手的过程 我正在用High Sierra、MAMP V4.2.1和Chrome V71开发Mac 好的,让我们开始。1)为本地主机创建SSL证书 为了能够将HTTPS与Apache 如何使用MAMP为本地主机和虚拟主机设置SSL?,apache,ssl,mamp,Apache,Ssl,Mamp,我创建这个“问题”是为了记录我是如何在本地设置SSL的,以防将来需要再次这样做。我想我会把它记录在这里,希望这也能对其他人有所帮助,因为这是一个棘手的过程 我正在用High Sierra、MAMP V4.2.1和Chrome V71开发Mac 好的,让我们开始。1)为本地主机创建SSL证书 为了能够将HTTPS与本地主机一起使用,我们实际上需要两个证书:一个根证书,一个专门为本地主机域创建的域证书 我发现要注意两者的创建。它们非常容易使用,只需严格按照说明操作,您就可以轻松使用。文档中唯一不太清
本地主机
一起使用,我们实际上需要两个证书:一个根证书,一个专门为本地主机
域创建的域证书
我发现要注意两者的创建。它们非常容易使用,只需严格按照说明操作,您就可以轻松使用。文档中唯一不太清楚的是,如果它说然后将证书标记为受信任的
,这意味着您必须在Keychain Access中单击证书,并将信任
选项更改为始终
(您可以找到关于这些脚本实际作用的更详细的解释)
如果一切正常,您现在应该有两个文件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
Listen 443
127.0.0.1 myproject.dev
并确保端口设置为443。443是HTTPS安全连接的默认端口(常规的、不安全的HTTP连接默认侦听端口80)
接下来,打开/Applications/MAMP/conf/apache/extra/httpd ssl.conf
,确保您有以下行:
Servername localhost:443
Listen 443
127.0.0.1 myproject.dev
同样,这很重要,因为我们必须在同一个端口上设置所有内容。为此,您还应该单击MAC dock中的MAMP图标,点击首选项
,转到端口
选项卡,然后选择将Web和MySql端口设置为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
当您向下滚动一点时,我们仍然处于默认的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
配置一个虚拟主机。让我们从创建证书开始
同样,我发现了名为createsslcertificate
,它将为您生成特定本地域的ssl证书。这也很容易使用,唯一不太清楚的是它是一个NPM包,您可以使用NPM-g install create ssl certificate
全局安装
如果createsslcertificate
一切顺利,您现在应该有两个文件,就像步骤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
,并取消注释这一行:
Servername localhost:443
Listen 443
127.0.0.1 myproject.dev
Include/Applications/MAMP/conf/apache/extra/httpd vhosts.conf
5) 为SSL配置本地域的虚拟主机
现在我们可以设置一个虚拟主机,以便在https://myproject.dev
。首先,编辑您的hosts
文件并添加以下行:
Servername localhost:443
Listen 443
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>
ServerName myproject.dev
DocumentRoot“/Users/myusername/Sites/myproject”
斯伦金安
SSLCertificateFile“/Users/myusername/Sites/myproject/ssl/server.crt”
SSLCertificateKeyFile“/Users/myusername/Sites/myproject/ssl/server.key”
通过此配置,您将能够访问https://myproject.dev
因为服务器被指示搜索我们在步骤4中创建的SSL证书 1)为本地主机创建SSL证书
为了能够将HTTPS与localhost
一起使用,我们实际上需要两个证书: