代码之家  ›  专栏  ›  技术社区  ›  grazdev

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

  •  0
  • grazdev  · 技术社区  · 7 年前

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

    我正在用High Sierra、MAMP V4.2.1和Chrome V71开发Mac

    好了,我们开始吧。

    1 回复  |  直到 7 年前
        1
  •  3
  •   grazdev    7 年前

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

    能够将HTTPS与 localhost 我们实际上需要两个证书:a 根证书 ,以及 域证书 专门为 本地服务器 领域

    These nifty scripts 我发现要注意创造两者。它们很容易使用,只要严格按照说明操作,你就可以很好地使用了。文件中唯一不太清楚的是 Then mark the certificate as trusted ,这意味着您必须单击Keychain Access中的证书并更改 Trust 选择 Always .

    ( Here 你可以找到关于这些脚本实际作用的更详细的解释)

    如果一切都对你有用,你现在应该有两个文件 server.crt server.key .我创造了一个 ssl 文件夹 /Applications/MAMP 并移动了里面的文件;但你可以把它们放在你认为最好的地方。

    现在让我们忘掉这些文件,继续进行一些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。形态 ,看看下面这些句子:

    <VirtualHost _default_:443>
    
    #   General setup for the virtual host
    DocumentRoot "/Applications/MAMP/Library/htdocs"
    ServerName www.example.com:443
    

    这些行设置了所有HTTPS连接的Apache默认行为。这个 ServerName 只是一个虚名,你应该用 本地服务器 ; 您还应该确保默认 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 您应该能够看到根文件夹中的项目列表。就这样 本地服务器 !

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

    如果你想创建一个自定义域呢 myproject.dev 也可以使用SSL,这样您就可以在 https://myproject.dev ?

    就像我们为之所做的一样 本地服务器 ,我们需要专门为 我的项目。德夫 域,然后为配置虚拟主机 我的项目。德夫 .让我们从创建证书开始。

    再一次,我发现 this little tool 打电话 create-ssl-certificate 这将为您生成特定本地域的SSL证书。这也是非常容易使用的,唯一不那么清楚的部分是,它是一个NPM包,您可以使用它在全球范围内安装 npm -g install create-ssl-certificate .

    如果一切顺利 创建ssl证书 ,您现在应该有两个文件,就像 本地服务器 在第一步。默认情况下, 创建ssl证书 调用生成的文件 ssl.crt ssl.key .我把它们改名为 服务器阴极射线管 服务器钥匙 符合 本地服务器 文件。然后我创造了一个 ssl 文件夹中的 myproject 根文件夹,并将文件移到其中。

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

    4) 配置MAMP的Apache以接受虚拟主机

    如果您以前创建过虚拟主机,那么您可能已经这样做了,因此可以跳过这一步。

    要“激活”创建虚拟主机的可能性,我们只需转到 /Applications/MAMP/conf/apache/httpd。形态 并取消对这行的注释:

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

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

    现在我们可以设置一个虚拟主机,以便访问 我的项目 至少 https://myproject.dev .首先,编辑你的 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证书。

    推荐文章