16/09/2018, 13:12

Cách lấy lại Hãy mã hóa chứng chỉ ký tự đại diện SSL bằng CloudFlare Validation trên CentOS 7

_Tác giả được chọn Code.org để nhận khoản đóng góp như một phần của Viết cho DOnations chương trình._ Giới thiệu Hãy mã hóa là tổ chức phát hành chứng chỉ (CA) cung cấp chứng chỉ miễn phí cho Bảo mật lớp truyền tải (TLS). Nó cung cấp một phần mềm client gọi là Certbot giúp đơn giản hóa quá ...

_Tác giả được chọn Code.org để nhận khoản đóng góp như một phần của Viết cho DOnations chương trình._

Giới thiệu

Hãy mã hóa là tổ chức phát hành chứng chỉ (CA) cung cấp chứng chỉ miễn phí cho Bảo mật lớp truyền tải (TLS). Nó cung cấp một phần mềm client gọi là Certbot giúp đơn giản hóa quá trình tạo chứng chỉ, xác thực, ký, cài đặt và gia hạn.

Letâ € ™ s Encrypt hiện hỗ trợ chứng chỉ ký tự đại diện cho phép bạn bảo mật tất cả tên miền phụ của miền với một chứng chỉ đơn lẻ. Đ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 máy chủ duy nhất.

Để lấy chứng chỉ ký tự đại diện từ Mã hóa của bạn, bạn phải sử dụng một trong các Certbot Plugin DNS, 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ụ lưu trữ bản ghi DNS của bạn. Trong hướng dẫn này, bạn sẽ nhận được chứng chỉ ký tự đại diện cho miền của mình bằng cách sử dụng CloudFlare xác nhận với Certbot trên CentOS 7. Sau đó bạn sẽ cấu hình chứng chỉ để gia hạn khi nó hết hạn.

Điều kiện tiên quyết

Để hoàn thành hướng dẫn này, bạn sẽ cần những điều sau đây:

  • Một máy chủ CentOS 7 được thiết lập bằng cách làm theo Hướng dẫn cài đặt máy chủ ban đầu của CentOS 7, bao gồm người dùng không phải root sudo và tường lửa.
  • Một tên miền được đăng ký đầy đủ. Bạn có thể mua tên miền trên Namecheap, tải miễn phí Freenomhoặc sử dụng công ty đăng ký tên miền mà bạn chọn.
  • A Cloudflare tài khoản.
  • Bản ghi DNS được thiết lập cho tên miền của bạn trong DNS của Cloudflare, cùng với một vài tên miền phụ được định cấu hình. Bạn có thể đi theo tui Hướng dẫn của CloudFlare về thiết lập một trang web để cấu hình này.

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

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

Để thêm kho lưu trữ 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 yum search chỉ huy:

yum search python2-certbot-dns 

Bạn đã chuẩn bị máy chủ của mình để có được chứng chỉ. Bây giờ bạn cần lấy khóa API từ CloudFlare.

Bước 2 - Nhận API CloudFlare

Để Certbot tự động gia hạn chứng chỉ ký tự đại diện, bạn cần cung cấp chứng chỉ này bằng khóa đăng nhập CloudFlare và khóa API của mình.

Đăng nhập vào tài khoản Cloudflare của bạn và điều hướng đến Trang hồ sơ.

Nhấn vào Lượt xem nút trong Khóa API toàn cầu hàng.

CloudFlare Profile - API Keys

Vì lý do bảo mật, bạn sẽ được yêu cầu nhập lại mật khẩu tài khoản Cloudflare của mình. Nhập và xác thực CAPTCHA. Sau đó nhấp vào Lượt xem một lần nữa. Bạn sẽ thấy khóa API của mình:

CloudFlare Profile - API Keys

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

Bây giờ trở lại máy chủ của bạn để tiếp tục quá trình lấy chứng chỉ.

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

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

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

sudo certbot

Tiếp theo tạo tệp cấu hình trong /etc/letsencrypt thư mục sẽ chứa email API và CloudFlare của bạn:

sudo vi /etc/letsencrypt/cloudflareapi.cfg

Thêm thông tin sau vào đó, thay thế 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 tệp và thoát khỏi trình chỉnh sửa.
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ể thực hiện từ giao diện người dùng Cloudflare, để bảo vệ tài khoản của bạn, chỉ chủ sở hữu mới có thể đọc tệp cấu hình để 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 tệp cấu hình tại chỗ, hãy lấy chứng chỉ.

Bước 4 - Nhận Giấy chứng nhận

Để có được chứng chỉ, chúng tôi sẽ sử dụng certbot lệnh và chỉ định plugin chúng tôi muốn, tệp thông tin xác thực mà chúng tôi muốn sử dụng và máy chủ chúng tôi nên sử dụng để xử lý yêu cầu. Theo mặc định, Certbot sử dụng các máy chủ sản xuất mã hóa của Let, sử dụng ACME API phiên bản 1, nhưng Certbot sử dụng giao thức khác để lấy chứng chỉ 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 chứng chỉ ký tự đại diện cho miền 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 sẽ được yêu cầu chỉ định địa chỉ email sẽ nhận được thông báo gia hạn và bảo mật 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 sẽ được yêu cầu đồ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 sẽ được yêu cầu chia sẻ địa chỉ email của mình 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ẽ nhận được chứng chỉ của bạn. Bạn sẽ thấy thông báo sau:

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 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

Bây giờ bạn có chứng chỉ ký tự đại diện. Chúng ta hãy xem những gì Certbot đã tải xuống cho bạn. Sử dụng ls lệnh để xem nội dung của thư mục chứa khóa và chứng chỉ của bạn:

sudo ls /etc/letsencrypt/live/your_domain

Outputcert.pem  chain.pem  fullchain.pem  privkey.pem  README

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

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

Bạn sẽ thấy đầu ra 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ể định cấu hình máy chủ của mình bằng chứng chỉ ký tự đại diện. Thông thường bạn sẽ chỉ cần hai trong số các tệp sau: fullchain.pem và privkey.pem.

Ví dụ: bạn có thể định 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 sẽ cần một máy chủ web, chẳng hạn như Apache hoặc Nginx. Việc cài đặt và cấu hình các máy chủ 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 các máy chủ và áp dụng các chứng chỉ của bạn.

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

  • Làm thế nào để cài đặt Nginx trên CentOS 7
  • Làm thế nào để thiết lập Nginx Server Blocks trên CentOS 7
  • Định cấu hình Nginx để sử dụng SSL

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

  • Làm thế nào để cài đặt Apache trên CentOS 7
  • Làm thế nào để thiết lập máy chủ ảo Apache trên CentOS 7
  • Cách tạo chứng chỉ SSL trên Apache cho CentOS 7

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

Bước 5 - Đổi chứng chỉ

Letâ € ™ s Mã hóa các vấn đề chứng chỉ tồn tại ngắn hạn có giá trị trong 90 ngày. Chúng tôi sẽ cần thiết lập một tác vụ cron để kiểm tra các chứng chỉ 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ở crontab tệp để chỉnh sửa:

sudo crontab -e

Thêm dòng sau vào tệp để cố gắng gia hạn chứng chỉ hàng ngày:

crontab

30 2 * * * certbot renew --noninteractive
  • 30 2 * * * có nghĩa là "chạy lệnh sau vào lúc 2:30 sáng, mỗi ngày".
  • Các certbot renew lệnh sẽ kiểm tra tất cả các chứng chỉ được cài đặt trên hệ thống và cập nhật bất kỳ chứng chỉ nào được đặt thành hết hạn sau chưa đầy ba mươi ngày.
  • --noninteractive báo cho Certbot không đợi cho người dùng nhập vào.

Bạn sẽ cần tải lại máy chủ web của mình sau khi cập nhật chứng chỉ. Các renew lệnh bao gồm các móc để chạy lệnh hoặc tập lệnh trước hoặc sau khi chứng chỉ được gia hạn. Bạn cũng có thể định cấu hình các móc này trong tệp cấu hình gia hạn cho miền của bạn.

Ví dụ: để tải lại máy chủ Nginx của bạn, hãy mở tệp cấu hình gia hạn:

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

Sau đó, thêm dòng sau theo [renewalparams] phần:

your_domain.conf'>/etc/letsencrypt/renewal/your_domain.conf

renew_hook = systemctl reload nginx

Bây giờ Certbot sẽ tự động khởi động lại máy chủ web của bạn sau khi cài đặt chứng chỉ được cập nhật.

Phần kết luận

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

0