Cách nhận Let's Encrypt SSL Chứng chỉ bằng cách sử dụng Xác thực DNS Certbot CloudFlare

Cach Nhan Let S Encrypt Ssl Chung Chi Bang Cach Su Dung Xac Thuc Dns Certbot Cloudflare



Certbot là ứng dụng khách ACME dành cho tổ chức phát hành chứng chỉ Let's Encrypt (CA). Nó được sử dụng để tạo chứng chỉ SSL Let's Encrypt và tự động gia hạn. Theo mặc định, Certbot sử dụng thử thách Let's Encrypt HTTP-01 để xác minh quyền sở hữu miền và cấp chứng chỉ SSL cho miền. Nhưng thử thách HTTP-01 sẽ không hoạt động trừ khi bạn có địa chỉ IP công cộng và máy tính của bạn có thể truy cập được từ internet. Vì vậy, nếu bạn muốn sử dụng chứng chỉ SSL Let’s Encrypt cho mạng gia đình hoặc mạng riêng của mình, thay vào đó, bạn phải sử dụng thử thách DNS-01. Khi thử thách DNS-01 được sử dụng, Let’s Encrypt sẽ xác minh quyền sở hữu miền bằng máy chủ DNS của miền. Vì vậy, nó cũng hoạt động cho các mạng riêng.

Để được giải thích chi tiết về cách hoạt động của thử thách Let's Encrypt DNS-01 (hoặc xác thực DNS), hãy đọc bài viết có tựa đề Thử thách DNS-01 của Let's Encrypt là gì và Cách sử dụng nó để lấy chứng chỉ SSL.

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách sử dụng xác thực Let's Encrypt DNS để nhận chứng chỉ SSL cho tên miền của bạn bằng cách sử dụng plugin Certbot và Certbot CloudFlare DNS.







Chủ đề Nội dung:

  1. Quản lý tên miền của bạn với DNS CloudFlare
  2. Cài đặt Certbot và Certbot CloudFlare Plugin trên Ubuntu/Debian
  3. Cài đặt Certbot và Certbot CloudFlare Plugin trên Fedora
  4. Cài đặt Certbot và Certbot CloudFlare Plugin trên RHEL/AlmaLinux/Rocky Linux/CentOS Stream
  5. Kiểm tra xem Certbot và Certbot CloudFlare Plugin có được cài đặt chính xác không
  6. Tạo mã thông báo API CloudFlare
  7. Lưu trữ an toàn mã thông báo API CloudFlare trên máy tính/máy chủ
  8. Tạo chứng chỉ SSL bằng xác thực DNS Certbot CloudFlare
  9. Liệt kê các chứng chỉ SSL Let's Encrypt bằng Certbot
  10. Gia hạn chứng chỉ SSL Let's Encrypt bằng Certbot
  11. Phần kết luận
  12. Người giới thiệu

Quản lý tên miền của bạn với DNS CloudFlare

Để nhận Chứng chỉ SSL Let's Encrypt bằng xác thực DNS CloudFlare, bạn phải có tài khoản CloudFlare và miền của bạn phải sử dụng DNS CloudFlare. Bạn có thể tạo tài khoản CloudFlare miễn phí và dịch vụ DNS CloudFlare cũng được sử dụng miễn phí.



Để quản lý miền của bạn bằng CloudFlare DNS, bạn có thể thực hiện một trong các thao tác sau:



  • Đăng ký tên miền của bạn từ CloudFlare
  • Chuyển miền của bạn sang CloudFlare
  • Thay đổi máy chủ tên DNS của tên miền của bạn thành máy chủ tên DNS CloudFlare từ bảng điều khiển của nhà đăng ký tên miền của bạn

Bạn không cần phải mua miền từ CloudFlare hoặc chuyển miền sang CloudFlare để quản lý miền đó bằng dịch vụ DNS CloudFlare. Bạn chỉ có thể thay đổi máy chủ tên miền của mình thành máy chủ tên DNS CloudFlare từ bảng điều khiển của công ty đăng ký tên miền (nơi bạn đã mua tên miền từ đó) và quản lý tên miền của bạn từ CloudFlare. Để biết thêm thông tin về cách thay đổi máy chủ tên miền của bạn thành máy chủ tên DNS CloudFlare, hãy đọc bài viết này.





