在Mac OS X 10.6上运行多个SSL证书

我已经跑了一段时间的墙壁,所以我张贴在stackoverflow,我被指出在这里…

我正在尝试在Snow Leopard上设置多个IP地址,以便我可以使用SSL证书进行开发。 我正在运行XAMPP – 我不知道是否是这个问题,但我想我会遇到同样的问题,考虑到内置的Apache被closures。

所以首先,我开始研究启动IP。 我启动了一个运行正确的新的StartupItem,因为我可以ping通ip地址:

ping 127.0.0.2 ping 127.0.0.1 

而且他们都工作。 所以现在我有IP地址,你可能知道在OSx上不是标准的。

我编辑了/etc/hosts文件以包含新的网站:

 127.0.0.1 site1.local 127.0.0.2 site2.local 

我已经改变了httpd.conf使用httpd-vhosts.conf – 因为我有一个IP地址上运行几个站点。

我已经编辑了vhosts文件,所以一个网站看起来像这样:

 <VirtualHost 127.0.0.1:80> DocumentRoot "/Users/jim/Documents/Projects/site1/web" ServerName site1.local <Directory "/Users/jim/Documents/Projects/site1"> Order deny,allow Deny from All Allow from 127.0.0.1 AllowOverride All </Directory> </VirtualHost> <VirtualHost 127.0.0.1:443> DocumentRoot "/Users/jim/Documents/Projects/site1/web" ServerName site1.local SSLEngine On SSLCertificateFile "/Applications/XAMPP/etc/ssl-certs/myssl.crt" SSLCertificateKeyFile "/Applications/XAMPP/etc/ssl-certs/myssl.key" SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown <Directory "/Users/jim/Documents/Projects/site1"> Order deny,allow Deny from All Allow from 127.0.0.1 AllowOverride All </Directory> </VirtualHost> 

在上面的代码中,您可以将1更改为2,这是第二个站点的设置。 他们使用相同的证书,这就是为什么他们在不同的IP地址。

我还在文件顶部包含了NameVirtualHost信息:

 NameVirtualHost 127.0.0.1:80 NameVirtualHost 127.0.0.2:80 NameVirtualHost 127.0.0.1:443 NameVirtualHost 127.0.0.2:443 

我可以ping site1.local和site2.local。 我可以使用telnet( telnet site2.local 80 )进入这两个站点。 但在Safari浏览器,我只能到达第一个site1.local – 导航到site2.local给我的localhost主页(这是包括在虚拟主机),或给我一个Access禁止!

我很喜欢做什么,任何build议将是真棒。

怎么听指令? 你应该Listen 127.0.0.1:443Listen 127.0.0.2:443而不是只有Listen *:443

需要做的一件事情是:只要包含此指令,就可以让多个虚拟主机在相同的IP地址上使用相同的证书:

NameVirtualHost 127.0.0.1:443

有关示例configuration文件,请参见http://wiki.apache.org/httpd/NameBasedSSLVHosts

我有相同的设置工作,除了我的NameVirtualHost,而不是:

 NameVirtualHost 127.0.0.1:80 NameVirtualHost 127.0.0.2:80 NameVirtualHost 127.0.0.1:443 NameVirtualHost 127.0.0.2:443 

我只有:

 NameVirtualHost *:80 

而我的ServerName在HTTPS虚拟主机包括端口:443,例如

 <VirtualHost 127.0.0.1:443> DocumentRoot "/Users/jim/Documents/Projects/site1/web" ServerName site1.local:443 ......... 

希望这可以帮助!