Apache-2.2

SSL 站點未在 Apache 和 Ubuntu 中使用正確的 IP

  • February 5, 2010

我正在嘗試設置一個 apache-ubuntu-php 網路伺服器。我的網路伺服器將託管多個 SSL 站點,每個 SSL 站點都有自己的 IP 地址(除非有更好的方法來做到這一點)。

所以我想第一步是讓 apache 辨識至少兩個不同的 IP 地址。現在,我有一個網站的 SSL 和非 SSL 版本,它們是http://mysite.com>和<https://mysite.com。雖然兩者目前都在我的伺服器上執行,但我無法讓兩者都使用不同的 IP 地址。現在,兩者都使用 IP 1.1.1.1。我購買了第二個 IP 地址 2.2.2.2,但https://mysite.com不接受它,並且 firefox 抱怨錯誤“ssl_error_rx_record_too_long”。這是我的 2 個虛擬主機文件

/etc/apache2/site-enabled/000-default

#NameVirtualHost 1.1.1.1:80

#&lt;VirtualHost 1.1.1.1:80&gt;
&lt;VirtualHost *:80&gt;
       ServerAdmin webmaster@localhost

       DocumentRoot /var/www
       &lt;Directory /&gt;
               Options FollowSymLinks
               AllowOverride None
       &lt;/Directory&gt;
       &lt;Directory /var/www/&gt;
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
       &lt;/Directory&gt;

       ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
       &lt;Directory "/usr/lib/cgi-bin"&gt;
               AllowOverride None
               Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
               Order allow,deny
               Allow from all
       &lt;/Directory&gt;

       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/"
   &lt;Directory "/usr/share/doc/"&gt;
       Options Indexes MultiViews FollowSymLinks
       AllowOverride None
       Order deny,allow
       Deny from all
       Allow from 127.0.0.0/255.0.0.0 ::1/128
   &lt;/Directory&gt;

&lt;/VirtualHost&gt;

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

&lt;VirtualHost 1.1.1.1:80&gt;
    ServerAdmin john@mysite.com
    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
&lt;/VirtualHost&gt;
&lt;IfModule mod_ssl.c&gt;
#&lt;VirtualHost 2.2.2.2:443&gt;
&lt;VirtualHost *:443&gt;
    ServerAdmin john@mysite.com
    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

       &lt;FilesMatch "\.(cgi|shtml|phtml|php)$"&gt;
               SSLOptions +StdEnvVars
       &lt;/FilesMatch&gt;
       &lt;Directory /usr/lib/cgi-bin&gt;
               SSLOptions +StdEnvVars
       &lt;/Directory&gt;

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

&lt;/VirtualHost&gt;
&lt;/IfModule&gt;

在 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。

我通過如下調整 /etc/apache2/ports.conf 文件在我的伺服器上設置了這個:

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

然後,您應該可以通過編輯 /etc/apache2/sites-enabled/mysite.com 來使用(省略了一些程式碼以縮短範例):

&lt;VirtualHost *:443&gt;
    ServerName mysite1.com
    SSLCertificateFile    /etc/ssl/localcerts/www.mysite1.com.crt
    SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite1.com.pem
&lt;/VirtualHost&gt;

&lt;VirtualHost *:443&gt;
   ServerName mysite2.com
   SSLCertificateFile    /etc/ssl/localcerts/www.mysite2.com.crt
   SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite2.com.pem
&lt;/VirtualHost&gt;

盡可能多的虛擬主機。

編輯:需要第二個意見嗎?去這裡: http: //forum.slicehost.com/comments.php? DiscussionID=3244

引用自:https://serverfault.com/questions/109766