Автоматизация обновления SSL-сертификата через API NetAngels

Автоматизация обновления SSL-сертификата через API NetAngels

Рассмотрим процесс автоматизации обновления SSL-сертификата на VDS. VDS может быть создан на основе разных образов:

  • Если ваш VDS создан с образом Панель Netangels, то SSL сертификаты на нем автоматически обновляются. Рекомендации из этой статьи вам не пригодятся.

  • Для все остальных образов обновлять SSL сертификаты требуется вручную.

Если вы используете бесплатный сертификат Let’s Encrypt, то более простым вариантом будет настроить продление через certbot или через dehydrated.

Заказать сертификат вы можете в панели управления хостингом, в разделе “Сервисы / SSL-сертификаты”. Для заказа доступны как платные SSL сертификаты от авторизованных центров сертификации, так и бесплатные от Let’s Encrypt.

В обоих случаях после выпуска сертификата его потребуется установить на сервер, как это сделать, рассказывается в статье “Как подключить SSL-сертификат для сайта на облачном VDS с панелью управления NetAngels”

Для реализации поставленной задачи будем работать в Bash и использовать публичный API. Для этого в первую очередь понадобится получить API-ключ пользователя в панели управления хостингом.

Имея на руках API-ключ, вы сможете сгенерировать токен, используя POST-запрос по адресу https://panel.netangels.ru/api/gateway/token/. В запросе необходимо передать параметр api_key.

curl -s -k -X POST -d "api_key=0va4StAikXDoQzV21Sbuq7zRGeKnFOSfFosh92QlkKLeQeWxKC1xfjud"  "https://panel.netangels.ru/api/gateway/token/"

В результате ответа сервера вы получите JSON с полем token или 403ю ошибку. Во втором случае, пожалуйста, проверьте запрос на его корректность.

{
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.gQMT5BAT0Njntrt_6bi-iMITMMdMFxST0B23ClnTBiw"
}

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

Внимание! Дальнейший доступ к API всегда требует заголовок для авторизации: 'Authorization': Bearer {token}'

Заведем переменную для дальнейшего удобства:

token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.gQMT5BAT0Njntrt_6bi-iMITMMdMFxST0B23ClnTBiw"

Отправим GET-запрос по адресу https://api-ms.netangels.ru/api/v1/certificates/find для поиска сертификатов для нашего домена. В запросе необходимо использовать параметр domains.

curl -s -k -H "Authorization: Bearer ${token}" -X GET "https://api-ms.netangels.ru/api/v1/certificates/find/?domains=mydomain.ru"

Результатом сервер вернет JSON с масивом entities, содержащий все найденые сертификаты.

{
  "entities": [
    {
      "created": "2018-03-19 09:28:26",
      "domains": [
        "mydomain.ru",
        "www.mydomain.ru"
      ],
      "extension_period": 1,
      "id": 3244,
      "is_renewal": true,
      "name": "mydomain.ru",
      "not_after": "2019-03-19 23:59:59",
      "not_before": "2018-03-19 00:00:00",
      "publisher": "LetsEncrypt",
      "state": "Issued",
      "updated": "2018-03-19 09:49:33"
    }
  ]
}

Следующим пунктом будет скачивание сертификата, используя GET-запрос по адресу https://api-ms.netangels.ru/api/v1/certificates/<id>/download/, где <id> - id сертификата из предыдущего ответа. В качестве параметров GET-запроса можно использовать name - название архива и префиксов файлов в нем, а так же type - tar, targz, zip для формата скачиваемого архива

curl -s -k -H "Authorization: Bearer ${token}" -X GET \
"https://api-ms.netangels.ru/api/v1/certificates/3244/download/?name=mydomain.ru&type=tar" -o mydomain.ru.tar

Скачав тем самым архив на сервер, его достаточно распаковать и заменить старый сертификат на новый.

Внимание, путь распаковки архива в вашем случае может отличаться, скорректируйте его.

tar -xf mydomain.ru.tar -C /etc/nginx/ssl/mydomain.ru

После чего не забудьте перезапустить web-сервер.

nginx -t && nginx -s reload

Рано или поздно сертификат истечет, поэтому стоит предусмотреть его продление. Если вы решите автоматизировать выпуск, то вам пригодится вызов API.

Наша автоматика для продления SSL-сертификата срабатывает за 3 дня до даты окончания действия сертификата. Если продлить не получилось, то потом за два дня и потом за 1 день до окончания действия сертификата.

Имея навыки программирования вы теперь можете скомпоновать все команды в один небольшой скрипт, используя любимый язык программирования, и установить его исполнение раз в неделю с помощью планировщика заданий Cron.

Рекомендуем вам ознакомиться так же с нашей статьей использование Cron на хостинге

Если в процессе работы у вас возникнут какие-либо вопросы, вы всегда можете обратиться в нашу службу технической поддержки.



Больше информации о SSL сертификатах.

С 2003 года
Надежность.
Нам доверяют десятки тысяч компаний и разработчиков
20 лет
Предоставляем услуги профессионального хостинга
35 000
Клиентов доверяют нам размещение своих сайтов
99.99%
Подтвержденный uptime
наших серверов хостинга
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
ВК49865