SSL 站點未在 Apache 和 Ubuntu 中使用正確的 IP
我正在嘗試設置一個 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 #<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 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 </VirtualHost> <IfModule mod_ssl.c> #<VirtualHost 2.2.2.2:443> <VirtualHost *:443> 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 <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。
我通過如下調整 /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