Giới thiệu HTTPS và chứng chỉ SSL tại Let’s Encrypt

Bài này chúng ta sẽ cùng tìm hiểu về HTTPS và chữ ký số tại Let’s Encrypt một CA – Certificate Authority cung cấp SSL Certificate miễn phí mới ra đời năm 2015.

Bởi gần đây google đã tăng tín nhiệm với những website sử dụng chứng chỉ SSL và phân biệt rõ ràng website dùng SSL trên trình duyệt Chrome. Cộng đồng webmaster đang rất nóng với thông tin này nên mình cũng vọc vạch một chút xem sao.

Website sử dụng SSL/TLS ngoài việc để đảm bảo dữ liệu truyền đi trên internet được mã hóa an toàn, đặc biệt với trang web thương mại điện tử. Nó còn giải quyết khâu oai và nâng tầm thương hiệu nữa. Khi truy cập trang web nào đó nhìn thanh địa chỉ (Address Bar) có hình cái khóa màu xanh là khoái rồi. Nhìn thì đẹp thật nhưng với những web blog nhỏ việc đầu tư một khoản tiền cả trăm $ mua SSL cho cả domain và subdomain (SSL Wildcard) là khoản đầu tư lớn đáng phải suy nghĩ.

Để bắt đầu, chúng ta cùng tìm hiểu về giao thức HTTPS sau đó mình sẽ nói về Let’s Encrypt sau.

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

Mình vắn tắt như này.

HTTPS là sự kết hợp của giao thức SSL và HTTP,  hoạt động nhờ sự phối hợp nhịp nhàng giữa ClientWeb ServerCA.

Trong đó:

  • Client là các trình duyệt web như Chrome, Firefox…
  • Web Server chính là Nginx, Apache… mà Client sẽ truy cập khi muốn vào một trang web nào đó.
  • CA – Certificate Authority hiểu là đơ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 như 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.

Một phiên làm việc của HTTPS diễn ra như sau:

  • 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 nó sẽ lấy thông tin về CA trong certificate ví dụ CA – Comodo chẳng hạn. 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 tạm là Key1 để 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à Key1 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ã thông tin nhận được để lấy ra Key1 và dùng Key1 để mã hóa dữ liệu trao đổi giữa Client – Web Server.

Một phiên HTTPS trọn vẹn chỉ có vậy. Cứ ốp nguyên tắc hoạt động HTTPS ở trên, khi sử dụng SSL Certificate gặp lỗi như hình bên dưới bạn cũng dễ dàng xác định được nguyên nhân lỗi.

HTTPS Error

Lỗi HTTPS

Nguyên nhân chủ yếu do

  • 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ó khi đây là chứng chỉ dạng tự cung 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.

Đại khái HTTPS chạy như vậy, giờ cúng ta tìm hiểu tiếp Let’s Encrypt là gì ?

2. Tìm hiểu Lest’s Encrypt

Trước hết, Let’s Encrypt ra đời để giải quyết vấn đề “ngon bổ rẻ”, cung cấp cho người dùng một Open Certificate chất lượng mà hoàn toàn Free nhằm 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, không còn rườm rà như trước nữa.

Let’s Encrypt là tổ chức lớn, được hỗ trợ bởi nhiều đại gia công nghệ 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, 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ỉ 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 khuyến khích người sử dụng bởi những blog cùi như thuysys.com thì hơi đâu mà cung cấp giấy tờ xác minh.

Let's Encrypt làm việc thế nào

Đặc điểm chứng chỉ Let’s Encrypt

  • Chứng chỉ SSL Free, hiển nhiên rồi.
  • Dùng cho nhiều Domain dạng Wildcard về cơ bản là không giới hạn domain/subdomain.
  • Thanh địa chỉ với hình cái khoá màu xanh, tuyệt vời.
  • Chỉ cần xác mình Domain.
  • Cài đặt đơn giản.
  • Gia hạn sau 90 ngày, đây là hạn chế của Let’s Encrypt, nhưng bạn hoàn toà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 bạn 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. Ví dụ www.thuysys.com và blog.thuysys.com được tính là hai FQDN.
  • 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.

Mình thì chưa dùng nhiều Let’s Encrypt nên chưa có trải nghiệm về những hạn mức này, bạn nào đã dùng rồi thì comment phổ biến cho anh em phát.

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 nữa.

Có nhiều 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 các Plugin.

  • apache được dùng với các Web Server Apache để nhận và installers chứng chỉ một cách tự động.
  • webroot plugin này phù hợp khi Web Server và Let’s Encrypt Client chạy trên cùng một máy. Theo mình bạn nào chạy VPS dùng plugin này tốt nhất.
  • 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.
  • manual cái này chắc không dùng vì phải làm thủ công hơi oải.
  • nginx dùng cho Web Server nginx, cơ mà nó đang thử nghiệm nên không sài là hơn.

Trên đây mình đã cung cập một số thông tin cơ bản về HTTPS và tổng quan về Let’s Encrypt cho các bạn.

Let’s Encrypt thực sự là một nhà cung cấp chứng chỉ SSL miễn phí mà bạn nên nghiên cứu và dùng cho web site của mình. Với sự hỗ trợ của Let’s Encrypt Client & Plugin việc triển khai chữ ký số trở nên đơn giản đi rất nhiều. Thời gian tới mình sẽ hướng dẫn các bạn cấu hình SSL trên những Web Server cụ thể, các bạn đón đọc nhé.

Chào tạm biệt.

One Response

  1. Hoang December 2, 2016 Reply

Leave a Reply