Cách sử dụng Chế độ độc lập của Certbot để truy xuất chứng chỉ SSL của Let's Encrypt trên Debian 10
Let's Encrypt là một dịch vụ cung cấp certificate SSL miễn phí thông qua một API tự động. Ứng dụng Let's Encrypt phổ biến nhất là ứng dụng Certbot của EFF .Certbot cung cấp nhiều cách khác nhau để xác thực domain của bạn, tìm nạp certificate và tự động cấu hình Apache và Nginx . Trong hướng dẫn này, ta sẽ thảo luận về chế độ độc lập 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ư server thư hoặc nhà broker thư như RabbitMQ .
Ta sẽ không thảo luận chi tiết về cấu hình SSL, nhưng khi bạn hoàn tất, bạn sẽ có một certificate hợp lệ được tự động gia hạn. Ngoài ra, bạn có thể tự động reload dịch vụ của bạn để nhận certificate đã được gia hạn.
Yêu cầu
Trước khi bắt đầu hướng dẫn này, bạn cần :
-   Server  Debian 10,  user  không phải root có  quyền  
sudovà firewall cơ bản, như được trình bày chi tiết trong hướng dẫn cài đặt server Debian 10 này . - Tên domain đã trỏ đến server của bạn, bạn có thể thực hiện điều này theo tài liệu này về cách tạo bản ghi DNS trên DigitalOcean.
 -  Cổng 
80hoặc443phải không được sử dụng trên server 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ó web server chiếm cả hai cổng đó, bạn cần sử dụng một chế độ khác, chẳng hạn như chế độ webroot của Certbot hoặc chế độ thử thách dựa trên DNS. 
Bước 1 - Cài đặt Certbot
 Debian 10 bao gồm  ứng dụng client  Certbot trong repository  lưu trữ mặc định của họ và nó phải đủ cập nhật để sử dụng cơ bản. Nếu bạn cần thực hiện các thử thách dựa trên DNS hoặc sử dụng các tính năng Certbot mới hơn khác, thay vào đó, bạn nên cài đặt từ kho buster-backports theo hướng dẫn trong tài liệu Certbot chính thức .
Cập nhật danh sách gói của bạn:
- sudo apt update 
 
Sử dụng apt để cài đặt gói certbot :
- sudo apt install certbot 
 
Bạn có thể kiểm tra cài đặt  của bạn  bằng cách yêu cầu certbot xuất số version  của nó:
- certbot --version 
 
Outputcertbot 0.31.0 Bây giờ ta đã cài đặt Certbot, hãy chạy nó để lấy certificate .
Bước 2 - Chạy Certbot
 Certbot cần phải trả lời một thách thức mật mã do API Let's Encrypt đưa ra để chứng minh rằng  ta  kiểm soát domain   của bạn . Nó sử dụng cổng 80 (HTTP) hoặc 443 (HTTPS) để thực hiện điều này. Mở cổng thích hợp trong firewall  của bạn:
- sudo ufw allow 80 
 
Thay thế 443 ở trên nếu đó là cổng bạn đang sử dụng. ufw sẽ đưa ra  xác nhận   luật  của bạn đã được thêm vào:
OutputRule added Rule added (v6) Bây giờ  ta  có thể chạy Certbot để lấy certificate   của bạn .  Ta  sẽ sử dụng --standalone tùy chọn để cho Certbot để xử lý các thách thức sử dụng riêng được xây dựng trong  web server   của bạn . Tùy chọn --preferred-challenges hướng dẫn Certbot sử dụng cổng 80 hoặc cổng 443 . Nếu đang sử dụng cổng 80 , bạn sẽ sử dụng tùy chọn --preferred-challenges http . Đối với cổng 443 , hãy sử dụng --preferred-challenges tls-sni . Cuối cùng,  ta  sẽ sử dụng cờ -d để chỉ định domain  mà  ta  đang certificate request . Bạn có thể thêm nhiều tùy chọn -d để bao gồm nhiều domain  trong một certificate .
  Ta  sẽ sử dụng tùy chọn --preferred-challenges http để chứng minh, nhưng bạn nên sử dụng tùy chọn phù hợp với trường hợp sử dụng  của bạn . Chạy lệnh sau với các tùy chọn  bạn muốn  để nhận certificate  của bạn:
- sudo certbot certonly --standalone --preferred-challenges http -d your_domain 
 
