Để đượ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:
- Quản lý tên miền của bạn với DNS CloudFlare
- Cài đặt Certbot và Certbot CloudFlare Plugin trên Ubuntu/Debian
- Cài đặt Certbot và Certbot CloudFlare Plugin trên Fedora
- Cài đặt Certbot và Certbot CloudFlare Plugin trên RHEL/AlmaLinux/Rocky Linux/CentOS Stream
- Kiểm tra xem Certbot và Certbot CloudFlare Plugin có được cài đặt chính xác không
- Tạo mã thông báo API CloudFlare
- Lưu trữ an toàn mã thông báo API CloudFlare trên máy tính/máy chủ
- Tạo chứng chỉ SSL bằng xác thực DNS Certbot CloudFlare
- Liệt kê các chứng chỉ SSL Let's Encrypt bằng Certbot
- Gia hạn chứng chỉ SSL Let's Encrypt bằng Certbot
- Phần kết luận
- 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
Để 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
Để 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
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, plugin Certbot và Certbot CloudFlare DNS phải được cài đặt trên Fedora.
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
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
Certbot và plugin Certbot CloudFlare DNS đang được cài đặt. Phải mất một thời gian để hoàn thành.
Để chấp nhận khóa GPG của kho EPEL, nhấn “Y” rồi nhấn
Tại thời điểm này, nên cài đặt plugin Certbot và Certbot CloudFlare DNS.
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ảnNế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.
Để 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 certbotNế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:
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ấp vào “Sử dụng mẫu” từ phần “Chỉnh sửa DNS vù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.
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.
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”.
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”.
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”.
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
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
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
Để đả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
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.comNế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
Nhấn “Y” rồi nhấn
Nhấn “Y” rồi nhấn
Chứng chỉ SSL Let's Encrypt đang được cấp. Phải mất một thời gian để hoàn thành.
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ị.
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ỉ certbotNhư 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] .
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 /
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.
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.
Để 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.timerNhư 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] .
Để 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 certbotTrong 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ứ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.