एसएसएल साइट अपाचे और उबंटू में सही आईपी का उपयोग नहीं कर रही है


10

मैं एक अपाचे-ubuntu-php वेबसर्वर स्थापित करने की कोशिश कर रहा हूं। मेरा वेबसर्वर कई एसएसएल साइटों की मेजबानी करेगा, प्रत्येक एसएसएल साइट का अपना आईपी पता होगा (जब तक कि ऐसा करने का बेहतर तरीका नहीं है)।

इसलिए मुझे लगता है कि कम से कम दो अलग-अलग आईपी पते को पहचानने के लिए पहला कदम अपाचे प्राप्त करना है। अभी, मेरे पास एक वेबसाइट का एक एसएसएल और नॉन-एसएसएल संस्करण है जो http://mysite.com और https://mysite.com हैं । हालाँकि दोनों वर्तमान में मेरे सर्वर पर चल रहे हैं, मैं दोनों को अलग-अलग आईपी पते का उपयोग करने के लिए नहीं मिल सकता। अभी, दोनों आईपी 1.1.1.1 का उपयोग कर रहे हैं। मैंने एक दूसरा आईपी पता 2.2.2.2 खरीदा था लेकिन https://mysite.com इसे स्वीकार नहीं करेगा और फ़ायरफ़ॉक्स "ssl_error_rx_record_too_long" त्रुटि के साथ शिकायत करता है। यहाँ मेरी 2 vhost फ़ाइलों पर एक नज़र है

/ Etc / apache2 / साइट-सक्षम / 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 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> से प्रतिस्थापित करता हूं, तो फ़ायरफ़ॉक्स "ssl_error_rx_record_too_long" त्रुटि के साथ शिकायत करता है।

इसलिए जब मैं तीसरे IP पते पर किसी अन्य SSL प्रमाणपत्र के साथ /etc/apache2/site-enabled/mysite2.com बनाने और सक्षम करने का प्रयास करता हूं, तो Apache एक "ओवरलैप" समस्या के बारे में शिकायत करता है।

क्या कोई मुझे बता सकता है कि मुझे अपना सर्वर कैसे उठना चाहिए ताकि मैं विभिन्न डोमेन पर कई एसएसएल वेबसाइटों की मेजबानी कर सकूं? मैं SSL प्रमाणपत्र IE 7+, FF और Safari के लिए लोकप्रिय OS जैसे WinXP, Vista, Win7 और OSX पर काम करना चाहता हूं।

जवाबों:


7

मैंने इसे अपने सर्वर पर /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


ओह, यह काम किया ... और प्रत्येक वेबसाइट उसी 1.1.1.1 आईपी पते का उपयोग कर रही है। तो क्या इसका मतलब यह है कि मुझे अब 2.2.2.2 आईपी पते की आवश्यकता नहीं है? मुझे प्रत्येक एसएसएल डोमेन के लिए एक विशिष्ट आईपी की आवश्यकता नहीं है?
जॉन

आपको प्रत्येक एसएसएल डोमेन के लिए एक अद्वितीय आईपी का उपयोग करने की आवश्यकता नहीं है।
पैट्रिक आर

कृपया बताएं कि आपको प्रत्येक डोमेन के लिए अलग आईपी की आवश्यकता क्यों नहीं है। यह एसएसएल के बारे में मेरी समझ में आने वाली हर चीज के खिलाफ जाता है ...
जोश 23

मुझे यकीन नहीं है कि इसके अलावा क्या कहना है कि मैंने एक आईपी के साथ सर्वर पर कई वाइल्डकार्ड सेर्ट्स का उपयोग किया है। जब तक CommonName ServerName से मेल खाता है आप ठीक रहेंगे। अब यदि आप एक साझा होस्टिंग वातावरण में हैं तो यह दूसरों को आपके प्रमाणपत्र का उपयोग करने की अनुमति दे सकता है। अगर यह johnlai2004 और मेरे लिए काम करता है ... तो ठीक है, मुद्दा क्या है?
पैट्रिक आर

voretaq7 ने serverfault.com/questions/109800/… पर तर्क के बारे में बताया - यह टीएसएल है, एसएसएल नहीं। SSL को IP पते और प्रमाणपत्र के बीच 1: 1 संबंध की आवश्यकता होती है। टीएलएस नहीं करता है। मुझे अभी पता नहीं था कि टीएलएस को एचटीटीपीएस (अभी तक) के लिए इस्तेमाल किया जा सकता है
जोश

0

मैं वर्तमान में जांच नहीं कर सकता, इसलिए यह सिर्फ एक जंगली अनुमान है: फाइलें आमतौर पर वर्णमाला के क्रम में पढ़ी जाती हैं। जब आप उन्हें रिवर्स ऑर्डर में पढ़ते हैं, तो आपके पास अधिक भाग्य हो सकता है, उदाहरण के लिए 500-डिफ़ॉल्ट में 000-डिफ़ॉल्ट का नाम बदलें और 400-मायहोस्ट का उपयोग करें। मुझे याद नहीं है कि अपाचे को डिफ़ॉल्ट होस्ट पसंद है - पहला या अंतिम। लेकिन आप जो कहते हैं (ओवरलैप), वह अंतिम हो सकता है


आप देख सकते हैं कि यह अपाचेक्टल -t -D DUMP_VHOSTS के साथ क्या उपयोग करेगा। आदेश पहले से अंतिम है।
रिचर्ड साल्ट्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.