JABZ7SHOP : Web Selling Things With Cheap Price : https://jabz7shop.blogspot.com/ : Go To My Shop Online Now
Bài đăng

Cách sử dụng Standalone Mode của Certbot để truy xuất chứng chỉ SSL Let's Encrypt trên Ubuntu 20.04

Giới thiệu

Let’s Encrypt là dịch vụ cung cấp chứng chỉ SSL miễn phí thông qua một API tự động. Ứng dụng Let’s Encrypt phổ biến nhất là EFF’s Certbot.

Certbot cung cấp nhiều cách khác nhau để xác thực miền của bạn, lấy chứng chỉ và tự động thiết lập cấu hình Apache và Nginx. Trong hướng dẫn này, chúng ta sẽ thảo luận về Standalone Mode của Certbot và cách sử dụng nó để bảo mật các loại dịch vụ khác, chẳng hạn như mail server hoặc message broker như RabbitMQ.

Chúng tôi sẽ không thảo luận về chi tiết của cấu hình SSL, nhưng khi bạn hoàn tất, bạn sẽ có một chứng chỉ hợp lệ được tự động gia hạn. Ngoài ra, bạn sẽ có thể tự động tải lại dịch vụ của mình để nhận chứng chỉ đã được gia hạn.

Điều kiện

Trước khi bắt đầu với hướng dẫn này, bạn sẽ cần:

  • Máy chủ Ubuntu 20.04 với non-root user có đặc quyền sudo và thiết lập tường lửa cơ bản, như được trình bày chi tiết trong Hướng dẫn thiết lập máy chủ Ubuntu 20.04.
  • Một tên miền đã trỏ đến máy chủ của bạn. Nếu bạn đang sử dụng CloudFly Droplet, bạn có thể thực hiện điều này bằng cách làm theo tài liệu Tên miền và DNS của chúng tôi. Hướng dẫn này sẽ sử dụng your_domain xuyên suốt.
  • Cổng 80 hoặc 443 không được sử dụng trên máy chủ của bạn. Nếu dịch vụ bạn đang cố gắng bảo mật nằm trên máy có máy chủ web chiếm cả hai cổng đó, bạn sẽ cần sử dụng một chế độ khác, chẳng hạn như chế độ webroot của Certbot.

Bước 1: Cài đặt Certbot

Certbot khuyên bạn nên sử dụng gói snap của họ để cài đặt. Các gói Snap hoạt động trên gần như tất cả các bản phân phối Linux, nhưng chúng yêu cầu bạn phải cài đặt snapd trước để quản lý các gói snap. Ubuntu 20.04 đi kèm với hỗ trợ snaps out, vì vậy bạn có thể bắt đầu bằng cách đảm bảo rằng snapd core của bạn được cập nhật:

  1. sudo snap install core; sudo snap refresh core

Nếu bạn đang làm việc trên một máy chủ trước đó đã cài đặt phiên bản certbot cũ hơn, bạn nên xóa nó trước khi tiếp tục:

  1. sudo apt remove certbot

Sau đó, bạn có thể cài đặt gói certbot:

  1. sudo snap install --classic certbot

Cuối cùng, bạn có thể liên kết lệnh certbot từ thư mục cài đặt snap với đường dẫn của mình, vì vậy bạn sẽ có thể chạy lệnh đó bằng cách nhập certbot. Điều này không cần thiết với tất cả các gói, nhưng theo mặc định, snaps có xu hướng ít bị xâm nhập hơn, vì vậy chúng không tình cờ xung đột với bất kỳ gói hệ thống nào khác:

  1. sudo ln -s /snap/bin/certbot /usr/bin/certbot

Bây giờ chúng ta đã cài đặt Certbot, hãy chạy nó để lấy chứng chỉ của chúng tôi.

Bước 2: Chạy Certbot

Certbot cần phải trả lời một thách thức mật mã (cryptographic challenge) do API Let’s Encrypt đưa ra để chứng minh rằng chúng ta kiểm soát miền của mình. Nó sử dụng cổng 80 (HTTP) hoặc 443 (HTTPS) để thực hiện điều này. Mở (các) cổng thích hợp trong tường lửa của bạn:

  1. sudo ufw allow 443
Output
Rule added Rule added (v6)

Bây giờ chúng ta có thể chạy Certbot để lấy chứng chỉ của mình. Chúng tôi sẽ sử dụng tùy chọn --standalone để yêu cầu Certbot xử lý thách thức bằng máy chủ web tích hợp của riêng nó. Cuối cùng, cờ -d được sử dụng để chỉ định miền bạn đang yêu cầu chứng chỉ. Bạn có thể thêm nhiều tùy chọn -d để bao gồm nhiều miền trong một chứng chỉ.

  1. sudo certbot certonly --standalone -d your_domain

Khi chạy lệnh, bạn sẽ được nhắc nhở nhập địa chỉ email và đồng ý với các điều khoản dịch vụ. Sau khi làm như vậy, bạn sẽ thấy một thông báo cho biết quá trình đã thành công và nơi lưu trữ các chứng chỉ của bạn:

Output
IMPORTANT NOTES: Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem This certificate expires on 2022-02-10. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le

Bây giờ bạn sẽ có chứng chỉ của mình. Trong bước tiếp theo, chúng ta sẽ kiểm tra một số tệp mà chúng ta đã tải xuống và tìm hiểu về chức năng của chúng.

Bước 3: Thiết lập cấu hình ứng dụng của bạn

