Trang chủ Security

Tổng quan về HTTPS và chứng chỉ SSL tại Let's encrypt

Tổng quan về HTTPS và chứng chỉ SSL tại Let's encrypt

Cài SSL cho Website đem lại khá nhiều lợi ích: vừa đảm bảo dữ liệu truyền đi trên internet được mã hóa an toàn, đồng thời giúp nâng tầm thương hiệu đặc biệt với những website thương mại điện tử.

Bạn có thể nhận biết dấu hiệu một website được cài SSL, đó là thanh địa chỉ (Address Bar) có hình ổ khóa, cả chữ và ổ khóa đều mang màu xanh. Lợi ích là vậy, tuy nhiên với những web blog nhỏ, việc đầu tư một khoản tiền xấp xỉ trăm $ để mua SSL cho cả domain và subdomain (SSL Wildcard) thật sự là khoản đầu tư lớn, đáng phải suy nghĩ.

Trước tiên, chúng ta cùng tìm hiểu về giao thức HTTPS và Let's Encrypt dưới đây.

1. Cách thức hoạt động của HTTPS

HTTPS là gì?

HTTPS (Hyper Text Transfer Protocol Secure) là sự kết hợp của giao thức SSL và HTTP. Nếu bạn nhận được thông tin rằng trang web đang dùng SSL, tức đang nói về HTTPS.

Để tạo được một kết nối HTTPS, cần thiết phải có 3 thành phần tham gia sau: ClientWeb ServerCA.

- Trong đó:

Client: các trình duyệt web như Chrome, Firefox…

Web Server: máy chủ chạy Website bạn muốn truy cập, thường là Nginx, Apache…

CA: đơn vị cung cấp chứng chỉ SSL.

Trong hệ thống phân cấp CA, đứng cao nhất là Root CA, tiếp theo là Intermediate CA. Một số CA nổi tiếng có thể kể tên như Comodo, RapidSSL, GeoTrust, Symantec… Ngoài việc bán SSL Certificate cho Web Server, nó còn có chức năng thẩm định tính hợp lệ của chứng chỉ cấp cho Web Server khi Client yêu cầu.

HTTPS làm việc như thế nào?

Bước 1: Client gửi request bằng cách nhập Address Bar trên trình duyệt https://thuysys.xyz

Bước 2: Web Server nhận được request và gửi lại cho Client certificate của nó và Public Key. Public Key này được sinh ra từ Private Key của Web Server.

Bước 3: Client nhận được certificate sẽ lấy thông tin về CA trong certificate, ví dụ CA – Comodo. Sau đó Client kết nối đến Comodo xác nhận (verify) thông tin về Web Server bao gồm IP, Domain, Address, Valid

Nếu thông tin chính xác, Client sẽ sinh ra một khóa khác gọi là Session Key để sau này mã hóa dữ liệu truyền đi giữa Client – Web Server. Đồng thời dùng Public Key mã hóa thông tin và Session Key gửi ngược lại Web Server.

Bước 4: Web Server nhận được gói tin dùng Private Key giải mã lấy ra Session Key và dùng nó để mã hóa dữ liệu trao đổi giữa Client – Web Server sau này.

Trên đây là toàn bộ hoạt động của HTTPS. Khi trang web dùng HTTPS mà gặp lỗi bạn có thể áp dụng nguyên tắc trên có thể phán đoán được phần nào nguyên nhân gây lỗi SSL, VD: lỗi không hiện ổ khóa màu xanh.

Tổng quan về HTTPS và chứng chỉ SSL tại Lets encrypt - Ảnh 1.


Nguyên nhân:

- Client không verify được với CA như Bước 3 ở trên, thường do cấu hình Web Server không đúng hoặc chứng chỉ đã hết hạn (expired). 

- Cũng có thể đây là chứng chỉ dạng tự cấp do chính bạn tạo ra hay còn gọi là Self-Signed SSL Certificate được dùng trong nội bộ doanh nghiệp. 

- Hoặc trang web của bạn chứa link HTTP (Link trỏ đến trang web dùng HTTP, link hình ảnh cũ được upload trước đây vẫn dùng HTTP).

2. Tỉm hiểu về LEST'S ENCRYPT

Tổng quan về Let's Encrypt

Trước hết, Let's Encrypt ra đời để giải quyết vấn đề một cách dễ dàng hơn rất nhiều, nhằm cung cấp cho người dùng một Open Certificate chất lượng mà hoàn toàn Free, tạo ra môi trường internet bảo mật hơn. Bởi theo thống kê của Mozilla hiện có đến 60% giao dịch trực tuyến không sử dụng HTTPS. Đồng thời thời tự động hoá cách thức vận hành và sử dụng chứng chỉ SSL truyền thống, tránh sự rườm rà như trước đây.

