Hướng dẫn lets encrypt step by step wildcard

Ngày 14/03/2018, Let’s Encrypt thông báo bắt đầu cung cấp chứng chỉ Wildcard SSL Certificates hoàn toàn miễn phí trong 3 tháng. Sau 3 tháng để tiếp tục sử dụng, các bạn cần tiến hành gia hạn dịch vụ. Thông tin phát hành Wildcard SSL của Let’s Encrypt các bạn xem tại đây.

Hướng dẫn lets encrypt step by step wildcard

Wildcard SSL Certificates là gì?

Chứng chỉ Wildcard SSL dành cho các website có nhu cầu sử dụng SSL cho không giới hạn tên miền phụ của một tên miền chính chỉ với một chứng chỉ duy nhất. Ví dụ khi đăng ký Wildcard SSL cho tên miền *.vinasupport.com bạn có thể sử dụng cho toàn bộ các subdomain như: demo.vinasupport.com, image.vinasupport.com, email.vinasupport.com…

Giới thiệu về Let’s Encrypt

Let’s Encrypt là một tổ chức chứng nhận cung cấp các chứng chỉ X.509 miễn phí cho mã hóa TLS của Transport Layer Security, họ cung cấp các chứng chỉ SSL Certificate miễn phí trong vòng 3 tháng, đồng thời cung cấp tính năng cung cấp, tự động gia hạn SSL.

Trong bài viêt này VinaSupport sẽ hướng dẫn các bạn cài đặt Let’s Encrypt trên hệ điều hành Ubuntu Server.

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).

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.

Mục Lục

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.

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.

Hướng dẫn lets encrypt step by step wildcard

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).

sudoaptinstall 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.

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.

Hướng dẫn lets encrypt step by step wildcard

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.

Hướng dẫn lets encrypt step by step wildcard

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).