Menonaktifkan SSLv3 tetapi masih mendukung SSLv2Hello di Apache

12

Banyak klien SSL, terutama JDK 6, menggunakan protokol SSLv2Hello untuk berjabat tangan dengan server. Menggunakan protokol ini tidak berarti Anda menggunakan SSL 2.0 atau 3.0 dalam hal ini; itu hanya jabat tangan untuk menentukan protokol mana yang akan digunakan. [ http://tools.ietf.org/html/rfc5246#appendix-E.2]

Namun, di Apache, jika Anda menonaktifkan dukungan SSLv3, ini tampaknya menghapus dukungan untuk protokol SSLv2Hello. Apache Tomcat memiliki dukungan eksplisit untuk SSLv2Hello; yaitu, Anda dapat mengaktifkannya, tetapi tidak mengaktifkan SSLv3.

Apakah ada cara untuk melakukan ini di Apache?

[Memperbarui]

Ini adalah konfigurasi protokol saya:

  SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv3
Matt Hughes
sumber
However, in Apache, if you disable SSLv3 support, this apparently removes support for the SSLv2Hello protocol. Saya menjalankan Apache 2.2 dengan SSLProtocol all -SSLv2 -SSLv3dan handshake SSL 2 berfungsi. Konfigurasi apa yang Anda jalankan persis yang Anda punya masalah. Satu-satunya cara saya tahu untuk menonaktifkan Handshake SSL 2 adalah mengaktifkan mode FIPS.
Chris S
1
Betapa merepotkan untuk menangani dukungan warisan pada tahun 2014 :(. Sudah waktunya bagi semua orang untuk membasmi SSLv2 & SSLv3 dan membuat dukungan ekstensi universal (mis. SNI).
Xavier Lucas
2
@ XavierLucas Alih-alih melakukan semua -SSLv2, -SSLv3, saya menentukan protokol TLS yang saya dukung. Saya tidak melihat mengapa itu berbeda, tetapi saya akan menguji.
Matt Hughes
@ Chris saya mencoba keduanya: SSLProtocol + TLSv1 + TLSv1.1 + TLSv1.2 -SSLv3 dan semua -SSLv3 -SSLv2. Ini berjalan dengan Apache 2.4.10. Konfigurasi tidak muncul untuk memungkinkan jabat tangan SSL 2. Dan saya belum menyentuh mode FIPS; standarnya adalah dinonaktifkan.
Matt Hughes

Jawaban:

7

Rupanya mod_ssl telah berubah dalam setahun terakhir ini (saya belum menemukan komit yang tepat untuk sumbernya, tetapi menemukan "masalah"). Sumber sekarang melakukan ini:

If SSLProtocol only includes only one Protocol:
    Handshake = That Protocol's Handshake Only
Else
    Handshake = SSLv2 Handshake

Tidak ada penggantian untuk pengaturan ini. Satu-satunya hal yang dapat Anda lakukan adalah mengedit sumber, kompilasi ulang versi Anda sendiri. Saya telah membuat diff untuk memaksa kompatibilitas Handshake SSLv2 jika Anda ingin mengompilasi sendiri.

Chris S
sumber
1
Saya dapat mengonfirmasi, bahwa tambalan Chris membantu - curl (dan program-program yang menggunakan libcurl seperti git) sekarang dapat berbicara dengan server kami lagi, meskipun SSLv3 telah dinonaktifkan - tanpa sslscanmenandai kerentanan apa pun. Tapi tambalan itu tampaknya agak invasif dan saya ingin meminta Chris untuk mengirimkannya ke proyek Apache untuk ditinjau ASAP. Saya akan mengajukan tiket sendiri, jika Chris tidak :-) Terima kasih banyak, Chris!
Mikhail T.
1
Akan lebih baik untuk menambahkan arahan terpisah untuk memaksakan mode kompatibilitas. Jika saya punya waktu luang, saya akan menuliskannya, tetapi saya tidak berpikir "tambalan" ini adalah ide yang bagus dalam jangka panjang.
Chris S
Ya, itu tampaknya, apa yang dipertimbangkan pengembang Apache. Lihat [utas] [1] Saya mulai di sana ... [1] mail-archives.apache.org/mod_mbox/httpd-dev/201410.mbox/…
Mikhail T.
1

Jadi ternyata ini bukan masalah selama ini. Apache akan menerima handshake SSLv2 dengan salah satu konfigurasi yang saya posting di atas. Saya disesatkan oleh kesalahan jabat tangan dengan berpikir bahwa inilah masalahnya; itu benar-benar hanya masalah konfigurasi di mana server tidak mempercayai CA klien.

Matt Hughes
sumber