Как получить Давайте зашифруем сертификаты с подстановочными знаками SSL с помощью CloudFlare Validation на CentOS 7

Автор выбралCode.org для получения пожертвования в рамках программыWrite for DOnations.

Вступление

Let’s Encrypt - это центр сертификации (CA), который предоставляет бесплатные сертификаты дляTransport Layer Security (TLS) encryption. Он предоставляет программный клиентCertbot, который упрощает процесс создания, проверки, подписи, установки и обновления сертификата.

Let's Encrypt теперь поддерживаетwildcard certificates, что позволяет защитить все поддомены домена с помощью одного сертификата. Это будет полезно, если вы хотите разместить несколько служб, таких как веб-интерфейсы, API и другие сайты, используя один сервер.

Чтобы получить групповой сертификат от Let's Encrypt, вы должны использовать один изDNS plugins Certbot, который включает:

  • certbot-ДНС для CloudFlare

  • certbot-ДНС для route53

  • certbot-ДНС для Google

  • certbot-ДНС для digitalocean

Выбор подключаемого модуля зависит от того, на каком сервисе размещены ваши записи DNS. В этом руководстве вы получите подстановочный сертификат для своего домена с помощью проверкиCloudFlare с помощью Certbot в CentOS 7. Затем вы настроите сертификат для его продления по истечении срока действия.

Предпосылки

Для завершения этого урока вам понадобится следующее:

  • Один сервер CentOS 7, настроенный следующим образомthe CentOS 7 initial server setup guide, включая пользователя sudo без полномочий root и брандмауэр.

  • Полностью зарегистрированное доменное имя. Вы можете приобрести доменное имя наNamecheap, получить его бесплатно наFreenom или воспользоваться услугами регистратора доменов по вашему выбору.

  • АккаунтCloudflare.

  • DNS-запись, настроенная для вашего домена в DNS Cloudflare, а также настроенная пара поддоменов. Вы можете следоватьCloudFlare’s tutorial on setting up a web site, чтобы настроить это.

[[step-1 -—- install-certbot]] == Шаг 1. Установка Certbot

Пакетcertbot по умолчанию недоступен через диспетчер пакетов CentOS. Вам нужно будет включить репозиторийEPEL для установки Certbot и его плагинов.

Чтобы добавить репозиторий CentOS 7 EPEL, выполните следующую команду:

sudo yum install -y epel-release

После завершения установки вы можете установитьcertbot:

sudo yum install -y certbot

А затем установите плагин CloudFlare для Certbot:

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

[.Примечание]##

Если вы используете другую службу DNS, вы можете найти соответствующий плагин с помощью командыyum search:

yum search python2-certbot-dns

Вы подготовили свой сервер для получения сертификатов. Теперь вам нужно получить ключ API от CloudFlare.

[[step-2 -—- getting-the-cloudflare-api]] == Шаг 2. Получение CloudFlare API

Чтобы Certbot автоматически обновлял сертификаты с подстановочными знаками, вам необходимо предоставить ему свой логин CloudFlare и ключ API.

Войдите в свою учетную запись Cloudflare и перейдите кProfile page.

Нажмите кнопкуView в строкеGlobal API Key.

CloudFlare Profile - API Keys

В целях безопасности вам будет предложено повторно ввести пароль учетной записи Cloudflare. Введите его и подтвердите CAPTCHA. Затем снова нажмите кнопкуView. Вы увидите свой ключ API:

CloudFlare Profile - API Keys

Скопируйте этот ключ. Вы будете использовать его на следующем шаге.

Теперь вернитесь на ваш сервер, чтобы продолжить процесс получения сертификата.

[[step-3 -—- configuring-certbot]] == Шаг 3 - Настройка Certbot

У вас есть вся необходимая информация, чтобы сообщить Certbot, как использовать Cloudflare, но давайте запишем ее в файл конфигурации, чтобы Сertbot мог использовать ее автоматически.

Сначала запустите командуcertbot без каких-либо параметров, чтобы создать файл начальной конфигурации:

sudo certbot

Затем создайте файл конфигурации в каталоге/etc/letsencrypt, который будет содержать ваш адрес электронной почты CloudFlare и ключ API:

sudo vi /etc/letsencrypt/cloudflareapi.cfg

Добавьте в него следующее, заменив заполнители на ваш логин Cloudflare и ключ API:

/etc/letsencrypt/cloudflareapi.cfg

dns_cloudflare_email = your_cloudflare_login
dns_cloudflare_api_key = your_cloudflare_api_key

Сохраните файл и выйдите из редактора.
С помощью ключа API Cloudflare вы можете делать из командной строки те же действия, что и из пользовательского интерфейса Cloudflare, поэтому для защиты вашей учетной записи сделайте файл конфигурации доступным для чтения. только его владелец, чтобы никто другой не мог получить ваш ключ:

sudo chmod 600 /etc/letsencrypt/cloudflareapi.cfg

Имея файлы конфигурации, давайте получим сертификат.

[[шаг-4 -—- получение-сертификата]] == Шаг 4 - Получение сертификата

Чтобы получить сертификат, мы воспользуемся командойcertbot и укажем нужный плагин, файл учетных данных, который мы хотим использовать, и сервер, который мы должны использовать для обработки запроса. По умолчанию Certbot использует рабочие серверы Let’s Encrypt, которые используютACME API версии 1, но Certbot использует другой протокол для получения сертификатов с подстановочными знаками, поэтому вам необходимо предоставить конечную точку ACME v2.

Выполните следующую команду, чтобы получить подстановочный сертификат для вашего домена:

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

Вам будет предложено указать адрес электронной почты, который должен получать срочные уведомления об обновлении и безопасности:

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

Затем вам будет предложено принять Условия предоставления услуг:

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

Затем вам будет предложено сообщить свой адрес электронной почты Фонду Electronic Frontier
:

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

Тогда Certbot получит ваши сертификаты. Вы увидите следующее сообщение:

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

Теперь у вас есть подстановочный сертификат. Давайте посмотрим, что Certbot скачал для вас. Используйте командуls, чтобы просмотреть содержимое каталога, в котором хранятся ваши ключи и сертификаты:

sudo ls /etc/letsencrypt/live/your_domain
Outputcert.pem  chain.pem  fullchain.pem  privkey.pem  README

ФайлREADME содержит информацию об этих файлах:

$ cat /etc/letsencrypt/live/your_domain/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.

Отсюда вы можете настроить свои серверы подстановочным сертификатом. Обычно вам нужны только два из этих файлов:fullchain.pem иprivkey.pem.

Например, вы можете настроить несколько веб-сервисов:

  • wwww.example.com

  • api.example.com

  • почта.example.com

Для этого вам понадобится веб-сервер, такой как Apache или Nginx. Установка и настройка этих серверов выходят за рамки этого учебного пособия, но следующие руководства помогут вам выполнить все необходимые шаги для настройки серверов и применения ваших сертификатов.

Для Nginx, посмотрите на эти учебники:

Для Apache обратитесь к этим учебникам:

Теперь давайте посмотрим на автоматическое обновление сертификатов.

[[шаг-5 -—- возобновление-сертификатов]] == Шаг 5 - Продление сертификатов

Let’s Encrypt выдает краткосрочные сертификаты, действительные в течение 90 дней. Нам нужно настроить задачу cron, чтобы проверять срок действия сертификатов и обновлять их автоматически.

Давайте создадимcron task
, который будет запускать ежедневную проверку обновлений.

Используйте следующую команду, чтобы открыть файлcrontab для редактирования:

sudo crontab -e

Добавьте следующую строку в файл, чтобы попытаться обновить сертификаты ежедневно:

кронтаб

30 2 * * * certbot renew --noninteractive
  • 30 2 * * * означает «запускать следующую команду каждый день в 2:30 утра».

  • Командаcertbot renew проверит все сертификаты, установленные в системе, и обновит те, срок действия которых истекает менее чем через тридцать дней.

  • --noninteractive сообщает Certbot не ждать ввода данных пользователем.

Вам потребуется перезагрузить веб-сервер после обновления сертификатов. Командаrenew включает перехватчики для запуска команд или сценариев до или после обновления сертификата. Вы также можете настроить эти хуки в файле конфигурации продления для вашего домена.

Например, чтобы перезагрузить сервер Nginx, откройте файл конфигурации обновления:

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

Затем добавьте следующую строку в раздел[renewalparams]:

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

renew_hook = systemctl reload nginx

Теперь Certbot автоматически перезапустит ваш веб-сервер после установки обновленного сертификата.

Заключение

В этом руководстве вы установили клиент Certbot, получили подстановочный сертификат с использованием проверки DNS и включили автоматическое продление. Это позволит вам использовать один сертификат с несколькими поддоменами вашего домена и защитить ваши веб-сервисы.

Related