Для многих Let's Encrypt стал неотъемлемой частью веб-разработки, а автоматическое обновление сертификата каждые 90 дней — рутинной процедурой. Фактически, сейчас это самый популярный удостоверяющий центр в интернете. Это великолепно, но и опасно.
Возникает вопрос: а что, если серверы Let's Encrypt временно перестанут работать? Не хочется думать о возможных причинах сбоя. Но желательно предусмотреть запасной вариант. То есть такой же удобный автоматизированный центр бесплатной сертификации.
К счастью, запасные варианты есть. Как минимум два. Такие же бесплатные автоматизированные УЦ, созданные по образцу Let's Encrypt.
Все коммуникации с Let's Encrypt происходят про протоколу ACME (Automated Certificate Management Environment). Это открытый протокол для автоматизации взаимодействия с УЦ. В нём нет ничего специфичного для Let's Encrypt, его поддерживает несколько других УЦ.
Сейчас как раз тот момент, когда всё больше УЦ начинают работать через ACME. Это означает, что практически все наши инструменты, скрипты и процессы для получения сертификатов из Let's Encrypt будут отлично работать и с другими центрами, которые поддерживают ACME.
Чтобы перестроиться на другой УЦ, достаточно просто изменить адрес API в настроенных скриптах с
Нам нужен УЦ, который соответствует двум критериям:
Этим критериям соответствует норвежский УЦ под названием BuyPass.
Бесплатная услуга называется BuyPass Go SSL: это автоматическая выдача и продление сертификатов + поддержка ACME. То, что и нужно.
Техническая документация объясняет, как настроить получение и обновление сертификата с помощью Certbot — официального клиента от Фонда электронных рубежей для работы с Let's Encrypt или любым другим УЦ, который поддерживает протокол ACME.
Регистрация в УЦ и получение сертификата в BuyPass элементарны, как и в случае Let's Encrypt, здесь никакой разницы.
Регистрация с указанием своего адреса электронной почты для уведомлений ('YOUR_EMAIL') и согласием на условия пользования (--agree-tos):
Получение сертификата:
Впоследствии при необходимости используются другие команды Certbot для отзыва сертификата (
Команду продления рекомендуется поместить в cron и выполнять автоматически, чтобы на всякий случай проверять истёкшие сертификаты. Например, так:
У BuyPass есть некоторые лимиты на ACME. Основной лимит — количество сертификатов на зарегистрированный домен (20 в неделю). Здесь имеется в виду та часть домена, которая куплена у регистратора доменных имён. То есть это лимит на все поддомены в общей сложности. Другой лимит — 5 дубликатов в неделю. Это лимит сертификатов на каждый конкретный поддомен. Есть лимиты на ошибки валидации — по 5 штук на аккаунт, на хост и в час.
Лимит запросов к конечным точкам
Максимальное количество авторизаций в процессе (Pending Authorisations): 300 штук.
Вместо Certbot можно использовать другой клиент acme.sh, который тоже изначально настроен на Let's Encrypt, но легко направляется на другой УЦ с поддержкой ACME.
Ещё один УЦ, который выдаёт бесплатные 90-дневные сертификаты по протоколу ACME — это австрийский ZeroSSL.
В вышеупомянутой программе acme.sh есть поддержка ZeroSSL, так что зарегистрироваться очень просто:
Далее одна команда для генерации сертификата:
Лимитов на обращение к API не существует. Есть и другие преимущества: этот УЦ даёт бесплатные сертификаты не только на 90 дней, но и на 1 год, есть панель веб-мониторинга и техподдержка.
Кстати, ZeroSSL генерирует сертификаты даже через веб-интерфейс, в пошаговом режиме с верификацией домена по электронной почте. Но для автоматизации такой способ, конечно, не годится.
Вот список всех известных серверов ACME. Их пока немного, но число растёт.
Let's Encrypt — выдающаяся организация, которая делает отличное дело. Но опасно класть все яйца в одну корзину. Чем больше УЦ работает по протоколу ACME и раздаёт бесплатные сертификаты в автоматическом режиме, тем более разнообразна и надёжна экосистема в целом.
У Let's Encrypt может случиться даунтайм или он может временно приостановить деятельность — и тогда на подстраховку придут Buypass и ZeroSSL. Наличие этих запасных вариантов в конечном итоге повышает доверие к самому Let's Encrypt, потому что это теперь не единая точка отказа. А сменить УЦ по ACME — дело нескольких секунд.
Возникает вопрос: а что, если серверы Let's Encrypt временно перестанут работать? Не хочется думать о возможных причинах сбоя. Но желательно предусмотреть запасной вариант. То есть такой же удобный автоматизированный центр бесплатной сертификации.
К счастью, запасные варианты есть. Как минимум два. Такие же бесплатные автоматизированные УЦ, созданные по образцу Let's Encrypt.
Протокол ACME
Все коммуникации с Let's Encrypt происходят про протоколу ACME (Automated Certificate Management Environment). Это открытый протокол для автоматизации взаимодействия с УЦ. В нём нет ничего специфичного для Let's Encrypt, его поддерживает несколько других УЦ.
Сейчас как раз тот момент, когда всё больше УЦ начинают работать через ACME. Это означает, что практически все наши инструменты, скрипты и процессы для получения сертификатов из Let's Encrypt будут отлично работать и с другими центрами, которые поддерживают ACME.
Чтобы перестроиться на другой УЦ, достаточно просто изменить адрес API в настроенных скриптах с
https://acme-v02.api.letsencrypt.org/directory
(Let's Encrypt) на https://api.buypass.com/acme/directory
(BuyPass, о нём см. ниже) или какой-нибудь другой.BuyPass
Нам нужен УЦ, который соответствует двум критериям:
- поддерживает ACME;
- выдаёт бесплатные сертификаты.
Этим критериям соответствует норвежский УЦ под названием BuyPass.
Бесплатная услуга называется BuyPass Go SSL: это автоматическая выдача и продление сертификатов + поддержка ACME. То, что и нужно.
Техническая документация объясняет, как настроить получение и обновление сертификата с помощью Certbot — официального клиента от Фонда электронных рубежей для работы с Let's Encrypt или любым другим УЦ, который поддерживает протокол ACME.
Регистрация в УЦ и получение сертификата в BuyPass элементарны, как и в случае Let's Encrypt, здесь никакой разницы.
Регистрация с указанием своего адреса электронной почты для уведомлений ('YOUR_EMAIL') и согласием на условия пользования (--agree-tos):
root@acme:~# certbot register -m 'YOUR_EMAIL' --agree-tos --server 'https://api.buypass.com/acme/directory'
Получение сертификата:
root@acme:~# certbot certonly --webroot -w /var/www/example.com/public_html/ -d example.com -d www.example.com --server 'https://api.buypass.com/acme/directory'
Впоследствии при необходимости используются другие команды Certbot для отзыва сертификата (
revoke
), продления истёкших сертификатов (renew
) и удаления сертификата (delete
).Команду продления рекомендуется поместить в cron и выполнять автоматически, чтобы на всякий случай проверять истёкшие сертификаты. Например, так:
#Cron-job scheduled under root to run every 12th hour at a specified minute (eg. 23, change this to your preference)
23 */12 * * * /opt/certbot/certbot-auto renew -n -q >> /var/log/certbot-auto-renewal.log
У BuyPass есть некоторые лимиты на ACME. Основной лимит — количество сертификатов на зарегистрированный домен (20 в неделю). Здесь имеется в виду та часть домена, которая куплена у регистратора доменных имён. То есть это лимит на все поддомены в общей сложности. Другой лимит — 5 дубликатов в неделю. Это лимит сертификатов на каждый конкретный поддомен. Есть лимиты на ошибки валидации — по 5 штук на аккаунт, на хост и в час.
Лимит запросов к конечным точкам
new-reg
, new-authz
и new-cert
: 20 в секунду. Лимит запросов к /directory
: 40 в секунду.Максимальное количество авторизаций в процессе (Pending Authorisations): 300 штук.
Вместо Certbot можно использовать другой клиент acme.sh, который тоже изначально настроен на Let's Encrypt, но легко направляется на другой УЦ с поддержкой ACME.
./acme.sh --issue --dns dns_cf -d example.com --server "https://api.buypass.com/acme/directory"
ZeroSSL
Ещё один УЦ, который выдаёт бесплатные 90-дневные сертификаты по протоколу ACME — это австрийский ZeroSSL.
В вышеупомянутой программе acme.sh есть поддержка ZeroSSL, так что зарегистрироваться очень просто:
acme.sh --register-account -m foo@bar.com --server zerossl
Далее одна команда для генерации сертификата:
acme.sh --issue --dns dns_cf -d example.com --server zerossl
Лимитов на обращение к API не существует. Есть и другие преимущества: этот УЦ даёт бесплатные сертификаты не только на 90 дней, но и на 1 год, есть панель веб-мониторинга и техподдержка.
Кстати, ZeroSSL генерирует сертификаты даже через веб-интерфейс, в пошаговом режиме с верификацией домена по электронной почте. Но для автоматизации такой способ, конечно, не годится.
Другие серверы ACME
Вот список всех известных серверов ACME. Их пока немного, но число растёт.
Let's Encrypt — выдающаяся организация, которая делает отличное дело. Но опасно класть все яйца в одну корзину. Чем больше УЦ работает по протоколу ACME и раздаёт бесплатные сертификаты в автоматическом режиме, тем более разнообразна и надёжна экосистема в целом.
У Let's Encrypt может случиться даунтайм или он может временно приостановить деятельность — и тогда на подстраховку придут Buypass и ZeroSSL. Наличие этих запасных вариантов в конечном итоге повышает доверие к самому Let's Encrypt, потому что это теперь не единая точка отказа. А сменить УЦ по ACME — дело нескольких секунд.