Cài đặt Certbot và Certbot CloudFlare Plugin trên Ubuntu/Debian

Plugin Certbot và Certbot CloudFlare có sẵn trong kho gói chính thức của Ubuntu/Debian. Vì vậy, bạn có thể cài đặt chúng trên Ubuntu/Debian rất dễ dàng.

Đầu tiên, cập nhật bộ đệm của kho lưu trữ gói APT bằng lệnh sau:



$ sudo cập nhật thích hợp

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Để cài đặt plugin Certbot và Certbot CloudFlare DNS, hãy chạy lệnh sau:

$ sudo đúng cách cài đặt certbot python3-certbot-dns-cloudflare

Để xác nhận cài đặt, nhấn “Y” rồi nhấn .

Certbot và plugin Certbot CloudFlare DNS đang được cài đặt. Phải mất một thời gian để hoàn thành.

Tại thời điểm này, nên cài đặt plugin Certbot và Certbot CloudFlare DNS.

Cài đặt Certbot và Certbot CloudFlare Plugin trên Fedora

Plugin Certbot và Certbot CloudFlare có sẵn trong kho gói chính thức của Fedora và có thể được cài đặt trên Fedora rất dễ dàng.

Đầu tiên, cập nhật cơ sở dữ liệu gói DNF bằng lệnh sau:

$ sudo bộ đệm dnf

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Để cài đặt plugin Certbot và Certbot CloudFlare DNS trên Fedora, hãy chạy lệnh sau:

$ sudo dnf cài đặt certbot python3-certbot-dns-cloudflare

Để xác nhận cài đặt, nhấn “Y” rồi nhấn .

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Certbot và plugin Certbot CloudFlare DNS đang được cài đặt. Phải mất một thời gian để hoàn thành.

  Ảnh chụp màn hình chương trình máy tính Mô tả được tạo tự động

Tại thời điểm này, plugin Certbot và Certbot CloudFlare DNS phải được cài đặt trên Fedora.

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Cài đặt Certbot và Certbot CloudFlare Plugin trên RHEL/AlmaLinux/Rocky Linux/CentOS Stream

Plugin Certbot CloudFlare DNS không có sẵn trong kho gói chính thức của RHEL/AlmaLinux/Rocky Linux/CentOS Stream. Plugin DNS Certbot CloudFlare có sẵn trong kho gói EPEL. Bạn có thể kích hoạt kho lưu trữ gói EPEL trên RHEL/AlmaLinux/Rocky Linux/CentOS Stream và cài đặt plugin DNS Certbot CloudFlare từ đó.

Sau khi bạn kích hoạt kho lưu trữ gói EPEL, hãy cập nhật bộ đệm cơ sở dữ liệu DNF bằng lệnh sau:

$ sudo bộ đệm dnf

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Sau đó, cài đặt plugin Certbot và Certbot CloudFlare DNS trên hệ thống RHEL/AlmaLinux/Rocky Linux/CentOS Stream của bạn bằng lệnh sau:

$ sudo dnf cài đặt certbot python3-certbot-dns-cloudflare

Để xác nhận cài đặt, nhấn “Y” rồi nhấn .

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Certbot và plugin Certbot CloudFlare DNS đang được cài đặt. Phải mất một thời gian để hoàn thành.

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Để chấp nhận khóa GPG của kho EPEL, nhấn “Y” rồi nhấn .

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Tại thời điểm này, nên cài đặt plugin Certbot và Certbot CloudFlare DNS.

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Kiểm tra xem Certbot và Certbot CloudFlare Plugin có được cài đặt chính xác không

Để kiểm tra xem Certbot đã được cài đặt trên máy tính của bạn chưa, hãy chạy lệnh sau:

$ certbot --phiên bản

Nếu Certbot được cài đặt, lệnh sẽ in số phiên bản của Certbot đã cài đặt trên máy tính của bạn.

Như bạn có thể thấy, chúng tôi đã cài đặt Certbot 2.1.0 trên máy Debian của mình.

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Để kiểm tra xem plugin Certbot CloudFlare DNS đã được cài đặt trên máy tính của bạn chưa, hãy chạy lệnh sau:

