Mengapa apache httpd memberi tahu saya bahwa virtualhosts berbasis-nama saya hanya berfungsi dengan browser yang mengaktifkan SNI (RFC 4366)


9

Mengapa apache memberi saya pesan kesalahan ini di log saya? Apakah ini positif palsu?

[warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)

Saya baru saja memutakhirkan dari Centos 5.7 ke 6.3, dan dengan itu ke versi httpd yang lebih baru. Saya selalu membuat konfigurasi virtualhost ssl saya seperti di bawah ini. Di mana semua domain yang memiliki sertifikat yang sama (sebagian besar / selalu sertifikat wildcard) berbagi ip yang sama. Tetapi tidak pernah mendapatkan pesan kesalahan ini sebelumnya (atau pernahkah saya, mungkin saya belum melihat cukup dalam log saya?) Dari apa yang saya pelajari ini harus bekerja tanpa SNI (Indikasi Nama Server)

Inilah bagian yang relevan dari file httpd.conf saya. Tanpa VirtualHost ini saya tidak mendapatkan pesan kesalahan.

NameVirtualHost 10.101.0.135:443

<VirtualHost 10.101.0.135:443>
  ServerName sub1.domain.com

  SSLEngine on
  SSLProtocol -all +SSLv3 +TLSv1
  SSLCipherSuite ALL:!aNull:!EDH:!DH:!ADH:!eNull:!LOW:!EXP:RC4+RSA+SHA1:+HIGH:+MEDIUM
  SSLCertificateFile /opt/RootLive/etc/ssl/ssl.crt/wild.fareoffice.com.crt
  SSLCertificateKeyFile /opt/RootLive/etc/ssl/ssl.key/wild.fareoffice.com.key
  SSLCertificateChainFile /opt/RootLive/etc/ssl/ca/geotrust-ca.pem
</VirtualHost>

<VirtualHost 10.101.0.135:443>
  ServerName sub2.domain.com

  SSLEngine on
  SSLProtocol -all +SSLv3 +TLSv1
  SSLCipherSuite ALL:!aNull:!EDH:!DH:!ADH:!eNull:!LOW:!EXP:RC4+RSA+SHA1:+HIGH:+MEDIUM
  SSLCertificateFile /opt/RootLive/etc/ssl/ssl.crt/wild.fareoffice.com.crt
  SSLCertificateKeyFile /opt/RootLive/etc/ssl/ssl.key/wild.fareoffice.com.key
  SSLCertificateChainFile /opt/RootLive/etc/ssl/ca/geotrust-ca.pem
</VirtualHost>

Jawaban:


7

Itu karena direktif VirtualHost Anda tidak cocok dengan direktif ServerName Anda dan / atau CN sertifikat. Ketiganya harus identik, kecuali jika Anda memiliki sertifikat wildcard di mana bagian yang tidak liar harus identik.


Jadi jawabannya di sini adalah mengubah <VirtualHost 10.101.0.135:443>baris menjadi <VirtualHost sub2.domain.com:443>? Berpotensi?
MichaelJones

@MichaelJones apakah ini menyelesaikan masalah?
Fernando Santiago

@FernandoSantiago Saya sekarang membayar untuk alamat IP yang berbeda untuk host virtual saya sekarang karena saya menemukan SNI tidak cukup dapat diandalkan. Dan saya memiliki alamat ip itu dalam VirtualHostdeklarasi saya .
MichaelJones

1
Ini menyelesaikan masalah saya dengan sempurna. Saya menggunakan VirtualHostkartu liar tetapi ServerNamearahan cocok dengan sertifikat CN. Semua 3 cocok dan biola! PS: Jawaban ini serverfault.com/questions/578061/… memberi tahu Anda cara mendapatkan CN yang Anda masukkan dalam sertifikat RSA Anda
3bdalla

3

Ini bukan kesalahan, ini pesan peringatan.

Dan Anda mendapatkannya karena 1) Anda memperbarui versi Apache Anda dan 2) Anda memiliki 2 SSL VirtualHosts menggunakan alamat IP yang persis sama (bukan menggunakan 2 IP).

Karena Anda berbagi IP, browser tanpa dukungan SNI hanya akan mendapatkan situs web pertama dan tidak pernah yang kedua.


Browser tanpa SNI akan mengonfigurasi sertifikat untuk situs web pertama - tetapi untuk benar-benar memetakannya ke vhost untuk melayani permintaan, Hostheader diperiksa secara normal.
Shane Madden

@ShaneMadden, saya tidak percaya itu benar sebagai Host: header TIDAK dicentang SEBELUM koneksi SSL dibuat. Dan itulah inti dari memiliki dukungan SNI. Atau membutuhkan 1 IP per SSL VH sebaliknya. Jadi tanpa SNI, Apache akan melakukan default ke VH pertama yang ditemukan dengan alamat IP itu, Host: header praktis diabaikan.
rightstuff

... Kalau tidak, Anda dapat melakukan 100-an SSL NameBasedVirtualHosts pada 1 alamat IP tunggal, dan kami tahu itu tidak benar (tanpa dukungan SNI oleh server dan klien).
rightstuff

4
Otherwise you could do 100s of SSL NameBasedVirtualHosts on 1 single IP address, and we know that's not true (without SNI support by server and client)Kamu bisa. Penggunaan normal ini adalah ketika semua memiliki sertifikat yang sama, wildcard atau sertifikat nama alternatif biasanya. Tetapi katakan Anda memiliki dua vhost dengan sertifikat SSL mereka sendiri - domain1.com dan domain2.com, dengan domain1.com yang dikonfigurasi terlebih dahulu. Peramban yang non-SNI meminta domain2.com - mereka mendapatkan kesalahan ketidakcocokan domain sertifikat, karena mereka mengirim domain1 cert - tetapi jika mereka mengklik melalui itu, mereka mendapatkan konten domain2.
Shane Madden

1
Jika header host diabaikan, bahkan kasus sederhana dan banyak digunakan "sertifikat wildcard dengan beberapa vhost berbasis nama" akan pecah. Bagaimanapun, inilah beberapa contoh pertanyaan yang telah saya jawab di sini di mana perilaku itu telah ditampilkan; serverfault.com/q/292637 serverfault.com/q/330212
Shane Madden
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.