Apache 如何使用MAMP为本地主机和虚拟主机设置SSL?

Apache 如何使用MAMP为本地主机和虚拟主机设置SSL?,apache,ssl,mamp,Apache,Ssl,Mamp,我创建这个“问题”是为了记录我是如何在本地设置SSL的,以防将来需要再次这样做。我想我会把它记录在这里,希望这也能对其他人有所帮助,因为这是一个棘手的过程 我正在用High Sierra、MAMP V4.2.1和Chrome V71开发Mac 好的,让我们开始。1)为本地主机创建SSL证书 为了能够将HTTPS与本地主机一起使用,我们实际上需要两个证书:一个根证书,一个专门为本地主机域创建的域证书 我发现要注意两者的创建。它们非常容易使用,只需严格按照说明操作,您就可以轻松使用。文档中唯一不太清

我创建这个“问题”是为了记录我是如何在本地设置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
一起使用,我们实际上需要两个证书: