Я изучал проблему DNS-01 в Let's Encrypt; и у меня возник вопрос о процессе субдомена [1].
Скажем, сайт example.com раздает бесплатные поддомены; Что мешает мне запросить подстановочный сертификат Let's Encrypt для * .example.com, требуя поддомена _acme-challenge.example.com для обработки запроса DNS-01?
Есть ли что-нибудь в протоколе ACME (или что-нибудь еще), что мешает мне это сделать?
[1] = https://letsencrypt.org/docs/challenge-types/#dns-01-challenge
Обычно сайты, предоставляющие бесплатные / настраиваемые поддомены, предоставляют A
записей, тогда как задача ACME DNS-01 требует добавления TXT
запись. Это сделало бы то, что вы предлагаете маловероятно.
Если сайт позволяет добавлять произвольные TXT
записи для поддоменов и не резервирует _acme-challenge
, то в протоколе нет ничего, что могло бы предотвратить злоупотребление такой функцией, и это была бы уязвимая служба. Однако этот вариант использования настолько редок, что никто не будет учитывать его исключительно при разработке подобных протоколов.
К счастью, если это произойдет, срок действия сертификатов Let's Encrypt истечет через три месяца, и также возможно отозвать сертификат даже без доступа к его закрытому ключу, только для таких случаев:
Если кто-то выпустил сертификат после компрометации вашего хоста или DNS, вы захотите отозвать этот сертификат, как только восстановите контроль. Чтобы отозвать сертификат, Let's Encrypt необходимо будет убедиться, что вы контролируете доменные имена в этом сертификате (в противном случае люди могут отозвать сертификаты друг друга без разрешения)! Для проверки этого элемента управления Let's Encrypt использует те же методы, которые он использует для проверки элемента управления для выдачи: вы можете поместить значение в запись DNS TXT или поместить файл на HTTP-сервер. - -
После подтверждения контроля над всеми доменными именами в сертификате, который вы хотите отозвать, вы можете загрузить сертификат из crt.sh, а затем приступить к отзыву сертификата, как если бы вы его выпустили:
certbot revoke --cert-path /PATH/TO/downloaded-cert.pem