Artikel ini akan memandu anda mengatur penyediaan SSL pada HAProxy, untuk menyulitkan lalu lintas melalui HTTPS. Kami akan menggunakan sijil SSL yang ditandatangani sendiri untuk frontend baru. Diandaikan bahawa anda sudah memasang HAProxy dan dikonfigurasi dengan frontend HTTP standard.
Keperluan
- Vultr VPS
- HAProxy 1.5
- Ubuntu 14.04 LTS (Perlu berfungsi pada versi dan pengedaran lain)
Hasilkan Sijil dan Kunci Peribadi
Jalankan baris kod berikut untuk menghasilkan kunci peribadi dan sijil yang ditandatangani sendiri yang akan berfungsi dengan HAProxy.
openssl genrsa -out /etc/ssl/private/server.key 2048
mkdir /etc/ssl/csr
openssl req -new -key /etc/ssl/private/server.key -out /etc/ssl/csr/server.csr
openssl x509 -req -days 365 -in /etc/ssl/csr/server.csr -signkey /etc/ssl/private/server.key -out /etc/ssl/certs/server.crt
cat /etc/ssl/certs/server.crt /etc/ssl/private/server.key > /etc/ssl/certs/server.bundle.pem
Perkara pertama yang harus anda lakukan adalah memastikan bahawa SSLv3 dilumpuhkan. Kerana serangan POODLE, SSLv3 tidak lagi dianggap selamat. Semua aplikasi dan pelayan harus menggunakan TLS 1.0 dan lebih tinggi. Dengan menggunakan editor teks kegemaran anda, buka failnya /etc/haproxy/haproxy.cfg. Di dalam, cari garis ssl-default-bind-options no-sslv3di bawah globalbahagian. Sekiranya anda tidak melihatnya, tambahkan baris itu di hujung bahagian sebelum defaultsbahagian tersebut. Ini akan memastikan bahawa SSLv3 dilumpuhkan secara global. Anda juga boleh memasangnya di bahagian depan anda, tetapi disarankan untuk melumpuhkannya secara global.
Ke persediaan HTTPS. Buat bahagian frontend baru bernama web-https.
frontend web-https
bind public_ip:443 ssl crt /etc/ssl/certs/server.bundle.pem
reqadd X-Forwarded-Proto:\ https
rspadd Strict-Transport-Security:\ max-age=31536000
default_backend www-backend
Untuk menerangkan:
bind public_ip:443(ubah public_ipke ip awam VPS anda) memberitahu HAProxy untuk mendengarkan permintaan yang dihantar ke alamat ip di port 443(port HTTPS).
ssl crt /etc/ssl/certs/server.bundle.pem menyuruh HAProxy menggunakan sijil SSL yang dihasilkan sebelumnya.
reqadd X-Forwarded-Proto:\ https menambahkan tajuk HTTPS ke akhir permintaan masuk.
rspadd Strict-Transport-Security:\ max-age=31536000 dasar keselamatan untuk mencegah daripada serangan downgrade.
Anda tidak perlu membuat perubahan tambahan pada bahagian backend anda.
Sekiranya anda ingin HAProxy menggunakan HTTPS secara lalai, tambahkan redirect scheme https if !{ ssl_fc }ke bahagian awal www-backend. Ini akan memaksa pengalihan semula HTTPS.
Simpan konfigurasi anda dan jalankan service haproxy restartuntuk memulakan semula HAPRoxy. Kini anda sudah siap menggunakan HAProxy dengan titik akhir SSL.