- vừa được xem lúc

Cấu hình SSL wildcard với Let's Encrypt đúng cách

0 0 33

Người đăng: Tong Hoang Vu

Theo Viblo Asia

Hôm nay là một bài viết trình bày cách cấu hình HTTPS wildcard với Let's Encrypt nhé. Đảm bảo dễ hiểu và chính xác luôn.

Trước mình đã thực hiện cấu hình HTTPS cho vài project, có tìm hiểu kha khá trên google. Làm xong thấy chạy được, web hiện xanh nên tưởng ổn rồi. Ngờ đâu 3 tháng sau chứng chỉ hết hạn, vào xem thì thấy job renew bị fail. Nguyên nhân là do generate chứng chỉ với mode --manual nên certbot không auto renew được (cũng có cách cơ mà phức tạp lắm).

https://eff-certbot.readthedocs.io/en/stable/using.html#manual

Kinh nghiệm rút ra là nên lên trang chủ Certbot đọc thì tốt hơn. Các bài viết mình xem qua một là outdated, hai là hướng dẫn không chính xác (dùng mode --manual mà lại có job renew mới hay). Có thể trước đây chạy được, nhưng khi mình làm thì không. Nên nay mình ngoi lên viết bài chia sẻ lại cho mọi người đây.

1. Giới thiệu vài thứ

1.1. HTTPS & SSL

Các bạn web dev hẳn không lạ gì với HTTPS và SSL nữa. Và mình cũng không muốn nhắc thêm ở đây (vì bài này khá dài), nên mình để lại link tham khảo cho bạn nào chưa biết nhé.

https://www.cloudflare.com/learning/ssl/what-is-https/

https://www.cloudflare.com/learning/ssl/what-is-ssl/

Cơ bản thì SSL (hoặc TLS) là một lớp bảo mật, còn HTTPS là kết hợp của giao thức HTTP và SSL, giúp mã hóa dữ liệu truyền đi. Phần này các bạn cũng tìm hiểu thêm nhé, mình không rành nên không dám chém nhiều.

Domain muốn có HTTPS thì cần một chứng chỉ SSL phù hợp.

1.2. SSL wildcard

Với chứng chỉ SSL bình thường, chỉ có thể active cho một domain gốc (ví dụ example.com). Những subdomain của nó (như blog.example.com) thì không dùng được chứng chỉ này (trình duyệt sẽ không trust).

Muốn có cho subdomain phải tạo chứng chỉ riêng nữa, sẽ rất phiền nếu có nhiều subdomain.

image.png

Thay vào đó hãy dùng chứng chỉ SSL dạng wildcard. Chứng chỉ wildcard dạng *.example.com có thể áp dụng cho mọi subdomain. Trong bài này mình sẽ hướng dẫn cách cấu hình loại chứng chỉ này nhé.

1.3. Let's Encrypt & Certbot

Let's Encrypt là SSL provider miễn phí và siêu phổ biến rồi, mình cũng không nhắc lại nhiều. Thay vì mua chứng chỉ từ các nhà cung cấp có phí như Comodo, Symantec,... thì tại sao không chọn Let's Encrypt vì nó free 😂

Tuy nhiên, chứng chỉ Let's Encrypt chỉ có thời hạn 3 tháng, sau đó cần gia hạn lại. Nhưng đừng lo, việc này có thể thực hiện tự động bằng cronjob dễ dàng.

Còn Certbot, đơn giản đây chỉ là một tool dùng lấy chứng chỉ Let's Encrypt cho bạn thôi.

https://certbot.eff.org/

2. Chuẩn bị

2.1. Cài Certbot

Trước mình cài Certbot, tham khảo một số trang thì hướng dẫn đủ cách, như add key, clone repository, snap,... khá là phức tạp. Có trang hướng dẫn dùng certbot-auto thì mình nói luôn đây là version cũ nhé, nên dùng cách khác mới hơn. Với mình thì chỉ cần chạy lệnh sau là được (trên Ubuntu).

sudo apt install certbot

Với các distro khác hoặc chạy lệnh trên không được, bạn có thể google tìm thêm cách khác nhé.

2.2. Cài DNS plugin

