Melewati info protokol SSL ke backend melalui tajuk HTTP

13

Setelah kerentanan Poodle terungkap baru-baru ini, tim kami memutuskan untuk beralih dari SSLv3. Tapi sebelum penghapusan lengkap, mereka ingin memperingatkan para pengguna sehari-hari yang mereka gunakan browser yang usang SSLv3. Jadi, kami datang ide untuk

  • Deteksi protokol (SSLv3, TLS1 dll ...) dari front-end SSL-offloading (kami menggunakan nginx)
  • Berikan info (protokol SSL) melalui header HTTP ke Apache-backend.

Kemudian kode backend kami akan memproses header itu dan memberikan peringatan jika klien menggunakan SSLv3 .

Saya sadar bahwa nginx memiliki fitur proxy_set_header. Jadi yang ini akan sesederhana itu

proxy_set_header X-HTTPS-Protocol $something;

Sekarang, masalahnya adalah: jelas nginx tahu protokol yang digunakan oleh klien, tetapi bagaimana saya bisa meneruskan info itu ke backend melalui header HTTP?

Terima kasih


Seperti yang ditunjukkan oleh pengguna redirect Apache yang sejenis jika mereka menggunakan SSLv3 , ide ini mungkin menjadi ide yang sangat-sangat buruk.

Alasannya adalah jabat tangan TLS terjadi sebelum lalu lintas HTTP dikirim melalui terowongan TLS. Pada saat backend kami mendeteksi protokol SSL, klien mungkin telah mengirim data pribadi dalam permintaan pertamanya. Untuk solusi permanen dan jangka panjang kami harus mempertimbangkan untuk menonaktifkan SSLv3.

tpml7
sumber

Jawaban:

14

Nginx menggunakan banyak variabel yang dapat digunakan dalam konfigurasi. Halaman ini menyediakan daftar lengkap variabel. Variabel yang memegang protokol dalam permintaan HTTPS adalah ssl_protocol. Kutipan:

$ssl_protocol

mengembalikan protokol koneksi SSL yang dibuat;

Jadi proxy_set_headerkonfigurasi Anda akan

proxy_set_header X-HTTPS-Protocol $ssl_protocol;

Referensi lain: di sini

masegaloeh
sumber
Hilang titik koma di akhir $ ssl_protocol (saya tidak bisa mengubahnya karena serverf * l membutuhkan 6 karakter yang harus diubah).
hazard89
@ hazard89 melakukan itu
sanmai