Anda dapat mengatur SSLProtocol hanya untuk VirtualHost pertama dalam file konfigurasi. Semua entri VirtualHost berikutnya akan mewarisi pengaturan itu dari entri pertama dan secara diam-diam mengabaikan pengaturan mereka sendiri karena bug OpenSSL .
Ada laporan bug yang sesuai untuk mod_ssl , tetapi seperti yang dijelaskan dalam laporan bug, masalahnya harus diselesaikan dalam OpenSSL (sertifikat diwarisi tetapi bukan protokolnya).
Suite sandi harus disetel secara independen untuk setiap VirtualHost, jika tidak, Anda akan berakhir dengan daftar default, termasuk banyak sandi tidak aman. Perlu diketahui juga bahwa klien lama yang tidak mendukung Indikasi Nama Server (SNI) akan selalu menggunakan host default (kecuali diblokir menggunakanSSLStrictSNIVHostCheck
), yang dapat mengacaukan pengujian Anda.
Singkatnya, Anda harus dapat menentukan suite cipher khusus dan sertifikat untuk setiap host virtual, tetapi sampai bug diperbaiki jangan berharap perilaku yang benar dengan protokol khusus untuk setiap host virtual.
Saya mengalami masalah ini dengan Apache 2.4 dan modssl dengan OpenSSL 1.0.1k, dan saya berharap bahwa Apache 2.2 akan mengalami masalah yang sama.
Pembaruan (Oktober 2016): Bug OpenSSL ditandai telah diselesaikan pada 13 Oktober 2016. Namun, itu adalah bagian dari penutupan massal masalah terbuka dan meskipun 'perbaikan parsial' diberikan, masalahnya tidak pernah sepenuhnya diatasi.
Pembaruan (April 2018): Bug OpenSSL yang dikirimkan kembali sekarang memiliki tambalan yang tersedia (pada 9 April 2018). Patch ini akan mengubah perilaku instance Apache yang dikonfigurasi dengan beberapa host virtual SNI:
Tolak koneksi yang tidak sesuai dengan vhost SSLProtocol
Ini dikembangkan dan diuji dengan 2.4.27 dan diproduksi dengan versi itu. Patch itu dimodifikasi untuk 2.4.33 dan sedikit diuji.
Ini memeriksa versi koneksi terhadap SSLProtocol yang dikonfigurasikan untuk virtual host yang dicocokkan berdasarkan SNI. Karena koneksi pada awalnya dibuat dengan SSLProtocol yang dikonfigurasikan untuk host default untuk port, host default harus menyertakan semua protokol yang akan didukung oleh host virtual apa pun.
Patch ini menambahkan status pengembalian tambahan APR_EMISMATCH ke fungsi init_vhost sehingga panggilan balik ssl_callback_ServerNameIndication terdaftar dengan OpenSSL dapat mengembalikan lansiran fatal SSL_AD_PROTOCOL_VERSION. Ini dimaksudkan untuk menghasilkan respons yang sama kepada ClientHello dengan memiliki SSLProtocol yang ditentukan yang tidak menyertakan versi yang dipermasalahkan. Karena panggilan balik SNI dipanggil selama pemrosesan ClientHello dan sebelum tanggapan dibuat, tampaknya melakukan hal itu.
Jika Anda tiba-tiba melihat pesan dengan format berikut:
Rejecting version [version] for servername [hostname]
Maka Anda harus mengecek SSLProtocol
host default Anda.
SSLStrictSNIVHostCheck
sangat dihargai. Namun, juga harus dicatat dari dokumentasi menyebutkan bahwa Jika set untuk di dalam virtual host lainnya, SNI klien menyadari tidak diizinkan untuk mengakses virtual host tertentu .