Hướng dẫn cài SSL cho HAProxy sử dụng LetsEncrypt

Giới thiệu

Trong thế giới kỹ thuật mạng, việc bảo mật dữ liệu là vô cùng quan trọng. Một trong những phương pháp bảo mật phổ biến là sử dụng SSL (Secure Sockets Layer). Trong bài viết này, chúng ta sẽ tìm hiểu cách cài đặt SSL cho HAProxy sử dụng LetsEncrypt – một dịch vụ cung cấp chứng chỉ SSL miễn phí và tự động.

Chuẩn bị

Trước khi bắt đầu, chúng ta cần chuẩn bị một vài thứ. Đầu tiên, bạn cần cài đặt HAProxy trên máy chủ của bạn. HAProxy là một reverse proxy và load balancer phổ biến được sử dụng để điều hướng các yêu cầu từ người dùng đến các máy chủ ứng dụng. Bạn cũng cần cài đặt Let’s Encrypt client để tạo chứng chỉ SSL miễn phí.

Cài đặt SSL cho HAProxy sử dụng LetsEncrypt

Trong phần này, chúng ta sẽ sử dụng certificate được cung cấp bởi một nhà cung cấp certificate (certificate authority – CA). Sử dụng certificate này cho phép website được xác thực khi truy cập internet. Với điều kiện hạn chế, chúng ta có thể sử dụng certificate miễn phí của một số nhà cung cấp.

Trong phần cấu hình này, chúng ta sử dụng Let’s Encrypt để nhận certificate miễn phí với mỗi lần renew là 90 ngày.

Yêu cầu:

  • Website publish với tên miền internet

Bước 1 : Cài Đặt Certbot

Đầu tiên, cài đặt Certbot trên máy chủ của bạn bằng cách chạy các lệnh sau trên terminal:

 sudo apt-get update
 sudo apt-get install certbot
 sudo add-apt-repository -y ppa:certbot/certbot

Bước 2 :Sử dụng Certbot để tạo và cài đặt chứng chỉ SSL

Đầu tiên bạn cần stop haproxy trước để tránh lỗi trùng port 80 nhé.

systemctl stop haproxy

Chạy lệnh sau để bắt đầu quá trình tạo chứng chỉ ( thay tên miền của bạn vào nhé, ở đây mình cài với tên miền haproxy.quyenlt.com ):

sudo certbot certonly --standalone -d haproxy.quyenlt.com

Sau khi quá trình tạo chứng chỉ hoàn thành, Certbot sẽ lưu chứng chỉ SSL mới tại ‘/etc/letsencrypt/live/{your_domain}/’ trên máy chủ của bạn.

Certificate is saved at: /etc/letsencrypt/live/haproxy.quyenlt.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/haproxy.quyenlt.com/privkey.pem

Bước 3 : Mở rộng key và cert thành tệp pem

Tệp pem là tệp tin chứa định dạng có thể chỉ public certificate hoặc có thể gồm tập public key, private key và root certificate kết hợp với nhau.

Chúng ta thực hiện nối private key và certificate ở trên để tạo thành tệp pem.

cd /etc/letsencrypt/live/haproxy.quyenlt.com
cat fullchain.pem privkey.pem | tee haproxy.quyenlt.pem

Bước 4 : Cài chứng chỉ lên cấu hình haproxy

Sau khi có chứng chỉ SSL, bạn có thể cấu hình HAProxy để sử dụng chúng. Mở file cấu hình HAProxy (thường là ‘/etc/haproxy/haproxy.cfg’) và thêm các dòng sau vào phần cấu hình frontend:

frontend http
    bind *:80
    bind *:443 ssl crt /etc/letsencrypt/live/haproxy.quyenlt.com/haproxy.quyenlt.pem
backend servers
    mode http
    server web1 192.168.10.2:80 check   #IP node1
    server web2 192.168.10.3:80 check   #IP node2

Bước 5 : Sau khi đã thêm thông tin cấu hình này, bạn cần khởi động lại HAProxy để áp dụng các thay đổi.

Check xem nội dung file config có lỗi gì không nếu hiện như hình ảnh thì chuẩn rồi nhé :

haproxy -check -f /etc/haproxy/haproxy.cfg

Bây giờ restart lại haproxy để nhận các cấu hình SSL mới thêm nhé :

systemctl restart haproxy

Bước 6 : Kiểm tra xem đã có SSL chưa bằng công cụ SSL Checker :

Nếu tích xanh hết thì có nghĩa là đã có SSL .

Kết luận

Trong bài viết này, chúng ta đã tìm hiểu cách cài đặt SSL cho HAProxy sử dụng LetsEncrypt. Việc cài đặt SSL giúp bảo mật dữ liệu và đảm bảo tính toàn vẹn của thông tin truyền qua mạng. Sử dụng LetsEncrypt, bạn có thể dễ dàng tạo chứng chỉ SSL miễn phí và tự động cho HAProxy. Hy vọng rằng bài viết này đã cung cấp cho bạn những thông tin hữu ích để bắt đầu cài đặt SSL cho HAProxy.

Picture of Tobi

Tobi

Chào mọi người, mình là Quyền - hiện đang công tác tại Phòng Kỹ thuật AZDIGI. Trong quá trình làm việc mình có cơ hội được tiếp xúc với khá nhiều các vấn đề liên quan đến Website/Hosting/VPS/Server, do đó mình viết lại các hướng dẫn này nhằm chia sẻ kiến thức, cũng như tạo một môi trường để chúng ta giao lưu và học hỏi lẫn nhau, trau dồi thêm nhiều kiến thức bổ ích hơn nữa.