$ sudo plugin certbot

Nếu plugin DNS Certbot CloudFlare được cài đặt, bạn sẽ tìm thấy “dns-cloudflare” trong danh sách plugin như được đánh dấu trong ảnh chụp màn hình sau:

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Tạo mã thông báo API CloudFlare

Để xác minh quyền sở hữu miền, Certbot cần thêm bản ghi TXT trên miền được quản lý bởi máy chủ DNS CloudFlare. Để làm được điều đó, Certbot cần có quyền truy cập vào mã thông báo API CloudFlare. Bạn có thể tạo mã thông báo API cho miền của mình từ bảng điều khiển CloudFlare.

Đầu tiên, đăng nhập vào tài khoản CloudFlare của bạn. Sau đó, nhấp vào biểu tượng hồ sơ của bạn

> Thông tin của tôi từ góc trên bên phải của trang.

Điều hướng đến phần “Mã thông báo API” [1] và nhấp vào “Tạo mã thông báo” [2] .

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Nhấp vào “Sử dụng mẫu” từ phần “Chỉnh sửa DNS vùng”.

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Từ phần “Quyền”, cho phép quyền “Chỉnh sửa” đối với “Vùng DNS” bằng cách chọn các tùy chọn được đánh dấu từ menu thả xuống.

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Nếu bạn đang quản lý nhiều miền bằng CloudFlare, bạn có thể cho phép sửa đổi “Vùng cụ thể” từ phần “Tài nguyên vùng”. Việc cho phép mã thông báo API chỉ sửa đổi một vùng duy nhất sẽ an toàn hơn việc cho phép mã thông báo API sửa đổi tất cả các vùng. Điều này là do nếu mã thông báo API bị xâm phạm, bề mặt tấn công sẽ nhỏ hơn và gây ra ít thiệt hại hơn.

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Nếu bạn muốn sử dụng một khóa API duy nhất để sửa đổi tất cả các miền do CloudFlare quản lý, hãy chọn “Tất cả các vùng” từ phần “Tài nguyên vùng”.

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Sau khi bạn hoàn tất việc định cấu hình mã thông báo API của mình, hãy nhấp vào “Tiếp tục tóm tắt”.

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Bản tóm tắt các hành động mà bạn có thể thực hiện trên các miền do CloudFlare quản lý bằng mã thông báo API sẽ được hiển thị. Nhấp vào “Tạo mã thông báo”.

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Mã thông báo API sẽ được tạo. Sao chép mã thông báo API ở nơi an toàn để bạn không bị mất. Sau khi rời khỏi trang này, bạn sẽ không thể tìm lại mã thông báo API này. Bạn phải tạo mã thông báo API mới trong trường hợp bạn mất nó:

LyPCAcOBygX1UMHvcsvBFo41aItm2cCVxnjloZj5

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Lưu trữ an toàn mã thông báo API CloudFlare trên máy tính/máy chủ

Certbot cần sử dụng mã thông báo API CloudFlare để thêm bản ghi TXT mới cho miền của bạn trong máy chủ DNS CloudFlare. Vì vậy, bạn phải lưu trữ mã thông báo API CloudFlare trên máy tính/máy chủ của mình. Việc lưu trữ mã thông báo API mà không đảm bảo quyền truy cập tệp thích hợp có thể cho phép các chương trình/người dùng khác có quyền truy cập vào mã thông báo API. Đây không phải là điều bạn muốn vì lý do bảo mật. Trong phần này, chúng tôi sẽ hướng dẫn bạn cách lưu trữ mã thông báo API CloudFlare một cách an toàn trên hệ thống tệp.

Đầu tiên, tạo một thư mục (tức là ~/.secrets/certbot) nơi bạn muốn lưu trữ khóa API CloudFlare như sau:

$ mkdir -pv ~ / .bí mật / certbot

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Tạo tệp “cloudflare.ini” trong thư mục mới tạo (tức là ~/.secrets/certbot) và mở tệp đó bằng trình soạn thảo văn bản yêu thích của bạn (tức là nano) như sau:

$ nano ~ / .bí mật / certbot / cloudflare.ini

