Bài viết này sẽ hướng dẫn bạn cách thiết lập chấm dứt SSL trên HAProxy, để mã hóa lưu lượng truy cập qua HTTPS. Chúng tôi sẽ sử dụng chứng chỉ SSL tự ký cho lối vào mới. Giả định rằng bạn đã cài đặt và cấu hình HAProxy với giao diện HTTP tiêu chuẩn.
Yêu cầu
- Vultr VPS
- HAProxy 1.5
- Ubuntu 14.04 LTS (Nên hoạt động trên các phiên bản và phân phối khác)
Tạo chứng chỉ và khóa riêng
Chạy các dòng mã sau để tạo khóa riêng và chứng chỉ tự ký sẽ hoạt động với 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
Điều đầu tiên mà bạn nên làm là đảm bảo rằng SSLv3 bị vô hiệu hóa. Do cuộc tấn công POODLE, SSLv3 không còn được coi là an toàn. Tất cả các ứng dụng và máy chủ nên sử dụng TLS 1.0 trở lên. Sử dụng trình soạn thảo văn bản yêu thích của bạn, mở tệp /etc/haproxy/haproxy.cfg
. Bên trong, tìm kiếm các dòng ssl-default-bind-options no-sslv3
dưới global
phần. Nếu bạn không nhìn thấy nó, hãy thêm dòng đó vào cuối phần trước defaults
phần. Điều này sẽ đảm bảo rằng SSLv3 bị vô hiệu hóa trên toàn cầu. Bạn cũng có thể đặt nó bên trong các phần frontend của bạn, nhưng bạn nên tắt nó trên toàn cầu.
Lên cài đặt HTTPS. Tạo một phần lối vào mới có tên 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
Giải thích:
bind public_ip:443
(thay đổi public_ip
ip công khai VPS của bạn) yêu cầu HAProxy lắng nghe mọi yêu cầu được gửi đến địa chỉ ip trên cổng 443
(cổng HTTPS).
ssl crt /etc/ssl/certs/server.bundle.pem
báo cho HAProxy sử dụng chứng chỉ SSL được tạo trước đó.
reqadd X-Forwarded-Proto:\ https
thêm tiêu đề HTTPS vào cuối yêu cầu đến.
rspadd Strict-Transport-Security:\ max-age=31536000
một chính sách bảo mật để ngăn chặn các cuộc tấn công hạ cấp.
Bạn không cần thực hiện bất kỳ thay đổi bổ sung nào cho phần phụ trợ của mình.
Nếu bạn muốn có HAProxy theo mặc định, hãy sử dụng HTTPS, thêm redirect scheme https if !{ ssl_fc }
vào đầu www-backend
phần. Điều này sẽ buộc chuyển hướng HTTPS.
Lưu cấu hình của bạn và chạy service haproxy restart
để khởi động lại HAPRoxy. Bây giờ bạn đã sẵn sàng sử dụng HAProxy với điểm cuối SSL.