Let's Encrypt là tổ chức lớn, được hỗ trợ bởi nhiều đại gia công nghệ như Facebook, Chrome, Mozilla… Ra đời mới từ 3/12/2015, Let's Encrypt hiện đang là đơn vị cung chứng chỉ SSL miễn phí uy tín, có tốc độ tăng trưởng khổng lồ, chưa đầy 1 năm đã có gần 5 triệu domain sử dụng.

Let's Encrypt là một CA cung cấp chứng chỉ SSL dạng Domain Validation. Nghĩa là người dùng không cần giấy tờ xác minh công ty, tổ chức, chỉ cần domain là đủ. Điều này rất có ý nghĩa với những website nhỏ, những website này khó có thể đáp ứng được việc cung cấp giấy tờ xác minh.

Tổng quan về HTTPS và chứng chỉ SSL tại Lets encrypt - Ảnh 2.


Đặc điểm của chứng chỉ LET'S ENCRYPT

- Đầu tiên phải kể tới đặc điểm nổi bật, đó là Free (miễn phí). 

- Dùng cho nhiều Domain dạng Wildcard, do đó không giới hạn domain/subdomain.

- Thanh địa chỉ với hình ổ khoá màu xanh. 

- Cài đặt đơn giản và chỉ cần xác mình Domain.  

- Gia hạn sau 90 ngày, đây là hạn chế của Let's Encrypt, tuy nhiên bạn hoàn toàn vẫn có thể renew chứng chỉ.

Hạn mức

- Names/ Certificate quy định bạn chỉ có thể dùng tối đa 100 domain hoặc website trên một chứng chỉ. 

- Certificates/Domain cùng một domain chỉ có thể dùng tối đa 20 chứng chỉ mỗi tuần.

- Certificates/FQDNset với domain chính xác dạng FQDN (Fully Qualified Domain Names), bị giới hạn 05 chứng chỉ một tuần. 

- Registrations/IP address mỗi IP chỉ được đăng ký tối đa 500 lần trong 3 giờ. 

- Pending Authorizations/Account dành cho những khách hàng ACME, họ có thể nhận được sự ủy quyền tối đa 300 account mỗi tuần.

3. Cơ chế hoạt động của LET'S ENCRYPT

Cách lấy chứng chỉ tại Let's Encrypt khác với việc mua chứng chỉ trên website của các CA mà bạn từng biết. Bạn phải kết nối đến Let's Encrypt Server để lấy chứng chỉ bằng một công cụ gọi là Let's Encrypt Client.

Nhờ Let's Encrypt Client mà việc cài đặt, cấu hình chứng chỉ SSL diễn ra hoàn toàn tự động mà không cần gửi/ nhận mail qua lại mất thời gian như trước.

Những Client có thể làm việc này: Certbot, Letsencrypt.sh (Bash), Lua-resty-auto-ssl (nginx), AcmePHP (PHP), Let's ACME (Python) …

Để tự động quá trình sử dụng cũng như gia hạn (renewal), thu hồi (revoke), đăng ký mới (register) trên các loại Web Server khác nhau, Let's Encrypt Client thường được kêt hợp với một số Plugin sau đây:

- Apache được dùng với các Web Server Apache để nhận và install chứng chỉ một cách tự động. 

- Webroot plugin, phù hợp khi Web Server và Let's Encrypt Client chạy trên cùng một máy. Plugin này dùng tốt nhất cho người sử dụng VPS. 

- Standalone dùng khi Web Server nằm trên một máy chủ khác. Bởi plugin này sẽ chiếm dụng Port 80/443 khi dùng dấn đến Web Server sẽ bị gián đoạn. 

- Nginx dùng cho Web Server nginx

4. Sự khác biệt giữa chứng chỉ trả phí và miễn phí (free).

Trong thực tế dùng có thể nhận thấy sự khác nhau lớn nhất giữa chứng chỉ trả phí và chứng chỉ Free Let's Encrypt là việc phải gia hạn chứng chỉ sau 90 ngày (bạn có thể tạo Cron Job để tự động gia hạn chứng chỉ).

Cài đặt chứng chỉ Let's Encrypt đời hỏi bạn phải biết sử dụng máy chủ hay VPS.

Ngoài ra còn có thông tin cho rằng chứng chỉ miễn phí này không tương thích với nhiều trình duyệt.

Tuy nhiên có thể thấy rằng, những hạn chế đó là hoàn toàn chấp nhận được. 

5. Kết luận

Hiện nay, xu hướng đang dịch chuyển sang sử dụng Let's Encypt ngày càng nhiều.

Let's Encrypt thực sự là một nhà cung cấp chứng chỉ SSL miễn phí đáng sử dụng, vì vậy bạn nên nghiên cứu và áp dụng ngay cho website của mình. Với sự hỗ trợ của Let's Encrypt Client & Plugin nên việc triển khai chữ ký số trở nên đơn giản đi rất nhiều.

Cảm ơn các bạn đã theo dõi bài viết!