Thứ tư, 19/07/2017 | 00:00 GMT+7

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

Let's Encrypt là tổ chức phát hành certificate mở và tự động sử dụng giao thức ACME (Môi trường quản lý certificate tự động) để cung cấp certificate TLS / SSL miễn phí cho bất kỳ ứng dụng client tương thích nào. Các certificate này được dùng để mã hóa giao tiếp giữa web server và user của bạn. Có hàng tá ứng dụng client có sẵn, được viết bằng nhiều ngôn ngữ lập trình khác nhau và nhiều tích hợp với các công cụ, dịch vụ và server quản trị phổ biến.

Ứng dụng khách ACME phổ biến nhất, Certbot , hiện được phát triển bởi Electronic Frontier Foundation . Ngoài việc xác minh quyền sở hữu domain và tìm nạp certificate , Certbot có thể tự động cấu hình TLS / SSL trên cả web server ApacheNginx .

Hướng dẫn này sẽ thảo luận ngắn gọn về các tổ chức phát hành certificate và cách Let's Encrypt hoạt động, sau đó xem xét một số ứng dụng ACME phổ biến.

Cơ quan cấp certificate là gì?

Tổ chức phát hành certificate (CA) là các thực thể ký mã hóa certificate TLS / SSL đảm bảo tính xác thực của chúng. Các trình duyệt và hệ điều hành có một danh sách các CA tin cậy mà họ sử dụng để xác minh certificate trang web.

Cho đến gần đây, hầu hết các CA là hoạt động thương mại thu phí dịch vụ xác minh và ký kết của họ. Let's Encrypt đã làm cho quy trình này miễn phí cho user bằng cách tự động hóa hoàn toàn quy trình và dựa vào sự tài trợ và quyên góp để tài trợ cho cơ sở hạ tầng cần thiết.

Để biết thêm thông tin về certificate và các loại tổ chức phát hành certificate khác nhau, bạn có thể đọc “ So sánh giữa Let's Encrypt, Tổ chức phát hành certificate thương mại và cá nhân, và certificate SSL tự ký ”.

Tiếp theo, ta sẽ xem xét cách Let's Encrypt thực hiện xác minh domain tự động.

Cách hoạt động của Let's Encrypt

Giao thức ACME của Let's Encrypt xác định cách khách hàng giao tiếp với server của nó để certificate request , xác minh quyền sở hữu domain và download certificate . Nó hiện đang trong quá trình trở thành một tiêu chuẩn chính thức của IETF .

Let's Encrypt cung cấp các certificate đã được xác thực domain , nghĩa là họ phải kiểm tra xem certificate request có đến từ một người thực sự kiểm soát domain hay không. Họ thực hiện điều này bằng cách gửi cho khách hàng một mã thông báo duy nhất, sau đó thực hiện một web hoặc yêu cầu DNS để truy xuất khóa bắt nguồn từ mã thông báo đó.

Ví dụ: với thử thách dựa trên HTTP, client sẽ tính khóa từ mã thông báo duy nhất và mã thông báo account , sau đó đặt kết quả vào một file để web server cung cấp. Server Let's Encrypt sau đó truy xuất file tại http:// example.com /.well-known/acme-challenge/ token . Nếu khóa chính xác, client đã chứng minh rằng nó có thể kiểm soát tài nguyên trên example.com và server sẽ ký và trả lại certificate .

Giao thức ACME xác định nhiều thách thức mà khách hàng của bạn có thể sử dụng để chứng minh quyền sở hữu domain . Thử thách HTTPS tương tự như HTTP, ngoại trừ thay vì file văn bản, ứng dụng client sẽ cung cấp certificate tự ký có khóa đi kèm. Thử thách DNS tìm kiếm khóa trong bản ghi TXT DNS.

Certbot Let's Encrypt Client

