Trang web SSL không sử dụng đúng IP trong Apache và Ubuntu


10

Tôi đang cố gắng thiết lập một máy chủ web apache-ub Ubuntu-php. Máy chủ web của tôi sẽ lưu trữ nhiều trang SSL, mỗi trang SSL sẽ có địa chỉ IP riêng (trừ khi có cách tốt hơn để làm điều này).

Vì vậy, tôi cho rằng bước đầu tiên là để apache nhận ra ít nhất hai địa chỉ IP khác nhau. Ngay bây giờ, tôi có phiên bản SSL và không phải SSL của một trang web là http://mysite.comhttps://mysite.com . Mặc dù cả hai hiện đang chạy trên máy chủ của tôi, tôi không thể sử dụng cả hai địa chỉ IP khác nhau. Ngay bây giờ, cả hai đều đang sử dụng IP 1.1.1.1. Tôi đã mua địa chỉ IP thứ hai 2.2.2.2 nhưng https://mysite.com sẽ không chấp nhận và firefox phàn nàn với lỗi "ssl_error_rx_record_too_long". Dưới đây là 2 tập tin vhost của tôi

/ etc / apache2 / kích hoạt trang web / 000-mặc định

#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-enables/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>

Trong mysite.com, nếu tôi thay thế <Virtualhost *: 443> bằng <Virtualhost 2.2.2.2:443>, Firefox sẽ phàn nàn với lỗi "ssl_error_rx_record_too_long".

Vì vậy, khi tôi cố gắng tạo và kích hoạt /etc/apache2/site-enables/mysite2.com với một chứng chỉ SSL khác trên địa chỉ IP thứ ba, Apache phàn nàn về vấn đề "chồng chéo".

Ai đó có thể cho tôi biết cách lấy máy chủ của tôi để tôi có thể lưu trữ nhiều trang web SSL trên các tên miền khác nhau không? Tôi muốn chứng chỉ SSL hoạt động cho IE 7+, FF và Safari trên các hệ điều hành phổ biến như WinXP, Vista, Win7 và OSX.

Câu trả lời:


7

Tôi đã thiết lập điều này trên các máy chủ của mình bằng cách điều chỉnh tệp /etc/apache2/ports.conf như sau:

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

Sau đó, bạn có thể sử dụng bằng cách chỉnh sửa /etc/apache2/sites-enables/mysite.com (một số mã được bỏ qua để rút ngắn ví dụ):

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

Đối với nhiều vhost như bạn muốn.

Chỉnh sửa: CẦN MỘT HOẠT ĐỘNG THỨ HAI? VÀO ĐÂY: http://forum.slicehost.com/comments.php?DiscussionID=3244


oh, nó đã hoạt động ... và mỗi trang web đang sử dụng cùng một địa chỉ IP 1.1.1.1. Vậy điều này có nghĩa là tôi không cần địa chỉ IP 2.2.2.2 nữa? Tôi không cần một IP duy nhất cho mỗi miền SSL?
Giăng

Bạn không bắt buộc phải sử dụng một IP duy nhất cho mỗi miền SSL.
Patrick R

Vui lòng giải thích lý do tại sao bạn không cần một IP riêng cho mỗi tên miền. Điều này đi ngược lại mọi thứ tôi hiểu về SSL ...
Josh

Tôi không chắc phải nói gì ngoài việc tôi đã sử dụng nhiều ký tự đại diện trên các máy chủ có một IP. Miễn là CommonName khớp với ServerName, bạn sẽ ổn. Bây giờ nếu bạn đang ở trong một môi trường lưu trữ được chia sẻ thì điều này có thể cho phép người khác sử dụng chứng chỉ của bạn. Nếu nó hoạt động cho johnlai2004 và tôi ... thì, vấn đề là gì?
Patrick R

voretaq7 đã giải thích lý do trên serverfault.com/questions/109800/ cấp - Đây là TSL, không phải SSL. SSL yêu cầu mối quan hệ 1: 1 giữa địa chỉ IP và chứng chỉ. TLS thì không. Tôi chỉ không biết TLS có thể được sử dụng cho HTTPS (chưa)
Josh

0

Tôi không thể kiểm tra hiện tại, vì vậy đây chỉ là một phỏng đoán hoang dã: Các tệp thường được đọc theo thứ tự bảng chữ cái. Bạn có thể gặp nhiều may mắn hơn khi bạn đọc chúng theo thứ tự ngược lại, ví dụ đổi tên 000-default thành 500-default và sử dụng 400-myhost. Tôi không thể nhớ nơi apache thích có máy chủ mặc định - đầu tiên hoặc cuối cùng. Nhưng từ những gì bạn nói (chồng chéo), nó có thể là cuối cùng


Bạn có thể thấy những gì nó sẽ sử dụng với apachectl -t -D DUMP_VHOSTS. Thứ tự là đầu tiên để cuối cùng.
Richard Salts
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.