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

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

我在这方面遇到了一些困难,因此我在 stackoverflow 上发布了帖子,然后有人指向了我这里...

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

因此,我首先研究了在启动时启动 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 主页(包含在 vhosts 中)或给我一个访问被禁止!。

我不知道该怎么做,任何建议都很好。

答案1

那么 listen 指令呢?你应该有Listen 127.0.0.1:443and ,Listen 127.0.0.2:443而不是 only Listen *:443

答案2

可以尝试一件事:只要包含此指令,您就可以让多个虚拟主机在同一个 IP 地址上使用同一个证书:

名称虚拟主机 127.0.0.1:443

http://wiki.apache.org/httpd/NameBasedSSLVHosts获取示例配置文件。

答案3

除了我的 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

并且我的 HTTPS 虚拟主机中的服务器名称包含端口:443,例如

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

希望这可以帮助!

相关内容