Certbot cho đến nay là ứng dụng Let's Encrypt phổ biến nhất. Nó có trong hầu hết các bản phân phối Linux chính và bao gồm khả năng cấu hình tự động thuận tiện cho Apache và Nginx. Sau khi cài đặt, việc tìm nạp certificate và cập nhật cấu hình Apache của bạn có thể được thực hiện như sau:

  • sudo certbot --apache -d www.example.com

Certbot sẽ hỏi một số câu hỏi, chạy thử thách, download certificate , cập nhật cấu hình Apache của bạn và reload server . Sau đó, bạn có thể chuyển đến https:// www.example.com bằng trình duyệt web của bạn . Khóa màu xanh lục sẽ xuất hiện cho biết certificate hợp lệ và kết nối được mã hóa.

Vì certificate Let's Encrypt chỉ có giá trị trong chín mươi ngày, nên điều quan trọng là phải cài đặt quy trình gia hạn tự động. Lệnh sau sẽ gia hạn tất cả các certificate trên máy:

  • sudo certbot renew

Đặt lệnh trên vào crontab để chạy nó hàng ngày và các certificate sẽ tự động được gia hạn ba mươi ngày trước khi hết hạn. Nếu giấy chứng nhận ban đầu được tạo ra với các --apache hoặc --nginx tùy chọn, Certbot sẽ reload server sau khi một cuộc canh tân thành công.

Nếu bạn muốn tìm hiểu thêm về cron và crontabs, vui lòng tham khảo hướng dẫn “ Cách sử dụng Cron để tự động hóa công việc .”

Khách hàng khác

Bởi vì giao thức ACME là mở và được ghi chép đầy đủ, nhiều ứng dụng client thay thế đã được phát triển. Let's Encrypt duy trì một danh sách các khách hàng ACME trên trang web của họ. Hầu hết các ứng dụng client khác không có các tính năng cấu hình web server tự động của Certbot, nhưng chúng có các tính năng khác có thể thu hút bạn:

  • Có một ứng dụng client được viết bằng hầu hết mọi ngôn ngữ lập trình, bao gồm các tập lệnh shell, Go và Node.js. Điều này có thể quan trọng nếu bạn đang tạo certificate trong một môi trường hạn chế và không muốn bao gồm Python và các phụ thuộc Certbot khác
  • Một số client có thể chạy mà không có quyền root . Nói chung, bạn nên chạy số lượng mã quyền ít nhất có thể
  • Nhiều ứng dụng client có thể tự động hóa thử thách dựa trên DNS bằng cách sử dụng API của nhà cung cấp DNS của bạn để tự động tạo bản ghi TXT thích hợp. Thử thách DNS cho phép một số trường hợp sử dụng phức tạp hơn như mã hóa các web server không thể truy cập .
  • Một số client thực sự được tích hợp vào web server , Reverse Proxy hoặc bộ cân bằng tải, giúp việc cấu hình và triển khai trở nên dễ dàng hơn

Một số khách hàng phổ biến hơn là:

  • lego : Được viết bằng Go, lego là bản cài đặt binary một file và hỗ trợ nhiều nhà cung cấp DNS khi sử dụng thử thách DNS
  • acme.sh : acme.sh là một tập lệnh shell đơn giản có thể chạy ở chế độ không quyền và cũng tương tác với hơn 30 nhà cung cấp DNS
  • Caddy : Caddy là một web server đầy đủ được viết bằng Go với hỗ trợ tích hợp cho Let's Encrypt.

Có nhiều ứng dụng client hơn và nhiều server và dịch vụ khác đang tự động cài đặt TLS / SSL bằng cách tích hợp hỗ trợ Let's Encrypt.

Kết luận

Ta đã đi qua những kiến thức cơ bản về cách Let's Encrypt hoạt động và thảo luận về một số phần mềm ứng dụng client có sẵn. Nếu bạn muốn có hướng dẫn chi tiết hơn về cách sử dụng Let's Encrypt với các phần mềm khác nhau, các hướng dẫn sau đây là một nơi tốt để tham khảo :


Tags:

Các tin liên quan