HAProxy untuk mengakhiri SSL juga mengirim SSL ke server backend

14

Saya ingin mengakhiri SSL di HAProxy, melakukan manipulasi pada header, menulis ulang URL dan mengenkripsi ulang lalu lintas dan mengirim ke server backend sebagai SSL?

Sepertinya saya tidak dapat menemukan cara untuk melakukan ini. Saya bisa menyelesaikan SSL secara teratur, dan mengirim permintaan HTTP polos ke backend. Tapi saya perlu mengirim SSL ke backend.

Saya ingin memiliki fitur berikut:

  • Ekstrak header x-forwarded-for, untuk mendapatkan IP klien nyata di belakang proxy.
  • Terapkan kelengketan sesi menggunakan cookie.
  • Lakukan penulisan ulang URL.
  • Kirim lalu lintas SSL ke backend menggunakan kelekatan sesi berbasis cookie.

Kecuali saya mengakhiri SSL pada akhir haproxy, saya tidak bisa menyelesaikan penulisan ulang URL.

Setiap bantuan dari orang-orang baik di sini akan sangat dihargai.

oazabir
sumber
1
Bisakah Anda memposting konfigurasi saat ini, dan memberi tahu kami apa yang tidak berfungsi?
GregL

Jawaban:

30

Tidak ada yang istimewa untuk dilakukan di haproxy.cfg. Anda cukup mengkonfigurasi URL apa pun penulisan ulang dan manipulasi header yang Anda inginkan dalam frontend HAProxy Anda dan kemudian mengarahkan lalu lintas ke backend SSL Anda. Ini contoh singkatnya:

frontend app1_ssl
    bind *:443 ssl crt /etc/haproxy/certs.d/example.com.crt crt /etc/haproxy/certs.d/ no-sslv3

    option http-server-close
    option forwardfor
    reqadd X-Forwarded-Proto:\ https
    reqadd X-Forwarded-Port:\ 443

    # set HTTP Strict Transport Security (HTST) header
    rspadd  Strict-Transport-Security:\ max-age=15768000

    # some ACLs and URL rewrites...

    default_backend             backend_app1_ssl


backend backend_app1_ssl
    server mybackendserver 127.0.0.1:4433 ssl verify none
Tubeless
sumber
1
Luar biasa! Biarkan saya mencobanya. Saya tidak dapat menemukan "server .... ssl" itu di mana saja.
oazabir
Terima kasih banyak atas bantuanmu. Saya bisa membuatnya bekerja. Namun, saya tidak bisa membuat SSL lengket untuk berfungsi. Bisakah Anda membantu? Pertanyaannya ada di sini: serverfault.com/questions/738397/…
oazabir
Hebat, saya senang bisa membantu. Jangan lupa untuk menerima jawaban saya sehingga orang lain dapat segera melihat bahwa itu membantu ;-)
Tubeless
Apakah enkripsi benar-benar berfungsi dengan memberikan ssl memverifikasi tidak ada? Dari dokumentasi haproxy, "Jika diatur ke 'tidak ada', sertifikat server tidak diverifikasi. Dalam kasus lain, Sertifikat yang diberikan oleh server diverifikasi menggunakan CA dari 'ca-file'". Bisakah seseorang tolong klarifikasi ini?
mjm
Dengan ssl verify nonelalu lintas antara HAProxy dan server backend masih dienkripsi, tetapi validitas sertifikat SSL backend tidak dicentang.
Tubeless