SSL 站点在 Apache 和 Ubuntu 中未使用正确的 IP

SSL 站点在 Apache 和 Ubuntu 中未使用正确的 IP

我正在尝试设置一个 apache-ubuntu-php 网络服务器。我的网络服务器将托管多个 SSL 站点,每个 SSL 站点都有自己的 IP 地址(除非有更好的方法来实现这一点)。

所以我认为第一步是让 apache 识别至少两个不同的 IP 地址。现在,我有一个网站的 SSL 版本和非 SSL 版本,它们是http://mysite.comhttps://mysite.com。虽然我的服务器上目前运行着两个,但我无法让它们使用不同的 IP 地址。目前,它们都使用 IP 1.1.1.1。我购买了第二个 IP 地址 2.2.2.2,但https://mysite.com不会接受它,并且 Firefox 会抱怨错误“ssl_error_rx_record_too_long”。以下是我的 2 个 vhost 文件

在 /etc/apache2/site-enabled/000-默认

#NameVirtualHost 1.1.1.1:80

#<VirtualHost 1.1.1.1:80>
<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

/etc/apache2/site-enabled/mysite.com

<VirtualHost 1.1.1.1:80>
     ServerAdmin [email protected]
     ServerName mysite.com
     ServerAlias www.mysite.com
     DocumentRoot /srv/www/mysite.com/public_html/
     ErrorLog /srv/www/mysite.com/logs/error.log
     CustomLog /srv/www/mysite.com/logs/access.log combined
</VirtualHost>
<IfModule mod_ssl.c>
#<VirtualHost 2.2.2.2:443>
<VirtualHost *:443>
     ServerAdmin [email protected]
     ServerName mysite.com
     ServerAlias www.mysite.com
     DocumentRoot /srv/www/mysite.com/public_html/
     ErrorLog /srv/www/mysite.com/logs/error.log
     CustomLog /srv/www/mysite.com/logs/access.log combined

        SSLEngine on

        SSLCertificateFile    /etc/ssl/localcerts/www.mysite.com.crt
        SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite.com.pem

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

        BrowserMatch ".*MSIE.*" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0

</VirtualHost>
</IfModule>

在 mysite.com 中,如果我将 <VirtualHost *:443> 替换为 <VirtualHost 2.2.2.2:443>,Firefox 会抱怨错误“ssl_error_rx_record_too_long”。

因此,当我尝试在第三个 IP 地址上使用另一个 SSL 证书创建并启用 /etc/apache2/site-enabled/mysite2.com 时,Apache 会抱怨“重叠”问题。

有人能告诉我如何启动我的服务器,以便我可以在不同的域上托管多个 SSL 网站吗?我希望 SSL 证书可以在 WinXP、Vista、Win7 和 OSX 等流行操作系统上为 IE 7+、FF 和 Safari 工作。

答案1

我通过调整 /etc/apache2/ports.conf 文件在我的服务器上进行了此项设置,如下所示:

<IfModule mod_ssl.c>
NameVirtualHost *:443
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    NameVirtualHost *:443
    Listen 443
</IfModule>

然后,您应该能够通过编辑 /etc/apache2/sites-enabled/mysite.com 来使用(省略了一些代码以缩短示例):

<VirtualHost *:443>
     ServerName mysite1.com
     SSLCertificateFile    /etc/ssl/localcerts/www.mysite1.com.crt
     SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite1.com.pem
</VirtualHost>

<VirtualHost *:443>
    ServerName mysite2.com
    SSLCertificateFile    /etc/ssl/localcerts/www.mysite2.com.crt
    SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite2.com.pem
</VirtualHost>

您可以根据需要设置任意数量的虚拟主机。

编辑:需要第二个意见吗?请点击这里:http://forum.slicehost.com/comments.php?DiscussionID=3244

答案2

我目前无法检查,所以这只是一个大胆的猜测:文件通常按字母顺序读取。当您以相反的顺序读取它们时,您可能会更幸运,例如将 000-default 重命名为 500-default 并使用 400-myhost。我不记得 apache 喜欢将默认主机放在哪里 - 第一个还是最后一个。但从你所说的(重叠)来看,它可能是最后一个

相关内容