Certbot có một số plugin hỗ trợ các DNS provider tương ứng (Google Domains, DigitalOcean,...). Plugin sẽ làm vai trò xác thực bạn là chủ domain này mỗi lần gia hạn.

https://eff-certbot.readthedocs.io/en/stable/using.html#dns-plugins

Trong bài mình chọn DigitalOcean nhé, vì phần xác thực của nó đơn giản nhất (và mình đã làm qua rồi nên chắc chắn hơn). Cài đặt các bạn xem step 2 ở đây nhé.

https://www.digitalocean.com/community/tutorials/how-to-create-let-s-encrypt-wildcard-certificates-with-certbot

2.3. Đổi DNS nameserver

Các bạn có thể nghĩ tới trường hợp mình không mua domain ở DigitalOcean thì làm sao. Đừng lo, lúc đầu mình cũng nghĩ là không được, nhưng rồi được anh leader chỉ cho vài đường.

Đơn giản chỉ cần vô trang quản lý domain, tìm phần sửa DNS nameserver, rồi trỏ nameserver về DigitalOcean là được. Lúc này DigitalOcean sẽ trở thành DNS provider cho domain rồi.

Nhưng trước đó, bạn cần tài khoản DigitalOcean trước. Sau đó vô trang quản lý, ở góc trên bên phải chọn add thêm Domain như hình. Rồi nhập các thông tin yêu cầu là được.

image.png

Xong bước này, đảm bảo domain không có ai sở hữu từ trước trên DigitalOcean cả. Sau đó mới qua trang quản lý domain cũ đổi DNS nameserver. Ví dụ web của mình là ở Google Domains sẽ làm như sau.

image.png

Trỏ về 2 địa chỉ ns1.digitalocean.com với ns2.digitalocean.com là được. Thường sẽ đợi tầm 15 phút để nó update (với mình là vậy).

3. Thực hiện cấu hình

3.1. Tạo credential file

3.3. Generate chứng chỉ

3.4. Cấu hình auto renew


Bình luận

Bài viết tương tự

- vừa được xem lúc

Có thực sự an toàn với Authentication và Authorization , mật khẩu có nên lưu ở dạng text ?

Có thực sự an toàn với Authentication và Authorization , mật khẩu có nên lưu ở dạng text . Hơn nữa, vì chúng ta đang lưu trữ thông tin đăng nhập và hỗ trợ quy trình đăng nhập, chúng ta biết rằng sẽ có thông tin xác thực được gửi qua hạ tầng mạng.

0 0 46

- vừa được xem lúc

SSL hoạt động như thế nào

Https sử dụng giao thức SSL để bảo mật thông tin liên lạc bằng cách truyền dữ liệu được mã hóa. . Asymmetric Cryptography. Symmetric Cryptography.

1 1 85

- vừa được xem lúc

Bảo mật internet: HTTPS và SSL/TLS như giải thích cho trẻ 5 tuổi

(Mình chém gió đấy, trẻ 5 tuổi còn đang tập đọc mà hiểu được cái này thì là thần đồng, là thiên tài, là mình cũng lạy). . . Xin chào các bạn.

0 0 78

- vừa được xem lúc

Phân biệt server xịn và server pha ke bằng SSL Pinning

Xin chào các bạn, trong bài viết này mình muốn chia sẻ về một kĩ thuật rất nên dùng khi cần tăng tính bảo mật của kết nối internet: SSL Pinning. Trong bài viết trước, mình đã giải thích khá kĩ về SSL,

0 0 572

- vừa được xem lúc

Tạo SSL Certificate Authority cho HTTPS trên local

Trên đây cũng có khá nhiều bài viết làm sao để tạo self-signed SSL cho localhost để có thể test thử HTTPS. Nhưng những cách đó đều có một nhược điểm là khi vào trang sẽ có cảnh báo NET::ERR_CERT_AUTHO

0 0 30

- vừa được xem lúc

Cấu hình SSL HTTPS với nginx và Let's Enscrypt

Bạn vừa mua domain Toidicafe.vn ở Tenten giá 5 lít và trỏ nó về server của Vultr.

0 0 28