Bảo mật Nginx với Let’s Encrypt trên Ubuntu 20.04

Tóm tắt nội dung

Let’s Encrypt là gì ?

Let’s Encrypt là cơ quan cấp chứng chỉ mở, tự động và miễn phí được phát triển bởi Nhóm nghiên cứu bảo mật Internet (ISRG), cung cấp chứng chỉ SSL miễn phí.

Chứng chỉ do Let’s Encrypt cấp được tất cả các trình duyệt chính tin cậy và có giá trị trong 90 ngày kể từ ngày cấp.

Hướng dẫn

Cài đặt Nginx(có thể bỏ qua nếu hệ thống của bạn đã caid Nginx)

Chạy lệnh sau để cài đặt Nginx:

sudo apt install nginx

Cài đặt Certbot

Chúng tôi sẽ sử dụng certbot để lấy và gia hạn chứng chỉ.

Chạy lệnh sau để cài đặt certbot :

sudo apt update
sudo apt install certbot

Gõ”y” để tiếp tục

Tạo nhóm Dh (Diffie-Hellman) 

Tạo một tập hợp các tham số DH 2048 bit mới bằng cách gõ lệnh sau:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Lấy chứng chỉ SSL Let’s Encrypt

Để có được chứng chỉ SSL cho miền, chúng tôi sẽ sử dụng plugin Webroot hoạt động bằng cách tạo tệp tạm thời để xác thực miền được yêu cầu trong thư mục ${webroot-path}/.well-known/acme-challenge.

Các lệnh sau sẽ tạo thư mục và làm cho nó có thể ghi được cho máy chủ Nginx:

sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp www-data /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt

Để tránh trùng lặp mã, chúng tôi sẽ tạo hai đoạn code và đưa chúng vào tất cả các tệp khối máy chủ Nginx.

Mở têp letsencrypt.conf :

sudo nano /etc/nginx/snippets/letsencrypt.conf

Dán đoạn code này vào:

location ^~ /.well-known/acme-challenge/ {
  allow all;
  root /var/lib/letsencrypt/;
  default_type "text/plain";
  try_files $uri =404;
}

Tiếp theo mở tệp ssl.conf:

sudo nano /etc/nginx/snippets/ssl.conf

Và dán đoạn code này vào

ssl_dhparam /etc/ssl/certs/dhparam.pem;

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 30s;

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;

Sau khi các đoạn mã được tạo, hãy mở tệp khối máy chủ miền và bao gồm letsencrypt.conf đoạn mã như được hiển thị bên dưới:

server {
  listen 80;
  server_name example.com www.example.com;

  include snippets/letsencrypt.conf;
}

Để kích hoạt khối máy chủ mới, hãy tạo một liên kết tượng trưng từ tệp đến thư mục sites-enabled:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

Khởi động lại dịch vụ Nginx để các thay đổi có hiệu lực:

sudo systemctl restart nginx

Bây giờ bạn có thể chạy Certbot với plugin webroot và lấy các tệp chứng chỉ SSL bằng cách phát hành:

sudo certbot certonly --agree-tos --email admin@example.com --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

Tải lại dịch vụ Nginx để các thay đổi có hiệu lực:

sudo systemctl reload nginx

Để xác minh rằng chứng chỉ SSL được cài đặt thành công, hãy mở trang web của bạn bằng cách sử dụng https://và bạn sẽ thấy biểu tượng ổ khóa màu xanh lục.

Tự động gia hạn chứng chỉ SSL Let’s Encrypt 

Khi chứng chỉ được gia hạn, dịch vụ nginx cần được tải lại. Mở /etc/letsencrypt/cli.ini và thêm dòng sau:

sudo nano /etc/letsencrypt/cli.ini

Để kiểm tra quá trình gia hạn, hãy chạy lệnh certbot –dry-run  :

sudo certbot renew --dry-run

Nếu không có lỗi, nghĩa là quá trình gia hạn đã thành công

Phần kêt:

Chúng tôi đã chỉ cho bạn cách sử dụng certbot để tải xuống chứng chỉ SSL của Let’s Encrypt cho miền của bạn.

 

Logo Cloud Việt

Thông Tin Và Hoạt Động Của Chúng Tôi

Cloud Việt là đơn vị cung cấp dịch vụ TTDL uy tín tại Việt Nam. Với tiêu chí là đặt quyền lợi và trải nghiệm của khách hàng lên hàng đầu để  đem đến dịch vụ tốt nhất.

Trụ sở chính

110/20/41 đường số 30, phường 6, quận Gò Vấp, TPHCM

Ngày làm việc

Thứ 2 - Thứ 6, Hàng tuần

Giờ làm việc

08 : 00 AM - 18 : 00 PM

Email

Support@cloudviet.com.vn

Hotline

0972 710 812