SSL miễn phí với Let's Encrypt
Last updated
Was this helpful?
Last updated
Was this helpful?
Hiện nay hầu hết các trang web đều đã hỗ trợ SSL (Secure Socket Layer). Nó mã hóa dữ liệu truyền đi giữa máy chủ web và trình duyệt và làm tăng tính bảo mật cho website. Ngoài ra, việc sử dụng SSL certificate (chứng chỉ SSL) là cần thiết bởi hiện tại Google đã ưu tiên xếp hạng website dựa theo giao thức https (HTTP + SSL), những website mà chỉ sử dụng giao thức http sẽ bị coi là "unsafe" (không an toàn).
Có nhiều loại chứng chỉ SSL cung cấp các mức độ bảo mật khác nhau. Ví dụ chúng ta có thể mua một chứng chỉ SSL tại Namecheap với các mức giá khác nhau tùy từng loại. Tuy nhiên trong bài viết này chúng ta sẽ chỉ nói đến loại cơ bản nhất và làm thế nào để có được nó một cách miễn phí
Sử dụng Cloudflare: Đây là một website cung cấp dịch vụ tăng tốc và bảo mật website, họ có cung cấp chứng chỉ SSL ở gói Free. Việc đăng ký rất dễ dàng nên mình sẽ không hướng dẫn ở đây. Chú ý là với website chỉ phục vụ người dùng tại Việt Nam thì chạy qua Cloudflare có thể sẽ chậm hơn 1 chút do sử dụng CDN server ngoài Việt Nam.
Sử dụng Let's Encrypt: Sử dụng dịch vụ này chúng ta sẽ tự tạo SSL certificate cho riêng mình và hoàn toàn miễn phí.
Giả sử chúng ta đang sử dụng 1 server Ubuntu với tài khoản truy cập có quyền sudo và sử dụng web server là Nginx.
Bước 1: Cài đặt gói letsencrypt (với bản mới sẽ đổi tên là certbot và dùng lệnh certbot thay cho letsencrypt)
hoặc làm theo hướng dẫn tại trang chủ https://certbot.eff.org/
Bước 2: Tạo SSL certificate
Thêm đoạn cấu hình sau vào block server của file cấu hình cho website (thường nằm trong /etc/nginx/sites-enabled
hoặc /etc/nginx/conf.d
) để cho phép truy cập vào thư mục ẩn (.well-known) phục vụ cho việc xác thực:
Tạo SSL certificate (thay example.com bằng tên miền của bạn và /var/www/example.com là đường dẫn đến thư mục gốc của website):
Nếu thành công output sẽ trông như sau:
Bước 3: Cấu hình SSL cho website
Để tăng tính bảo mật, tạo Strong Diffie-Hellman Group (dùng cho Nginx) :
Tạo 1 snippet cho Nginx để có thể tái sử dụng được khi muốn cấu hình cho nhiều website:
Nội dung file như sau:
Tham khảo thêm cấu hình SSL tại Strong SSL security on Nginx
Sửa file cấu hình cho website:
Tạo redirect 301 cho block server listen 80 (http) nếu bạn chỉ muốn support https (khi người dùng truy cập với giao thức http sẽ tự động chuyển thành https)
Tạo thêm 1 block server listen 443 (https)
Chú ý thay toàn bộ example.com bằng domain của mình và đường dẫn root /var/www/example.com giống bước tạo SSL certificate.
Sau khi cấu hình xong thì khởi động lại Nginx:
Truy cập thử website để xem thành quả hoặc kiểm tra bằng trang sau: https://www.ssllabs.com/ssltest/analyze.html
SSL tạo theo cách sử dụng Let's Encrypt sẽ hết hạn sau 90 ngày và chúng ta sẽ phải gia hạn bằng lệnh sau:
Để tự động hóa việc này chúng ta có thể cấu hình cronjob để tự động gia hạn chứng chỉ.
Ví dụ cấu hình cronjob để tự động gia hạn mỗi 60 ngày:
Thêm vào dòng sau (đặt lịch cứ mỗi 2 tháng tự động chạy lệnh renew vào lúc 0h30):
Khởi động lại Nginx (sau khi khởi động xong nhớ kiểm tra lại xem website còn hoạt động không ):
Xong, vậy là website của chúng ta đã có thể truy cập qua giao thức https và không lo bị hết hạn .