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:
- Một server CentOS 7 được cài đặt theo hướng dẫn cài đặt server ban đầu CentOS 7 , bao gồm user không phải root có quyền sudo và firewall .
- Tên domain đã đăng ký đầy đủ. Bạn có thể mua domain trên Namecheap , nhận một domain miễn phí trên Freenom hoặc sử dụng công ty đăng ký domain mà bạn chọn.
- Một account Cloudflare .
- Bản ghi DNS được cài đặt cho domain của bạn trong DNS của Cloudflare, cùng với một vài domain phụ được cấu hình . Bạn có thể làm theo hướng dẫn của CloudFlare về cách cài đặt một trang web để cấu hình điều này.
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 .
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 :
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:
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:
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
Đế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
Outputcert.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:
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.pem
và privkey.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:
- Cách cài đặt Nginx trên CentOS 7
- Cách cài đặt khối server Nginx trên CentOS 7
- 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:
- Cách cài đặt Apache trên CentOS 7
- Cách cài đặt server ảo Apache trên CentOS 7
- Cách tạo certificate SSL trên Apache cho CentOS 7
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:
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]
:
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.
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 72018-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