Thứ sáu, 31/05/2019 | 00:00 GMT+7

Cách sử dụng Chế độ độc lập của Certbot để lấy chứng chỉ SSL của Let's Encrypt trên CentOS 7

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. Các Hãy Encrypt client phổ biến nhất là EFF 's Certbot .

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 CentOS 7 với user không root, đã bật sudo, như được trình bày chi tiết trong hướng dẫn cài đặt server ban đầu CentOS 7 này .
  • Một domain đã trỏ đến server của bạn, bạn có thể thực hiện điều này theo “ Cách cài đặt tên server với DigitalOcean ”. Hướng dẫn này sẽ sử dụng example.com xuyên suốt.
  • Cổng 80 hoặc 443 phải không được sử dụng trên server của bạn. Nếu dịch vụ bạn đang cố 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.

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

Certbot được đóng gói trong một repository bổ sung được gọi là Gói bổ sung cho Enterprise Linux (EPEL). Để kích hoạt repository này trên CentOS 7, hãy chạy lệnh yum sau:

  • sudo yum --enablerepo=extras install epel-release

Sau đó, gói certbot có thể được cài đặt với yum :

  • sudo yum install certbot

Bạn có thể xác nhận cài đặt của bạn thành công bằng cách gọi lệnh certbot :

  • certbot --version
Output
certbot 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. Nếu bạn đang sử dụng firewall , hãy mở cổng thích hợp ngay bây giờ. Đối với firewalld điều này sẽ giống như sau:

  • sudo firewall-cmd --add-service=http
  • sudo firewall-cmd --runtime-to-permanent

Thay thế https cho http ở trên nếu bạn đang sử dụng cổng 443.

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 muốn --preferred-challenges http . Đối với cổng 443, nó sẽ là --preferred-challenges tls-sni . Cuối cùng, cờ -d được sử dụng để chỉ định domain bạn đ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 .

  • sudo certbot certonly --standalone --preferred-challenges http -d example.com

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:

Output
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2018-10-09. 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 ta :

  • sudo ls /etc/letsencrypt/live/example.com
Output
cert.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/letsencrypt có 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ẽ coi đây là thứ tương tự như ssl-certificate-key hoặc ssl-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 phần “ Chứng chỉ của tôi ở đâu ” trong tài liệu Certbot.

Một số phần mềm cần certificate 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 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 trong đó (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 - Bật gia hạn certificate tự động

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 user tự động hóa quy trình gia hạn certificate của họ. Gói certbot ta đã cài đặt bao gồm bộ đếm thời gian systemd để kiểm tra gia hạn hai lần một ngày, nhưng nó bị tắt theo mặc định. Bật bộ hẹn giờ bằng cách chạy lệnh sau:

  • sudo systemctl enable --now certbot-renew.timer
Output
Created symlink from /etc/systemd/system/timers.target.wants/certbot-renew.timer to /usr/lib/systemd/system/certbot-renew.timer.

Bạn có thể xác minh trạng thái của bộ hẹn giờ bằng systemctl :

  • sudo systemctl status certbot-renew.timer
Output
● certbot-renew.timer - This is the timer to set the schedule for automated renewals Loaded: loaded (/usr/lib/systemd/system/certbot-renew.timer; enabled; vendor preset: disabled) Active: active (waiting) since Fri 2019-05-31 15:10:10 UTC; 48s ago

Bộ hẹn giờ sẽ được kích hoạt. Certbot bây giờ sẽ tự động gia hạn bất kỳ certificate nào trên server này khi nào cần thiết.

Bước 5 - Chạy tác vụ khi certificate được gia hạn

Như vậy, certificate của ta đang tự động gia hạn, ta cần một cách để chạy một số tác vụ 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ọn renew_hook của renew_hook .

Để thêm một renew_hook , ta 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 vi /etc/letsencrypt/renewal/example.com.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:

/etc/letsencrypt/renewal/example.com.conf
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. Thông thường, trên CentOS, chủ yếu bạn sẽ 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 .


Tags:

Các tin liên quan

Cách cài đặt và cấu hình Zabbix để giám sát an toàn server từ xa trên CentOS 7
2019-05-29
Cách tạo một cụm Kubernetes bằng Kubeadm trên CentOS 7
2019-04-24
Cách cài đặt và sử dụng ClickHouse trên CentOS 7
2019-04-15
Cách thu thập số liệu cơ sở hạ tầng với Metricbeat trên CentOS 7
2019-03-27
Các bước được đề xuất bổ sung cho server CentOS 7 mới
2019-02-20
Cách cài đặt Elasticsearch, Logstash và Kibana (Elastic Stack) trên CentOS 7
2018-12-10
Cách lấy chứng chỉ SSL Wildcard của Let's Encrypt bằng cách sử dụng CloudFlare Validation trên CentOS 7
2018-08-16
Cách cài đặt và cấu hình LEMP bằng Bộ sưu tập phần mềm trên CentOS 7
2018-04-20
Cách thiết lập khóa SSH trên CentOS 7
2018-04-12
Cách cài đặt và bảo mật Memcached trên CentOS 7
2018-03-06