我正在创建此“问题”,以记录如何在本地设置SSL,以防将来再次需要这样做。以为我在这里记录了它,希望对其他人也有帮助,因为这是一个棘手的过程。
我正在使用High Sierra,MAMP v 4.2.1和Chrome v 71的Mac
好的,让我们开始吧。
答案 0 :(得分:1)
要能够与localhost
一起使用HTTPS,我们实际上需要两个证书:根证书和专门为{{1 }}域。
These nifty scripts我发现要同时创建两者。它们非常易于使用-只需严格按照说明进行操作,就可以了。文档中唯一不清楚的是它的localhost
位置,这意味着您必须在“钥匙串访问”中单击证书,并将Then mark the certificate as trusted
选项更改为Trust
。
({Here,您可以找到有关这些脚本实际作用的更详尽的解释)
如果一切正常,那么您现在应该拥有两个文件Always
和server.crt
。我在server.key
中创建了一个ssl
文件夹,并将其中的文件移动了;但是您可以将它们放在您认为最佳的位置。
让我们现在忘记文件,继续进行一些Apache配置。
默认情况下,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以应用我们到目前为止所做的更改。
虽然仍位于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
就是这样!
如果您想创建自定义域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.crt
和ssl.key
以与server.crt
文件保持一致。然后,我在server.key
根文件夹中创建了一个localhost
文件夹,并将文件移到其中。
让我们暂时忘记文件,然后继续进行一些Apache配置。
如果您之前已经创建了虚拟主机,则可能已经完成了此操作,因此可以跳过此步骤。
要“激活”创建虚拟主机的可能性,我们唯一要做的就是转到ssl
并取消注释以下行:
myproject
现在我们可以设置虚拟主机,以便我们可以在/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
。