Tại sao nên kích hoạt HTTPS?

Tại sao nên kích hoạt HTTPS?

nhà cái khuyến mãi thành viên mới 88k,game nổ hũ đăng ký tặng code,123win city 8888

Kích hoạt HTTPS cho blog cá nhân

Ngày cập nhật: 2023-01-29 | Lượt xem: 11028 | Số từ: 1149 | Phân loại: Tự xây dựng blog


HTTPS không chỉ là một tiêu chuẩn an toàn, mà còn là yếu tố quan trọng giúp tăng trải nghiệm người dùng và cải thiện thứ hạng tìm kiếm. Dưới đây là một số lý do chính khiến tôi quyết định chuyển đổi blog của mình sang giao thức HTTPS:

  • Thử thách bản thân: Tôi chưa từng tự tay cấu hình chứng chỉ HTTPS trước đó, vì vậy đây là cơ hội để học hỏi và nâng cao kỹ năng.
  • Bảo vệ dữ liệu: Việc sử dụng HTTPS giúp ngăn chặn tình trạng truy cập trái phép và đánh cắp thông tin giữa người dùng và website.
  • Yêu cầu công nghệ: Một số nền tảng như WeChat Mini Program yêu cầu backend API phải hỗ trợ HTTPS.
  • Tăng thứ hạng SEO: Google đã ưu tiên các trang web sử dụng HTTPS trong kết quả tìm kiếm, điều này cũng giúp blog có nhiều khả năng được tìm thấy hơn.

Nên đăng ký chứng chỉ HTTPS ở đâu?

Tôi chọn Let’s Encrypt – một tổ chức cấp chứng chỉ mã nguồn mở và hoàn toàn miễn phí. Đây là một Certificate Authority (CA) đáng tin cậy và phổ biến trên toàn thế giới. Với Let’s Encrypt, bạn có thể dễ dàng tạo và quản lý chứng chỉ SSL/TLS mà không mất bất kỳ khoản phí nào.

Website chính thức:


Cách cài đặt chứng chỉ HTTPS

Để đơn giản hóa quy trình cài đặt, tôi sử dụng Certbot – một công cụ client ACME mạnh mẽ và tự động hóa. Công cụ này không chỉ giúp tạo chứng chỉ mà còn tự động cập nhật chúng khi hết hạn, đồng thời không làm gián đoạn hoạt động của website.

Dưới đây là quá trình thực hiện trên hệ thống Ubuntu với Nginx:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
$ sudo certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): xxx@xxx.com
-------------------------------------------------------------------------------
Please read the Terms of Service at
 You must agree in order to register with the ACME server at 
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A
-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: Y
Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: www.sunzhongwei.com
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1
Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for www.sunzhongwei.com
Waiting for verification...
Cleaning up challenges
Deployed Certificate to VirtualHost /etc/nginx/sites-enabled/xxx for set(['www.sunzhongwei.com'])
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): 2
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/xxx
-------------------------------------------------------------------------------
Congratulations! You have successfully enabled 
You should test your configuration at:

-------------------------------------------------------------------------------
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
  /etc/letsencrypt/live/www.sunzhongwei.com/fullchain.pem
  Your key file has been saved at:
  /etc/letsencrypt/live/www.sunzhongwei.com/privkey.pem
  Your cert will expire on 2018-04-05. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:
  Donating to ISRG / Let's Encrypt:  
  Donating to EFF:          

Sau khi chạy lệnh trên, tôi truy cập lại địa chỉ www.sunzhongwei.com, và thấy rằng mọi yêu cầu đều được chuyển hướng về ` Điều này cho thấy Certbot đã tự động sửa đổi cấu hình Nginx và khởi động lại dịch vụ thành công.

Lưu ý đối với Ubuntu 20.04: Nếu gặp lỗi “The requested nginx plugin does not appear to be installed”, hãy đảm bảo rằng bạn đã cài đặt plugin Nginx của Certbot bằng cách chạy:

1
sudo apt install python3-certbot-nginx

Cơ chế hoạt động của Certbot

Khi kiểm tra lại tệp cấu hình Nginx, tôi thấy Certbot đã thêm vào những dòng sau cho miền tương ứng:

1
2
3
4
5
6
7
8
9
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/www.sunzhongwei.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/www.sunzhongwei.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

if ($scheme != "https") {
    return 301 
} # managed by Certbot

Những cấu hình này giúp máy chủ nhận yêu cầu HTTPS, xác thực bằng chứng chỉ và chuyển hướng tất cả lưu lượng HTTP sang HTTPS.


Vẫn chưa đạt mức an toàn tối đa

Mặc dù HTTPS đã được bật, nhưng khi truy cập qua Chrome, tôi vẫn thấy biểu tượng cảnh báo (!), thay vì khóa xanh quen thuộc. Nguyên nhân nằm ở CDN: tên miền CDN đang sử dụng giao thức HTTP thay vì HTTPS.

Vì vậy, tôi quyết định cập nhật lại thiết lập CDN trên Qiniu (QCloud).


Cấu hình chứng chỉ HTTPS cho CDN Qiniu

Quy trình đăng ký chứng chỉ trên Qiniu khá phức tạp. Họ yêu cầu tôi thêm một bản ghi TXT vào DNS, trong khi tôi đã có sẵn bản ghi CNAME. Điều này gây khó khăn trong việc xác minh tên miền. Thay vào đó, tôi chọn phương án khác: đăng ký chứng chỉ miễn phí từ Aliyun, nơi có quy trình nhanh chóng và dễ dàng hơn rất nhiều.

Aliyun xử lý yêu cầu của tôi trong vòng vài phút, không cần điền quá nhiều thông tin như Qiniu. Sau khi tải xuống tệp pem và key, tôi nhập nội dung vào phần chứng chỉ trên Qiniu. Chờ khoảng 10 phút, thiết lập sẽ được áp dụng.


Sửa đổi đường dẫn ảnh

Mặc dù Qiniu đã hỗ trợ HTTPS, nhưng nếu bạn chỉ chuyển hướng HTTP sang HTTPS thì trình duyệt vẫn coi đây là liên kết không an toàn. Vì vậy, tôi đã chỉnh sửa lại toàn bộ đường dẫn hình ảnh trong blog:

  • Thay thế tất cả đường dẫn thành
  • Sử dụng Gravatar với giao thức HTTPS.

Tuy nhiên, tôi không thay đổi lại các ảnh trong Markdown vì tôi cho rằng hiệu quả mang lại không cao. Ví dụ, V2EX vẫn dùng hình ảnh HTTP từ Weibo và không bị ảnh hưởng đến SEO.


Hiệu quả đạt được

Sau khi hoàn tất, tôi đã thấy biểu tượng khóa xanh xuất hiện trên trình duyệt, cho thấy website đã được mã hóa hoàn toàn. Đây là bước tiến quan trọng để nâng cao độ tin cậy và trải nghiệm người dùng.

![Biểu tượng khóa xanh của HTTPS]


Thiết lập tự động gia hạn chứng chỉ

Certbot hỗ trợ tính năng tự động gia hạn chứng chỉ trước ngày hết hạn. Để kiểm tra xem chức năng này có hoạt động đúng hay không, bạn có thể chạy lệnh sau:

1
sudo certbot renew --dry-run

Đây là bước quan trọng để đảm bảo rằng blog của bạn luôn được bảo vệ mà không cần can thiệp thủ công.


Tài liệu

  • Trang chính thức của Let’s Encrypt:
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack thiết kế bởi Jimmy