Khi chạy lệnh, bạn sẽ được yêu cầu 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ữ certificate của bạn:
OutputIMPORTANT NOTES:  - Congratulations! Your certificate and chain have been saved at:    /etc/letsencrypt/live/your_domain/fullchain.pem    Your key file has been saved at:    /etc/letsencrypt/live/your_domain/privkey.pem    Your cert will expire on 2019-08-28. To obtain a new or tweaked    version of this certificate in the future, simply run certbot    again. To non-interactively renew *all* of your certificates, run    "certbot renew"  - Your account credentials have been saved in your Certbot    configuration directory at /etc/letsencrypt. You should make a    secure backup of this folder now. This configuration directory will    also contain certificates and private keys obtained by Certbot so    making regular backups of this folder is ideal.  - 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 Ta đã có certificate của ta . Hãy xem những gì ta đã download và cách sử dụng các file với phần mềm của ta .
Bước 3 - Cấu hình ứng dụng của bạn
  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  ta  hãy xem những gì Certbot đã  download  cho  ta . Sử dụng ls để liệt kê ra folder  chứa các khóa và certificate  của bạn:
- sudo ls /etc/letsencrypt/live/your_domain 
 
Bạn sẽ thấy kết quả sau:
Outputcert.pem  chain.pem  fullchain.pem  privkey.pem  README Tệp README trong folder  này có thêm thông tin về từng file  này. Thông thường, bạn sẽ chỉ cần hai trong số các file  sau:
-  
privkey.pem: Đây là private key cho certificate . Đ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 folder/etc/letsencryptcó quyền rất hạn chế và chỉ user root mới có thể truy cập được. Hầu hết cấu hình phần mềm sẽ gọi đây làssl-certificate-keyhoặcssl-certificate-key-file. -  
fullchain.pem: Đây là certificate của ta , đi kèm với tất cả các certificate trung gian. Hầu hết phần mềm sẽ sử dụng file này cho certificate 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 file khác hiện có, hãy tham khảo Chứng chỉ của tôi ở đâu? của tài liệu Certbot.
 Một số phần mềm  cần  certificate  của nó ở các định dạng hoặc vị trí khác hoặc với các quyền của  user  khác. Tốt nhất là để mọi thứ trong folder  letsencrypt và không thay đổi bất kỳ quyền nào ở đó (dù sao thì quyền cũng sẽ bị overrides  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  cần  viết một tập lệnh để di chuyển file  và thay đổi quyền nếu cần. Tập lệnh này  cần  được chạy  khi  nào Certbot gia hạn certificate , điều mà  ta  sẽ nói tiếp theo.
Bước 4 - Xử lý gia hạn tự động Certbot
 Chứng chỉ Let's Encrypt chỉ có giá trị trong chín mươi ngày. Điều này nhằm khuyến khích  user  tự động hóa quá trình gia hạn certificate . Gói certbot mà  ta  đã cài đặt sẽ giải quyết việc này cho  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ỳ certificate  nào trong vòng ba mươi ngày kể từ ngày hết hạn.
 Với việc certificate  của  ta  tự động gia hạn,  ta  vẫn cần một cách để chạy  các việc  khác sau khi gia hạn. Ít nhất  ta  cần phải khởi động lại hoặc  reload   server   của bạn  để nhận các certificate  mới và như đã đề cập ở Bước 3,  ta  có thể cần thao tác các file  certificate  theo một cách nào đó để làm cho chúng hoạt động với phần mềm  ta  đang sử dụng. Đây là mục đích của tùy chọnrenew_hook củarenew_hook .
 Để thêm một renew_hook ,  ta  cần cập nhật file  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 certificate  lần đầu tiên và sẽ chạy với các tùy chọn tương tự khi gia hạn.  Ta  chỉ cần thêm vào hook của  ta . Mở file  cấu hình bằng  editor  yêu thích của bạn:
- sudo nano /etc/letsencrypt/renewal/your_domain.conf 
 
Một file  văn bản sẽ mở ra với một số tùy chọn cấu hình. Thêm móc của bạn vào dòng cuối cùng. Trong trường hợp này,  ta  đang sử dụng một ví dụ sẽ  reload  dịch vụ rabbitmq :
renew_hook = systemctl reload rabbitmq Cập nhật lệnh trên thành bất kỳ thứ gì bạn cần chạy để  reload   server  hoặc chạy tập lệnh trộn file  tùy chỉnh của bạn. Trên Debian, bạn thường sử dụng systemctl để  reload  một dịch vụ.
Lưu file , sau đó chạy Certbot khô đảm bảo cú pháp ổn:
- 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 cần thiết để sử dụng dịch vụ của bạn bằng các file mới.
Kết luận
Trong hướng dẫn này, ta đã cài đặt ứng dụng Certbot Let's Encrypt, download certificate SSL bằng chế độ độc lập và bật gia hạn tự động với móc gia hạn. Điều này sẽ giúp bạn có một khởi đầu tốt khi sử dụng certificate Let's Encrypt với các dịch vụ khác với web server 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 .
Các tin liên quan

