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-sslv3
di bawah global
bahagian. Sekiranya anda tidak melihatnya, tambahkan baris itu di hujung bahagian sebelum defaults
bahagian 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_ip
ke 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 restart
untuk memulakan semula HAPRoxy. Kini anda sudah siap menggunakan HAProxy dengan titik akhir SSL.