Nhập dòng sau vào tệp “cloudflare.ini” và nhấn + X theo sau là “Y” và để lưu nó (nếu bạn đang sử dụng trình soạn thảo văn bản nano).

dns_cloudflare_api_token = < mã thông báo-cloudflare-api-của bạn >

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Để đảm bảo quyền truy cập thích hợp cho tệp “cloudflare.ini”, hãy chạy các lệnh sau để đảm bảo rằng chỉ người dùng root mới có quyền truy cập đọc và ghi vào tệp:

$ sudo chown gốc:gốc ~ / .bí mật / certbot / cloudflare.ini

$ sudo chmod 0600 ~ / .bí mật / certbot / cloudflare.ini

Như bạn có thể thấy, chỉ người dùng root mới có quyền đọc và ghi đối với tệp “cloudflare.ini”.

$ ls -lh ~ / .bí mật / certbot / cloudflare.ini

Những người dùng khác cố đọc tệp “cloudflare.ini” sẽ nhận được thông báo lỗi “Quyền bị từ chối”.

$ con mèo ~ / .bí mật / certbot / cloudflare.ini

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Tạo chứng chỉ SSL bằng xác thực DNS Certbot CloudFlare

Để tạo chứng chỉ SSL Let's Encrypt cho tên miền ký tự đại diện “*.nodekite.com” bằng cách sử dụng xác thực DNS CloudFlare, hãy chạy lệnh cerbot như sau:

$ sudo chỉ có chứng chỉ certbot --dns-cloudflare --dns-cloudflare-thông tin xác thực ~ / .bí mật / certbot / cloudflare.ini -d * .nodekite.com

Để tạo chứng chỉ SSL Let's Encrypt cho tên miền “nodekite.com” và “www.nodekite.com” using the CloudFlare DNS validation, use the “-d” option of the certbot command for each domain name as follows:

$ sudo chỉ có chứng chỉ certbot --dns-cloudflare --dns-cloudflare-thông tin xác thực ~ / .bí mật / certbot / cloudflare.ini -d www.nodekite.com -d nodekite.com

Nếu các thay đổi DNS mất nhiều thời gian để truyền đến các máy chủ tên DNS phổ biến trên toàn thế giới, bạn có thể sử dụng tùy chọn “–dns-cloudflare-propagation-seconds” của Certbot để đặt số giây mà bạn muốn Certbot đợi trước khi xác thực DNS được thực hiện.

$ sudo chỉ có chứng chỉ certbot --dns-cloudflare --dns-cloudflare-thông tin xác thực ~ / .bí mật / certbot / cloudflare.ini --dns-cloudflare-propagation-giây 60 -d * .nodekite.com

Khi bạn chạy lệnh Certbot, bạn sẽ được yêu cầu nhập địa chỉ email của mình. Nhập địa chỉ email của bạn và nhấn để tiếp tục.

Nhấn “Y” rồi nhấn để chấp nhận “Điều khoản dịch vụ” của Let's Encrypt.

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Nhấn “Y” rồi nhấn .

  Ảnh chụp màn hình chương trình máy tính Mô tả được tạo tự động

Chứng chỉ SSL Let's Encrypt đang được cấp. Phải mất một thời gian để hoàn thành.

  Ảnh chụp màn hình lỗi máy tính Mô tả được tạo tự động

Tại thời điểm này, chứng chỉ SSL Let’s Encrypt đã được cấp. Đường dẫn đầy đủ nơi lưu tệp chứng chỉ SSL sẽ được hiển thị. Ngày hết hạn của chứng chỉ SSL cũng sẽ được hiển thị.

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Liệt kê các chứng chỉ SSL Let's Encrypt bằng Certbot

Bạn có thể liệt kê tất cả các chứng chỉ SSL Let’s Encrypt mà bạn đã tạo bằng Certbot bằng lệnh sau:

$ sudo chứng chỉ certbot

Như bạn có thể thấy, chứng chỉ SSL Let’s Encrypt được tạo cho miền “nodekite.com” đã được liệt kê [1] . Chứng chỉ SSL ký tự đại diện được cấp cho “nodekite.com” [2] tên miền. Ngày hết hạn của chứng chỉ là 2024-03-20 (có giá trị trong 89 ngày) [3] . Chứng chỉ và đường dẫn khóa riêng cũng được liệt kê ở đây [4] .

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Certbot lưu trữ tất cả chứng chỉ SSL mà bạn đã tạo cho miền của mình trong thư mục “/etc/letsencrypt/live” trong thư mục tương ứng của chúng.

