Cách bảo mật Nginx bằng Let’s Encrypt trên Ubuntu 20.04

1 tháng trước, Cài đặt VPS, Ubuntu, 122 Lượt xem

Đăng ký cập nhập video từ netweb.vn

Let’s Encrypt là Tổ chức phát hành chứng chỉ (CA) cung cấp cách dễ dàng để lấy và cài đặt chứng chỉ TLS / SSL miễn phí , do đó cho phép HTTPS được mã hóa trên máy chủ web. Nó đơn giản hóa quy trình bằng cách cung cấp một ứng dụng khách phần mềm, Certbot, cố gắng tự động hóa hầu hết (nếu không phải tất cả) các bước cần thiết. Hiện tại, toàn bộ quá trình lấy và cài đặt chứng chỉ hoàn toàn tự động trên cả Apache và Nginx.

Trong hướng dẫn này, bạn sẽ sử dụng Certbot để lấy chứng chỉ SSL miễn phí cho Nginx trên Ubuntu 20.04 và thiết lập tự động gia hạn chứng chỉ của bạn.

Hướng dẫn này sẽ sử dụng tệp cấu hình máy chủ Nginx riêng biệt thay vì tệp mặc định. Chúng tôi khuyên bạn nên tạo các tệp khối máy chủ Nginx mới cho từng miền vì nó giúp tránh các lỗi thường gặp và duy trì các tệp mặc định dưới dạng cấu hình dự phòng.

Điều kiện quan trọng cần có

Để làm theo hướng dẫn này, bạn sẽ cần:

  • Một máy chủ Ubuntu 20.04 bao gồm một người dùng không phải root đã kích hoạt sudo và tường lửa UFW.
  • Tên miền đã đăng ký. Hướng dẫn này sẽ sử dụng thietkewebs.net xuyên suốt. Bạn có thể mua tên miền từ Namecheap ,
  • Cả hai bản ghi DNS sau được thiết lập cho máy chủ của bạn. 
    • Bản ghi A với việc thietkewebs.net trỏ đến địa chỉ IP công cộng của máy chủ của bạn.
    • Bản ghi A với việc trỏ đến địa chỉ IP công cộng của máy chủ của bạn.www.thietkewebs.net
  • Đã cài đặt Nginx bằng cách làm theo Cách cài đặt Nginx trên Ubuntu 20.04 . . Hướng dẫn này sẽ sử dụng làm ví dụ./etc/nginx/sites-available/thietkewebs.net

Bước 1 – Cài đặt Certbot

Bước đầu tiên để sử dụng Let’s Encrypt để lấy chứng chỉ SSL là cài đặt phần mềm Certbot trên máy chủ của bạn.

Cài đặt Certbot và đó là plugin Nginx với apt

sudo apt install certbot python3-certbot-nginx

Certbot hiện đã sẵn sàng để sử dụng, nhưng để nó tự động định cấu hình SSL cho Nginx, chúng ta cần xác minh một số cấu hình của Nginx.

Bước 2 – Xác nhận cấu hình của Nginx

Certbot cần có khả năng tìm đúng server khối trong cấu hình Nginx của bạn để có thể tự động định cấu hình SSL. Cụ thể, nó thực hiện điều này bằng cách tìm kiếm một server_name chỉ thị phù hợp với miền mà bạn yêu cầu chứng chỉ.

Nếu bạn đã làm theo bước thiết lập khối máy chủ trong hướng dẫn cài đặt Nginx , bạn sẽ có một khối máy chủ cho miền của mình tại với lệnh đã được thiết lập thích hợp./etc/nginx/sites-available/thietkewebs.net server_name

Để kiểm tra, hãy mở tệp cấu hình cho miền của bạn bằng cách sử dụng nanohoặc trình soạn thảo văn bản yêu thích của bạn:

sudo nano /etc/nginx/sites-available/thietkewebs.net

Tìm server_name dòng hiện có . Nó sẽ giống như thế này:

...
server_name thietkewebs.net www.thietkewebs.net;
...

Nếu có, hãy thoát khỏi trình chỉnh sửa của bạn và chuyển sang bước tiếp theo.

Nếu không, hãy cập nhật nó để phù hợp. Sau đó, lưu tệp, thoát khỏi trình chỉnh sửa của bạn và xác minh cú pháp của các chỉnh sửa cấu hình của bạn:

sudo nginx -t

Nếu bạn gặp lỗi, hãy mở lại tệp khối máy chủ và kiểm tra xem có lỗi chính tả hoặc ký tự bị thiếu nào không. Khi cú pháp của tệp cấu hình của bạn chính xác, hãy tải lại Nginx để tải cấu hình mới:

sudo systemctl reload nginx

