CodeGym /Các khóa học /Docker SELF /Cài đặt HTTPS (SSL/TLS) với Let's Encrypt

Cài đặt HTTPS (SSL/TLS) với Let's Encrypt

Docker SELF
Mức độ , Bài học
Có sẵn

Cài đặt HTTPS (SSL/TLS) với Let's Encrypt

1. Nội dung bài giảng này và tại sao cần thiết

Trong thế giới hiện nay, HTTPS đã trở thành tiêu chuẩn cho tất cả các trang web. Nếu bạn muốn người dùng của mình cảm thấy an toàn, và Google không hạ thứ hạng trang web của bạn trên kết quả tìm kiếm (đúng vậy, HTTPS ảnh hưởng đến SEO), thì bạn bắt buộc phải cài đặt SSL/TLS. Giao thức HTTPS bảo vệ dữ liệu được truyền giữa người dùng và máy chủ bằng cách mã hoá, giúp tránh khả năng bị kẻ xấu đánh cắp.

Trong bài giảng này, chúng ta sẽ từng bước tìm hiểu cách kích hoạt HTTPS miễn phí cho máy chủ web của bạn bằng Let's Encrypt. Let's Encrypt là một trung tâm cấp chứng chỉ (CA) uy tín, cung cấp chứng chỉ miễn phí và công cụ để cài đặt chúng. Chúng ta cũng sẽ học cách tự động gia hạn chứng chỉ để tránh đau đầu vì chứng chỉ hết hạn.

HTTP so với HTTPS

HTTP (Hypertext Transfer Protocol) — là giao thức truyền dữ liệu. Nó ổn để xem meme mèo, NHƯNG! Nếu ai đó kết nối vào mạng Wi-Fi của bạn (ví dụ, ở quán cafe), họ sẽ có thể đánh cắp dữ liệu bạn gửi tới máy chủ (thật kinh khủng, mật khẩu của bạn sẽ trở thành "mật khẩu của họ").

HTTPS (Hypertext Transfer Protocol Secure) — là phiên bản HTTP có thêm mã hoá. Dữ liệu được truyền giữa client và máy chủ được bảo vệ bằng SSL/TLS (Secure Sockets Layer / Transport Layer Security). Kẻ xấu không thể xem nội dung các "gói" dữ liệu, ngay cả khi chúng đánh cắp được chúng.


2. Cài đặt Let's Encrypt và Certbot

Certbot là một công cụ từ các nhà phát triển của Let's Encrypt, cho phép dễ dàng lấy và cấu hình chứng chỉ SSL cho server web của bạn. Nó rất thông minh, có thể tự động làm việc với Nginx hoặc Apache, nhận hết phần việc khó khăn cho chúng ta. Bắt đầu với việc cài đặt nhé.

Cài đặt Certbot

Hãy chắc chắn rằng server của bạn đã được cập nhật:

sudo apt-get update
sudo apt-get upgrade

Bây giờ chúng ta sẽ cài đặt Certbot và các plugin của nó:

  • Dành cho Nginx:

    sudo apt-get install certbot python3-certbot-nginx
    
  • Dành cho Apache:

    sudo apt-get install certbot python3-certbot-apache
    
Fun fact:

Certbot thực chất chỉ là mã Python được hỗ trợ nhiệt tình bởi cộng đồng. Nó dễ dàng tích hợp với phần lớn các server.


3. Lấy chứng chỉ SSL bằng Certbot

Dành cho Nginx

Certbot có thể tự động cấu hình HTTPS cho trang web của bạn nếu bạn đang sử dụng Nginx. Nhập lệnh sau:

sudo certbot --nginx

Certbot sẽ quét các virtual host hiện tại của bạn (các block server trong cấu hình). Nó sẽ hỏi bạn muốn thiết lập HTTPS cho domain nào. Hãy đảm bảo rằng domain đã trỏ đến máy chủ của bạn thông qua DNS (ví dụ như A-record).

Ví dụ output:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: example.com
2: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Chọn domain của bạn (ví dụ: 1).

Certbot sẽ tự động cấu hình Nginx và kiểm tra nó. Sau khi cài đặt thành công, bạn sẽ thấy thông báo như sau:

