Thứ năm, 16/08/2018 | 00:00 GMT+7

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

Let's Encrypt là cơ quan cấp certificate (CA) cung cấp các certificate miễn phí cho mã hóa Bảo mật tầng truyền tải (TLS) . Nó cung cấp một ứng dụng client gọi là Certbot giúp đơn giản hóa quá trình tạo, xác nhận, ký, cài đặt và gia hạn certificate .

Let's Encrypt hiện hỗ trợ các chứng chỉ ký tự đại diện cho phép bạn bảo mật tất cả các domain phụ của domain bằng một certificate duy nhất. Điều này sẽ hữu ích nếu bạn muốn lưu trữ nhiều dịch vụ, chẳng hạn như giao diện web, API và các trang web khác bằng một server duy nhất.

Để có được certificate ký tự đại diện từ Let's Encrypt, bạn phải sử dụng một trong các plugin DNS của Certbot, bao gồm:

  • certbot-dns-cloudflare
  • certbot-dns-route53
  • certbot-dns-google
  • certbot-dns-digitalocean

Plugin bạn chọn phụ thuộc vào dịch vụ nào lưu trữ các bản ghi DNS của bạn. Trong hướng dẫn này, bạn sẽ nhận được certificate ký tự đại diện cho domain của bạn bằng cách sử dụng xác thực CloudFlare với Certbot trên CentOS 7. Sau đó, bạn sẽ cấu hình certificate để gia hạn khi nó hết hạn.

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần những thứ sau:

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

Gói certbot không có sẵn thông qua trình quản lý gói của CentOS theo mặc định. Bạn cần kích hoạt kho EPEL để cài đặt Certbot và các plugin của nó.

Để thêm repository CentOS 7 EPEL, hãy chạy lệnh sau:

  • sudo yum install -y epel-release

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

  • sudo yum install -y certbot

Và sau đó cài đặt plugin CloudFlare cho Certbot:

  • sudo yum install -y python2-cloudflare python2-certbot-dns-cloudflare

Nếu bạn đang sử dụng một dịch vụ DNS khác, bạn có thể tìm thấy plugin tương ứng bằng cách sử dụng lệnh yum search :

  • yum search python2-certbot-dns

Bạn đã chuẩn bị server của bạn để lấy certificate . Đến đây bạn cần lấy khóa API từ CloudFlare.

Bước 2 - Lấy API CloudFlare

Để Certbot tự động gia hạn certificate ký tự đại diện, bạn cần cung cấp cho nó thông tin đăng nhập CloudFlare và khóa API của bạn.

Đăng nhập vào account Cloudflare của bạn và chuyển đến trang Hồ sơ .

Nhấp vào nút Xem trong dòng Khóa API global .

Cấu hình CloudFlare - Khóa API

Vì lý do bảo mật, bạn cần nhập lại password account Cloudflare của bạn . Nhập nó và xác thực CAPTCHA. Sau đó nhấp lại vào nút Xem . Bạn sẽ thấy khóa API của bạn :

Cấu hình CloudFlare - Khóa API

Sao chép khóa này. Bạn sẽ sử dụng nó trong bước tiếp theo.

Bây giờ quay lại server của bạn để tiếp tục quá trình lấy certificate .

Bước 3 - Cấu hình Certbot

Bạn có tất cả thông tin cần thiết để cho Certbot biết cách sử dụng Cloudflare, nhưng hãy ghi thông tin đó vào file cấu hình để Сertbot có thể tự động sử dụng.

Đầu tiên hãy chạy lệnh certbot mà không có bất kỳ tham số nào để tạo file cấu hình ban đầu:

  • sudo certbot

Tiếp theo, tạo một file cấu hình trong folder /etc/letsencrypt sẽ chứa email CloudFlare và khóa API của bạn:

  • sudo vi /etc/letsencrypt/cloudflareapi.cfg

Thêm phần sau vào đó, thay thế các trình giữ chỗ bằng thông tin đăng nhập Cloudflare và khóa API của bạn:

/etc/letsencrypt/cloudflareapi.cfg
dns_cloudflare_email = your_cloudflare_login dns_cloudflare_api_key = your_cloudflare_api_key 

Lưu file và thoát khỏi editor .
Với khóa API của Cloudflare, bạn có thể thực hiện những điều tương tự từ dòng lệnh mà bạn có thể làm từ giao diện user Cloudflare, vì vậy để bảo vệ account của bạn, hãy đặt file cấu hình chỉ chủ sở hữu của nó có thể đọc được để không ai khác có thể lấy khóa của bạn:

  • sudo chmod 600 /etc/letsencrypt/cloudflareapi.cfg

Với các file cấu hình tại chỗ, hãy lấy certificate .

Bước 4 - Lấy certificate

Để có được certificate , ta sẽ sử dụng lệnh certbot và chỉ định plugin ta muốn, file thông tin xác thực mà ta muốn sử dụng và server ta nên sử dụng để xử lý yêu cầu. Theo mặc định, Certbot sử dụng server production của Let's Encrypt, sử dụng ACME API version 1, nhưng Certbot sử dụng giao thức khác để lấy certificate ký tự đại diện, vì vậy bạn cần cung cấp điểm cuối ACME v2.

Chạy lệnh sau để lấy certificate ký tự đại diện cho domain của bạn:

  • sudo certbot certonly --cert-name your_domain --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflareapi.cfg --server https://acme-v02.api.letsencrypt.org/directory -d "*.your_domain" -d your_domain