Certbot hiện có thể tìm đúng server khối và cập nhật nó tự động.

Tiếp theo, hãy cập nhật tường lửa để cho phép lưu lượng HTTPS

Bước 3 – Cho phép HTTPS thông qua tường lửa

Nếu bạn đã bật tường lửa ufw, theo khuyến nghị của hướng dẫn điều kiện tiên quyết, bạn sẽ cần điều chỉnh cài đặt để cho phép lưu lượng HTTPS. May mắn thay, Nginx đăng ký một số cấu hình ufw khi cài đặt.

Bạn có thể xem cài đặt hiện tại bằng cách nhập:

sudo ufw status

Nó có thể sẽ giống như thế này, có nghĩa là chỉ lưu lượng HTTP được phép đến máy chủ web:

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Ngoài ra, để cho phép lưu lượng truy cập HTTPS, hãy cho phép cấu hình Nginx Full và xóa phụ cấp cấu hình HTTP Nginx dư thừa:

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'

Trạng thái của bạn bây giờ sẽ giống như sau:

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

Tiếp theo, hãy chạy Certbot và tìm nạp chứng chỉ của chúng tôi.

Bước 4 – Lấy chứng chỉ SSL

Certbot cung cấp nhiều cách khác nhau để lấy chứng chỉ SSL thông qua các plugin. Plugin Nginx sẽ xử lý việc định cấu hình lại Nginx và tải lại cấu hình bất cứ khi nào cần thiết. Để sử dụng plugin này, hãy nhập như sau:

sudo certbot --nginx -d thietkewebs.net -d www.thietkewebs.net

Điều này chạy certbot với --nginx plugin, sử dụng -d để chỉ định tên miền mà chúng tôi muốn chứng chỉ hợp lệ.

Nếu đây là lần đầu tiên bạn chạy certbot, bạn sẽ được nhắc nhập địa chỉ email và đồng ý với các điều khoản dịch vụ. Sau khi làm như vậy, certbotsẽ giao tiếp với máy chủ Let’s Encrypt, sau đó chạy thử thách để xác minh rằng bạn kiểm soát miền mà bạn đang yêu cầu chứng chỉ.

Nếu thành công, certbot sẽ hỏi bạn muốn định cấu hình cài đặt HTTPS của mình như thế nào

Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Chọn sự lựa chọn của bạn rồi nhấn ENTER. Cấu hình sẽ được cập nhật và Nginx sẽ tải lại để chọn cài đặt mới. certbot sẽ kết thúc bằng một thông báo cho bạn biết quá trình đã thành công và nơi lưu trữ chứng chỉ của bạn:

Chứng chỉ của bạn đã được tải xuống, cài đặt và tải. 
Hãy thử tải lại trang web của bạn bằng cách sử dụng 
https://và để ý chỉ báo bảo mật của trình duyệt. 
Nó phải cho biết rằng trang web được bảo mật đúng cách, thường có biểu tượng ổ khóa.
Hiển thị icon ổ khóa bảo mật như vậy là xong nhé ae

Bước 5 – Xác minh Tự động gia hạn Certbot

Chứng chỉ của Let’s Encrypt chỉ có giá trị trong chín mươi ngày. Điều này nhằm khuyến khích người dùng tự động hóa quy trình gia hạn chứng chỉ của họ. Các certbotgói chúng tôi cài đặt sẽ chăm sóc của điều này cho chúng tôi bằng cách thêm một bộ đếm thời gian systemd mà sẽ chạy hai lần một ngày và tự động gia hạn bất kỳ giấy chứng nhận đó là trong vòng ba mươi ngày kể từ ngày hết hạn.

Bạn có thể truy vấn trạng thái của bộ hẹn giờ với systemctl:

sudo systemctl status certbot.timer
Output
● certbot.timer - Run certbot twice daily
     Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
     Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
    Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left
   Triggers: ● certbot.service

Để kiểm tra quá trình gia hạn, bạn có thể chạy thử với certbot:

sudo certbot renew --dry-run

Nếu bạn không thấy lỗi, bạn đã hoàn tất. Khi cần thiết, Certbot sẽ gia hạn chứng chỉ của bạn và tải lại Nginx để thực hiện các thay đổi. Nếu quá trình gia hạn tự động không thành công, Let’s Encrypt sẽ gửi thông báo đến email bạn đã chỉ định, cảnh báo cho bạn khi chứng chỉ của bạn sắp hết hạn.

Phần kết luận

Trong hướng dẫn này, bạn đã cài đặt ứng dụng Let’s Encrypt certbot, tải xuống chứng chỉ SSL cho miền của mình, định cấu hình Nginx để sử dụng các chứng chỉ này và thiết lập gia hạn chứng chỉ tự động

Bình luận trên facebook netweb.vn