Congratulations! Your certificate and chain have been saved ...

Bây giờ trang web của bạn đã có thể truy cập qua HTTPS. Bạn có thể kiểm tra điều này bằng cách mở https://example.com trong trình duyệt.


Dành cho Apache

Nếu bạn sử dụng Apache, lệnh sẽ hơi khác một chút:

sudo certbot --apache

Certbot cũng sẽ quét các virtual host của bạn (các block <VirtualHost>) và đề xuất thiết lập HTTPS cho các domain được chọn. Chọn các domain cần thiết và Certbot sẽ xử lý mọi thứ cho bạn.

Sau khi hoàn tất quá trình, bạn sẽ lại thấy thông báo chúc mừng và có thể kiểm tra xem trang web của mình có sẵn qua HTTPS hay không.


4. Tự động cập nhật chứng chỉ

Chứng chỉ của Let's Encrypt chỉ có hiệu lực trong 90 ngày, vì vậy cần được cập nhật thường xuyên. Certbot có thể làm điều này tự động, nhưng chúng ta cần đảm bảo mọi thứ được cấu hình đúng cách.

Kiểm tra thời hạn của chứng chỉ

Bạn có thể kiểm tra khi nào chứng chỉ của bạn hết hạn:

sudo certbot certificates

Kết quả sẽ hiển thị các domain của bạn và ngày hết hạn chứng chỉ.

Cài đặt tự động cập nhật

Trong quá trình cài đặt, Certbot tự động thêm một nhiệm vụ vào Cron hoặc Systemd Timer để kiểm tra cập nhật. Nếu bạn muốn đảm bảo mọi thứ hoạt động, hãy thêm một nhiệm vụ kiểm tra vào Cron:

sudo crontab -e

Thêm dòng sau:

0 0 * * * certbot renew --quiet

Lệnh này kiểm tra và gia hạn chứng chỉ hàng ngày vào lúc nửa đêm. Tùy chọn --quiet tắt các thông tin không cần thiết.

Cập nhật thủ công

Nếu bạn muốn cập nhật chứng chỉ thủ công (ví dụ để kiểm tra), hãy sử dụng:

sudo certbot renew

5. Bật chuyển hướng tự động HTTP → HTTPS

Trang web của bạn vẫn có thể được truy cập thông qua HTTP, nhưng điều này không an toàn. Hãy thiết lập chuyển hướng tự động tất cả các yêu cầu sang HTTPS.

Dành cho Nginx

Certbot có thể tự động cấu hình chuyển hướng khi cấp chứng chỉ. Nếu trước đó bạn chưa bật chức năng này, hãy thêm chuyển hướng vào tệp cấu hình virtual host của bạn:

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

    return 301 https://$host$request_uri;
}

Khởi động lại Nginx để áp dụng các thay đổi:

sudo systemctl restart nginx

Dành cho Apache

Certbot cũng có thể cung cấp chức năng bật chuyển hướng tự động. Nếu bạn đã bỏ qua bước này, thêm đoạn mã sau vào tệp virtual host của bạn:

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

Khởi động lại Apache:

sudo systemctl restart apache2

6. Gỡ lỗi

Nếu có gì đó không ổn, hãy bắt đầu bằng việc xem log:

Đối với Nginx

sudo tail -f /var/log/nginx/error.log

Đối với Apache

sudo tail -f /var/log/apache2/error.log

Kiểm tra cấu hình

Cũng hãy kiểm tra cấu hình web server:

  • Đối với Nginx:

    sudo nginx -t
    
  • Đối với Apache:

    sudo apachectl configtest
    

Kiểm tra HTTPS

Đảm bảo rằng website của bạn khả dụng qua HTTPS:

curl -I https://example.com

Bạn phải thấy trạng thái 200 OK và dòng Strict-Transport-Security, có nghĩa là HTTPS đang hoạt động.

Bây giờ bạn đã sẵn sàng tạo các website HTTPS an toàn, bảo mật. Người dùng của bạn sẽ hài lòng, Google cũng thế, và bạn có thể yên tâm ngủ ngon vì dữ liệu của mình được bảo vệ khỏi các nhân vật xấu trên internet.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION