Як Налаштувати Let’s Encrypt на Приватній Мережі за Допомогою Cloudflare: Покрокова Інструкція
Let’s Encrypt — це широко використовуваний глобальний центр сертифікації (CA). Він використовується фрілансерами, розробниками, власниками веб-сайтів та організаціями по всьому світу для отримання, поновлення та керування сертифікатами SSL/TLS. SSL-сертифікати Let’s Encrypt можна використовувати на будь-якому веб-сайті для забезпечення безпечного з’єднання HTTPS. Найбільш використовуваним клієнтом Let’s Encrypt є Certbot від EFF. Якщо вам потрібен безкоштовний SSL-сертифікат для вашого веб-сайту, то Let’s Encrypt – ваш найкращий вибір.
Certbot — це безкоштовний програмний інструмент з відкритим вихідним кодом, який дозволяє автоматично генерувати та оновлювати сертифікати Let’s Encrypt для веб-сайтів, які адмініструються вручну.
Вимоги до цього підручника;
- У вас є домен у cloudflare
- Shell доступ до вашого сервера
- Встановлено інструмент certbot
Крок 1: Згенеруйте токен API на Cloudflare
Увійдіть у Cloudflare і перейдіть на сайт Зони > Select. На правій панелі навігації натисніть API > Отримати токен API
Натисність “Create Token” кнопку.
Виберіть шаблон “Edit zone DNS” .
У розділі «Дозволи» використовуйте за замовчуванням і виберіть «Конкретна зона» в розділі “Zone Resources” .
Натисніть «Continue to summary», щоб завершити процедуру
Завершіть створення токена.
Копіюйте та зберігайте токен, згенерований у безпечному місці.
Крок 2: Встановіть certbot і плагін cloudflare
Ми виконуємо цю операцію на сервері в підмережі в межах діапазонів приватних адрес.
root@debian:~# ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 32:ac:f1:64:2b:26 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.1.150/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 7074sec preferred_lft 7074sec
inet6 fe80::30ac:f1ff:fe64:2b26/64 scope link
valid_lft forever preferred_lft forever
Зверніть увагу, що ім’я хоста / FQDN, для якого ми створюємо сертифікат, не повинен мати запис A, налаштований у cloudflare DNS. Але базовий домен повинен бути розміщений на реєстраторі cloudflare і згенерований API токен.
Інсталюйте certbot за допомогою наведених нижче команд залежно від вашої операційної системи.
### Ubuntu / Debian ###
sudo apt update
sudo apt install vim certbot python3-certbot-dns-cloudflare python3-pip
### CentOS / RHEL / Fedora ###
sudo dnf -y install epel-release
sudo dnf -y install vim certbot python3-certbot-dns-cloudflare python3-pip
Використання модулів pip install та pythonpyOpenSSL
cryptography
sudo python3 -m pip install -U pyOpenSSL cryptography
Крок 3: Створіть секрети cloudflare для certbot
Створимо директорію, де будуть зберігатися секрети.
mkdir -p ~/.secrets/certbot
Створіть новий файл у створеному каталозі
vim ~/.secrets/certbot/cloudflare.ini
Вставте нижче та оновіть правильне значення для токена
dns_cloudflare_api_token = <token-generated-in-step-1>
Встановіть належні дозволи для щойно створеного файлу
chmod 0600 /root/.secrets/certbot/cloudflare.ini
Деякі старі інсталяції certbot можуть потребувати визначення адреси електронної пошти та ключа api cloudflare. У новіших версіях ви визначаєте лише dns_cloudflare_api_token.
dns_cloudflare_api_key = "api-key-value"
dns_cloudflare_email = "cloudflare-account-email-address"
Крок 4: Згенеруйте сертифікати Let’s Encrypt
Прості команди для генерації сертифікатів Let’s Encrypt за допомогою плагіна cloudflare наведені нижче.
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
-m myemail@domain.com \
--agree-tos \
-d myserver.domain.com
Укажіть правильну електронну адресу для сповіщень про закінчення терміну дії сертифікатів і домен, для якого ми генеруємо SSL-сертифікати.
Вихід процесу генерації зразків.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, 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 our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Yes
Account registered.
Requesting a certificate for debian.hirebestengineers.com
Waiting 10 seconds for DNS changes to propagate
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/debian.hirebestengineers.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/debian.hirebestengineers.com/privkey.pem
This certificate expires on 2023-10-30.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
We were unable to subscribe you the EFF mailing list because your e-mail address appears to be invalid. You can try again later by visiting https://act.eff.org.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Крок 5: Створіть cron завдання для автоматичного оновлення
Створення нового завдання cron
sudo crontab -e
Вставте вказаний нижче вміст у файл для автоматичного поновлення в разі настання терміну.
15 3 * * * /usr/bin/certbot renew --quiet
Якщо ви використовуєте веб-сервер Nginx, ви можете використовувати гачок, який перезапускає nginx.
15 3 * * * /usr/bin/certbot renew --quiet --renew-hook "systemctl restart nginx"
Для веб-сервера Apache це буде так, як описано нижче.
15 3 * * * /usr/bin/certbot renew --quiet --renew-hook "systemctl restart apache2"
Для веб-сервера Apache, що працює на системах на базі RHEL:
15 3 * * * /usr/bin/certbot renew --quiet --renew-hook "systemctl restart httpd"
Висновок
У цій статті ми показали користувачам, як вони можуть отримати та використовувати безкоштовні SSL-сертифікати Let’s Encrypt у приватній мережі для доменів, придбаних або переданих на Cloudflare. Отримавши сертифікати, їх можна налаштувати та використовувати, як і будь-які інші SSL-сертифікати у вашій системі. Ми сподіваємося, що цей посібник був корисним, і ми дякуємо вам за відвідування нашого веб-сайту.