_default_ VirtualHost tumpang tindih pada port 443, yang pertama didahulukan

64

Saya memiliki dua aplikasi ruby ​​on rails 3 yang berjalan di server yang sama, (ubuntu 10.04), keduanya dengan SSL.

Ini file konfigurasi apache saya:

<VirtualHost *:80>
ServerName example1.com
DocumentRoot /home/me/example1/production/current/public
</VirtualHost>
<VirtualHost *:443>
ServerName example1.com
DocumentRoot /home/me/example1/production/current/public
SSLEngine on
SSLCertificateFile /home/me/example1/production/shared/example1.crt
SSLCertificateKeyFile /home/me/example1/production/shared/example1.key
SSLCertificateChainFile /home/me/example1/production/shared/gd_bundle.crt
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
</VirtualHost>


<VirtualHost *:80>
ServerName example2.com
DocumentRoot /home/me/example2/production/current/public
</VirtualHost>
<VirtualHost *:443>
ServerName example2.com
DocumentRoot /home/me/example2/production/current/public
SSLEngine on
SSLCertificateFile /home/me/example2/production/shared/iwanto.crt
SSLCertificateKeyFile /home/me/example2/production/shared/iwanto.key
SSLCertificateChainFile /home/me/example2/production/shared/gd_bundle.crt
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
</VirtualHost>

Apa masalahnya:

Saat me-restart server saya itu memberi saya beberapa output seperti ini:

 * Restarting web server apache2                                   
 [Sun Jun 17 17:57:49 2012] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
 ... waiting [Sun Jun 17 17:57:50 2012] [warn] _default_ VirtualHost overlap on port 443, the first has precedence

Tentang googling mengapa masalah ini datang, saya mendapat sesuatu seperti ini:

Anda tidak dapat menggunakan host virtual berbasis nama dengan SSL karena handshake SSL (ketika browser menerima sertifikat server Web aman) terjadi sebelum permintaan HTTP, yang mengidentifikasi host virtual berbasis nama yang sesuai. Jika Anda berencana untuk menggunakan host virtual berbasis nama, ingatlah bahwa mereka hanya bekerja dengan server Web Anda yang tidak aman.

Tetapi tidak dapat menemukan cara menjalankan dua aplikasi ssl di server yang sama.

Ada yang bisa bantu saya?

Mohit Jain
sumber
5
Anda tidak memiliki _default_vhost di konfigurasi yang Anda berikan, jadi vhost ada di tempat lain. Apa output dari apache2ctl -S? (Ya, adalah mungkin untuk menjalankan beberapa vhosts berbasis nama SSL pada sertifikat yang berbeda, asalkan Anda tidak perlu mendukung browser klien yang menjalankan Windows XP atau yang lain yang tidak mendukung TLS SNI. Apakah Anda perlu mendukung Windows XP?)
Shane Madden

Jawaban:

87

Hampir sampai!

Tambahkan ini ke ports.conf atau http.conf dan pertahankan konfigurasi Anda di atas.

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.

    # !important below!
    NameVirtualHost *:443 
    Listen 443
</IfModule>
Daniel T. Magnusson
sumber
Komentar "#! Penting! Perlu dihapus atau dipindahkan ke baris lain. Jika tidak, terima kasih banyak telah menafsirkan pesan kesalahan yang tidak akurat ini untuk saya.
flickerfly
3
Ini tidak lagi berfungsi di Apache 2.4.7
malhal
Terima kasih. Saya menemukan saya perlu berkomentar Dengarkan 443 karena itu juga digunakan dalam konfigurasi pribadi saya.d / website.conf configs
dlink
3

Ini membantu saya menjalankan "/ usr / sbin / apachectl -S" juga. Perintah ini keluar menunjukkan DUA file "ssl.conf" di jalur yang sama. Memindahkan atau menghapus file pelaku dan semuanya akan berfungsi setelahnya.

Robert
sumber
1

Anda dapat menambahkan ini ke konfigurasi apache Anda di /etc/apache2/ports.conf:

<IfModule mod_ssl.c>                
    Listen 443                      
    <IfModule !mod_authz_core.c>    
        # Apache 2.2                
        NameVirtualHost *:443       
    </IfModule>                     
</IfModule>                         

(Ini berfungsi di keduanya: apache 2.2 dan 2.4)

rubo77
sumber