OS X Mavericks 上支持 SSL 的虚拟主机

Posted

技术标签:

【中文标题】OS X Mavericks 上支持 SSL 的虚拟主机【英文标题】:Virtual Host With SSL Support on OS X Mavericks 【发布时间】:2013-11-19 14:06:46 【问题描述】:

我在 OS X 10.9(Mavericks)上运行 Apache/2.2.24 的本地开发机器上设置了一些虚拟主机。

我的 http-vhosts.conf 文件(配置为通过 httpd.conf 加载的文件如下所示:

NameVirtualHost *:80

<VirtualHost *:80>
   DocumentRoot "/Library/WebServer/Documents"
   ServerName localhost
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot "/Users/me/Sites/testsite.com
   ServerName testsite.dev
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot "/Users/me/Sites/testsite2.com
   ServerName testsite2.dev
</VirtualHost>

我还配置了我的 /etc/vhosts 文件以包含这一行:

127.0.0.1       testsite2.dev

我希望能够通过 SSL (https) 使用 testsite2.dev。我已经尝试了多个 vhosts 配置文件的配置,但没有成功。

在当前配置下,转到http://testsite2.dev 会拉出我期望的页面,而https://testsite2.dev 则指向位于/Library/WebServer/Documents/index.html.en 的apache 主页

我尝试了以下配置以及其他多种配置,但均无效:

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
   DocumentRoot "/Library/WebServer/Documents"
   ServerName localhost
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot "/Users/me/Sites/testsite.com
   ServerName testsite.dev
</VirtualHost>

<VirtualHost *:80 *:443>
   DocumentRoot "/Users/me/Sites/testsite2.com
   ServerName testsite2.dev
</VirtualHost>

是否可以让虚拟主机监听本地机器上的 80 和 443 端口?

【问题讨论】:

通常情况下,您不会将 NameVirtualHost 用于 SSL,而是将每个服务器放在不同的 IP# 上,例如 &lt;VirtualHost 127.0.0.1:443&gt;&lt;VirtualHost 127.0.0.2:443&gt; 等。 【参考方案1】:

我想出了如何做到这一点。我只是缺少一些指令来显示我的证书和密钥的位置。这是我添加的内容:

<VirtualHost *:443>
   SSLEngine on
   SSLCertificateFile /private/etc/apache2/ssl/server.crt
   SSLCertificateKeyFile /private/etc/apache2/ssl/server.key
   DocumentRoot "/Users/me/Sites/testsite2.com"
   ServerName testsite2.dev
</VirtualHost>

在上下文中显示,我的 http-vhosts.conf 文件如下所示:

Listen  *:443
NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
   DocumentRoot "/Library/WebServer/Documents"
   ServerName localhost
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot "/Users/me/Sites/testsite.com
   ServerName testsite.dev
</VirtualHost>

<VirtualHost *:443>
   SSLEngine on
   SSLCertificateFile /private/etc/apache2/ssl/server.crt
   SSLCertificateKeyFile /private/etc/apache2/ssl/server.key
   DocumentRoot "/Users/me/Sites/testsite2.com"
   ServerName testsite2.dev
</VirtualHost>

如果您没有安装证书和密钥,您可以按照如下教程创建自己的:

http://www.cfdad.com/2012/12/12/creating-a-self-signed-ssl-cert-for-mac-osx-mountain-lion-apache/

它应该适用于 Mountain Lion 和 Mavericks。

【讨论】:

感谢分享。我猜你也可以启用 httpd-ssl.conf,但是对于一个简单的开发设置,这很好地配置在一个文件中。 谢谢,这对我帮助很大! 帮助了我。非常感谢! 我的 httpd.conf 中也缺少Listen 443

以上是关于OS X Mavericks 上支持 SSL 的虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章

Aspell 不会在 OS X 10.9 (Mavericks) 上构建

转OS X Mavericks: 防止 Mac 进入睡眠 -- 不错

OS X Mavericks 上 gtest 的链接器错误

使 PHP 的 mail() 函数在 OS X Mavericks 上工作的分步指南

在 OS X Mavericks 10.9 上安装 apache 2.4

如何在 OS X 10.9 (Mavericks) 上使用 GDB 而不是 LLDB 调试 ELF 文件?