$ sudo ls -Rlh / vân vân / Letsencrypt / sống /

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Gia hạn chứng chỉ SSL Let's Encrypt bằng Certbot

Certbot tự động gia hạn tất cả các chứng chỉ SSL Let's Encrypt mà bạn đã tạo bằng xác thực DNS CloudFlare.

Để kiểm tra xem tính năng tự động gia hạn của chứng chỉ SSL Let’s Encrypt có hoạt động hay không, hãy chạy lệnh sau:

$ sudo gia hạn certbot --chạy khô

Hành động tự động gia hạn được mô phỏng cho từng chứng chỉ SSL Let's Encrypt mà bạn đã tạo.

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Nếu các bài kiểm tra thành công, bạn sẽ được chúc mừng. Thử nghiệm thành công có nghĩa là chứng chỉ SSL sẽ được tự động gia hạn trước khi hết hạn. Bạn sẽ không phải làm bất cứ điều gì khác.

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Để tính năng tự động gia hạn của Certbot hoạt động, bộ hẹn giờ hệ thống “cerbot.timer” phải được bật và hoạt động trên máy tính/máy chủ của bạn.

Bạn có thể kiểm tra xem bộ hẹn giờ systemd “cerbot.timer” có được bật và hoạt động hay không bằng lệnh sau:

$ sudo trạng thái systemctl certbot.timer

Như bạn có thể thấy, bộ đếm thời gian systemd “certbot.timer” đã được bật (tự động khởi động khi khởi động) [1] và hoạt động [2] . Certbot kiểm tra xem có cần gia hạn bất kỳ chứng chỉ SSL nào chỉ sau 11 phút hay không (theo ảnh chụp màn hình sau) và gia hạn các chứng chỉ SSL sắp hết hạn [3] .

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Để kiểm tra thủ công xem có chứng chỉ SSL nào sắp hết hạn hay không và gia hạn chứng chỉ SSL sắp hết hạn, hãy chạy lệnh sau:

$ sudo gia hạn certbot

Trong trường hợp của chúng tôi, không có chứng chỉ SSL nào sắp hết hạn. Vì vậy, Certbot đã không cố gắng gia hạn bất kỳ chứng chỉ SSL nào.

Để buộc Certbot gia hạn chứng chỉ SSL của một miền cụ thể (giả sử *.nodekite.com), hãy chạy lệnh sau:

$ sudo chỉ có chứng chỉ certbot --bắt buộc gia hạn -d * .nodekite.com

Nhấn “1” và nhấn để chọn tùy chọn đầu tiên (để xác thực DNS bằng CloudFlare DNS).

  Ảnh chụp màn hình máy tính Mô tả được tạo tự động

Chứng chỉ SSL phải được gia hạn.

Phần kết luận

Để nhận chứng chỉ SSL Let's Encrypt bằng cách sử dụng xác thực DNS CloudFlare bằng Certbot, bạn cần có quyền truy cập vào mã thông báo API CloudFlare. Trong bài viết này, chúng tôi đã hướng dẫn bạn cách tạo mã thông báo API CloudFlare cho miền của bạn và lưu trữ nó một cách an toàn trên máy tính/máy chủ để bạn có thể truy cập nó bằng Certbot khi cần. Chúng tôi cũng đã hướng dẫn bạn cách cài đặt Certbot và plugin DNS Certbot CloudFlare trên các bản phân phối Linux phổ biến nhất. Chúng tôi đã chỉ cho bạn cách tạo chứng chỉ SSL ký tự đại diện Let's Encrypt cũng như chứng chỉ SSL cho các tên miền đơn lẻ bằng cách sử dụng xác thực DNS của Certbot và CloudFlare. Cuối cùng, chúng tôi đã hướng dẫn bạn cách gia hạn chứng chỉ SSL Let’s Encrypt bằng Certbot một cách tự động và thủ công.

Người giới thiệu: