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# 上,例如<VirtualHost 127.0.0.1:443>
、<VirtualHost 127.0.0.2:443>
等。
【参考方案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 进入睡眠 -- 不错
使 PHP 的 mail() 函数在 OS X Mavericks 上工作的分步指南