Thiết lập cấu hình ứng dụng của bạn cho SSL nằm ngoài phạm vi của bài viết này, vì mỗi ứng dụng có các yêu cầu và tùy chọn cấu hình khác nhau, nhưng chúng ta hãy xem những gì Certbot đã tải xuống. Sử dụng ls để liệt kê ra thư mục chứa các khóa và chứng chỉ của chúng ta:

  1. sudo ls /etc/letsencrypt/live/your_domain
Output
cert.pem chain.pem fullchain.pem privkey.pem README

Tệp README trong thư mục này có thêm thông tin về từng tệp này. Thông thường, bạn sẽ chỉ cần hai trong số các tệp sau:

  • privkey.pem: Đây là khóa riêng tư cho chứng chỉ. Điều này cần được giữ an toàn và bí mật, đó là lý do tại sao hầu hết thư mục /etc/letsencrypt có quyền rất hạn chế và chỉ root user mới có thể truy cập được. Hầu hết cấu hình phần mềm sẽ coi đây là thứ tương tự như ssl-certificate-key hoặc ssl-certificate-key-file.
  • fullchain.pem: Đây là chứng chỉ của chúng ta, đi kèm với tất cả các chứng chỉ trung gian. Hầu hết phần mềm sẽ sử dụng tệp này cho chứng chỉ thực và sẽ tham chiếu đến nó trong cấu hình của chúng với tên như ‘ssl-certificate’. Để biết thêm thông tin về các tệp khác hiện có, hãy tham khảo phần “[Chứng chỉ của tôi ở đâu: https: //eff-certbot.readthedocs.io/en/stable/using.html#where-are-my-certificates)” của tài liệu Certbot.

Một số phần mềm sẽ cần chứng chỉ của nó ở các định dạng khác, ở các vị trí khác hoặc với các quyền của người dùng khác. Tốt nhất là để mọi thứ trong thư mục letsencrypt và không thay đổi bất kỳ quyền nào trong đó (dù sao thì quyền cũng sẽ bị ghi đè khi gia hạn), nhưng đôi khi đó không phải là một tùy chọn. Trong trường hợp đó, bạn sẽ cần viết tập lệnh để di chuyển tệp và thay đổi quyền nếu cần. Tập lệnh này sẽ cần được chạy bất cứ khi nào Certbot gia hạn chứng chỉ, điều này chúng ta sẽ nói đến ở phần tiếp theo.

Bước 4: Xử lý việc gia hạn tự động Certbot

Chứng chỉ của Let’s Encrypt chỉ có giá trị trong chín mươi ngày. Điều này nhằm khuyến khích người dùng tự động hóa quy trình gia hạn chứng chỉ của họ. Gói certbot mà chúng ta đã cài đặt sẽ giải quyết việc này cho chúng ta bằng cách thêm tập lệnh gia hạn vào /etc/cron.d. Tập lệnh này chạy hai lần một ngày và sẽ gia hạn bất kỳ chứng chỉ nào trong vòng ba mươi ngày kể từ ngày hết hạn.

Với việc chứng chỉ tự động gia hạn, chúng ta vẫn cần một cách để chạy các tác vụ khác sau khi gia hạn. Ít nhất chúng ta cần phải khởi động lại hoặc tải lại máy chủ của mình để nhận các chứng chỉ mới và như đã đề cập ở Bước 3, chúng ta có thể cần thao tác các tệp chứng chỉ theo một cách nào đó để làm cho chúng hoạt động với phần mềm đang sử dụng. Đây là mục đích của tùy chọn renew_hook của Certbot.

Để thêm renew_hook, chúng ta cập nhật tệp cấu hình gia hạn của Certbot. Certbot ghi nhớ tất cả các chi tiết về cách bạn tìm nạp chứng chỉ lần đầu tiên và sẽ chạy với các tùy chọn tương tự khi gia hạn. Chúng ta chỉ cần thêm vào hook. Mở tệp cấu hình bằng trình chỉnh sửa yêu thích của bạn:

  1. sudo nano /etc/letsencrypt/renewal/your_domain.conf

Một tệp văn bản sẽ mở ra với một số tùy chọn cấu hình. Bạn có thể thêm hook vào dòng cuối cùng sẽ tải lại bất kỳ dịch vụ nào trên web, khiến chúng sử dụng chứng chỉ đã được gia hạn:

/etc/letsencrypt/renewal/<^>your_domain<^>.conf
renew_hook = systemctl reload your_service

Cập nhật lệnh ở trên thành bất kỳ thứ gì bạn cần chạy để tải lại máy chủ của mình, hoặc chạy tập lệnh trộn file tùy chỉnh của bạn. Thông thường, trên Ubuntu, bạn chủ yếu sẽ sử dụng systemctl để tải lại một dịch vụ. Lưu và đóng tệp, sau đó chạy Certbot dry run để đảm bảo cú pháp ổn:

  1. sudo certbot renew --dry-run

Nếu bạn không thấy lỗi, bạn đã hoàn tất. Certbot được đặt để gia hạn khi cần thiết và chạy bất kỳ lệnh nào để sử dụng dịch vụ của bạn bằng các tệp mới.

Kết luận

Trong hướng dẫn này, chúng ta đã cài đặt ứng dụng Certbot Let’s Encrypt, tải xuống chứng chỉ SSL bằng chế độ độc lập và bật tính năng gia hạn tự động với renew hooks. Điều này sẽ giúp bạn có một khởi đầu tốt khi sử dụng chứng chỉ Let’s Encrypt với các dịch vụ khác với máy chủ web thông thường của bạn.

Để biết thêm thông tin, vui lòng tham khảo tài liệu của Certbot.

00:00 / 00:00

Đăng nhận xét