Hướng dẫn tạo chứng chỉ SSL miễn phí cho tên miền với Let's Encrypt

Hướng dẫn tạo chứng chỉ SSL miễn phí cho tên miền với Let's Encrypt

SSL (Secure Socket Layer) - nó mã hóa dữ liệu giữa máy chủ web và trình duyệt (khách) và làm tăng tính bảo mật cho website.

Cách tạo SSL certificate với Let's Encrypt sử dụng Ubuntu server 18

Trước tiên cần cài đặt các gói dữ liệu cần thiết

$ sudo apt update
$ sudo apt-get install letsencrypt

Sau đó cần trỏ tên miền về IP máy chủ đang cài đặt. Ví dụ tên miền "example.com" tạo bản ghi A trỏ về IP của máy chủ, tạo thư mục trên server "/var/www/example.com".

Tạo cấu hình cho tên miền với nginx trong đường dẫn "/etc/nginx/sites-enabled"

server {
  listen 80;
  server_name example.com;
  root /var/www/example.com;
  index index.html;
  # cái này là bắt buộc nhé để cho phép truy cập vào thư mục .well-known nhằm xác thực.
  location ~ /.well-known {
     allow all;
  }
}

File index.html có thể viết gì đó để sau khi khởi động lại dịch vụ nginx có thể truy cập vào tên miền xem cấu hình đã thành công chưa, khởi động lại Nginx

$ sudo service nginx restart

Tạo SSL certificate

$ sudo letsencrypt certonly -a webroot --webroot-path=/var/www/example.com -d example.com

sau khi tạo xong sẽ có file "fullchain.pem", "privkey.pem" trong thư mục "/etc/letsencrypt/live/example.com"

Giờ sửa lại file cấu hình để kiểm tra kết quả

server {
  listen 80;
  server_name example.com;
  return 301 https://$server_name$request_uri;
}
server {
  listen 443;
  ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  root /var/www/example.com;
  index index.html;
  # cái này là bắt buộc nhé để cho phép truy cập vào thư mục .well-known nhằm xác thực.
  location ~ /.well-known {
    allow all;
  }
}

khởi động lại Nginx.

Gia hạn SSL certificate với Let's Encrypt

Vì hiện tại ssl được tạo miễn phí và có thời hạn nên cần gia hạn để tiếp tục sử dụng, với lệnh:

$ sudo certbot renew

Hoặc có thể cấu hình cronjob để tự động chạy gia hạn:

$ sudo crontab -e

Thêm dòng sau vào và lưu lại (job sẽ tự động gia hạn lúc 2h ngày 1 cách nhau 2 tháng - 60 ngày)

00 2 1 */2 * /usr/bin/letsencrypt renew && /bin/systemctl reload nginx

Nếu có điều gì cần góp ý cho bài viết này, hãy bình luận ngay bên dưới nhé.
Cảm ơn các bạn vì đã dành thời gian đọc bài viết của mình. Chúc các bạn may mắn. !