Bạn cần chỉ định địa chỉ email sẽ nhận được thông báo bảo mật và gia hạn khẩn cấp:

Output
... Plugins selected: Authenticator dns-cloudflare, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): your email

Sau đó, bạn cần đồng ý với Điều khoản dịch vụ:

Output
------------------------------------------------------------------------------- Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory ------------------------------------------------------------------------------- (A)gree/(C)ancel: A

Sau đó, bạn cần chia sẻ địa chỉ email của bạn với Electronic Frontier
Nền tảng:

Output
------------------------------------------------------------------------------- Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o: N

Sau đó, Certbot sẽ lấy certificate của bạn. Bạn sẽ thấy thông báo sau:

Output
IMPORTANT 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 2018-07-31. 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

Đến đây bạn có certificate ký tự đại diện của bạn . Hãy xem những gì Certbot đã download cho bạn. Sử dụng ls để xem nội dung của folder chứa các khóa và certificate của bạn:

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

Tệp README chứa thông tin về các file này:

$ cat /etc/letsencrypt/live/your_domain/README 

Bạn sẽ thấy kết quả như thế này:

README
This directory contains your keys and certificates.  `privkey.pem`  : the private key for your certificate. `fullchain.pem`: the certificate file used in most server software. `chain.pem`    : used for OCSP stapling in Nginx >=1.3.7. `cert.pem`     : will break many server configurations, and should not be used                  without reading further documentation (see link below).  We recommend not moving these files. For more information, see the Certbot User Guide at https://certbot.eff.org/docs/using.html#where-are-my-certificates. 

Từ đây, bạn có thể cấu hình server của bạn bằng certificate ký tự đại diện. Thông thường, bạn sẽ chỉ cần hai trong số các file sau: fullchain.pemprivkey.pem .

Ví dụ: bạn có thể cấu hình một số dịch vụ dựa trên web:

  • wwww. example.com
  • api. example.com
  • thư. example.com

Để làm điều này, bạn cần một web server , chẳng hạn như Apache hoặc Nginx. Việc cài đặt và cấu hình các server này nằm ngoài phạm vi của hướng dẫn này, nhưng các hướng dẫn sau sẽ hướng dẫn bạn qua tất cả các bước cần thiết để cấu hình server và áp dụng certificate của bạn.

Đối với Nginx, hãy xem các hướng dẫn sau:

Đối với Apache, hãy tham khảo các hướng dẫn sau:

Bây giờ ta hãy xem xét việc gia hạn certificate tự động.

Bước 5 - Gia hạn certificate

Let's Encrypt phát hành các certificate tồn tại trong thời gian ngắn có giá trị trong 90 ngày. Ta cần cài đặt một tác vụ cron để kiểm tra các certificate sắp hết hạn và tự động gia hạn chúng.

Hãy tạo một nhiệm vụ cron
sẽ chạy kiểm tra gia hạn hàng ngày.

Sử dụng lệnh sau để mở file crontab để chỉnh sửa:

  • sudo crontab -e

Thêm dòng sau vào file để cố gắng gia hạn certificate hàng ngày:

crontab
30 2 * * * certbot renew --noninteractive 
  • 30 2 * * * nghĩa là “chạy lệnh sau vào lúc 2:30 sáng, mỗi ngày”.
  • certbot renew sẽ kiểm tra tất cả các certificate được cài đặt trên hệ thống và cập nhật bất kỳ certificate nào được đặt thành hết hạn trong vòng chưa đầy ba mươi ngày.
  • --noninteractive yêu cầu Certbot không đợi user nhập.

Bạn cần reload web server của bạn sau khi cập nhật certificate của bạn . Lệnh renew bao gồm các móc để chạy các lệnh hoặc tập lệnh trước hoặc sau khi certificate được gia hạn. Bạn cũng có thể cấu hình các móc này trong file cấu hình gia hạn cho domain của bạn .

Ví dụ: để reload server Nginx của bạn, hãy mở file cấu hình gia hạn:

  • sudo vi /etc/letsencrypt/renewal/your_domain.conf

Sau đó thêm dòng sau vào phần [renewalparams] :

your_domain.conf '> / etc / letsencrypt / Renew / your_domain .conf
renew_hook = systemctl reload nginx 

Bây giờ Certbot sẽ tự động khởi động lại web server của bạn sau khi cài đặt certificate đã cập nhật.

Kết luận

Trong hướng dẫn này, bạn đã cài đặt ứng dụng client Certbot, lấy certificate ký tự đại diện bằng cách sử dụng xác thực DNS và bật gia hạn tự động. Điều này sẽ cho phép bạn sử dụng một certificate duy nhất với nhiều domain phụ của domain và bảo mật các dịch vụ web của bạn.


Tags:

Các tin liên quan

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
Cách cài đặt Java trên CentOS và Fedora
2018-02-16
Cách theo dõi cảnh báo Nagios với Alerta trên CentOS 7
2017-09-13
Cách cài đặt MongoDB trên CentOS 7
2017-09-11
Cách cài đặt Nagios 4 và theo dõi server của bạn trên CentOS 7
2017-09-11
Cách cài đặt WordPress với Caddy trên CentOS 7
2017-08-04
Cách cài đặt và sử dụng Webmin trên CentOS 7
2017-07-13
Cách bật SFTP mà không cần quyền truy cập Shell trên CentOS 7
2017-06-01