Давайте зашифруем: удалим только одно имя хоста из сертификата

У меня есть следующий сертификат:

# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Found the following certs:
 Certificate Name: domain.example
  Domains: domain.example imap.domain.example mail.domain.example pop.domain.example smtp.domain.example www.domain.example
  Expiry Date: 2019-09-09 03:34:20+00:00 (VALID: 62 days)
  Certificate Path: /etc/letsencrypt/live/domain.example/fullchain.pem
  Private Key Path: /etc/letsencrypt/live/domain.example/privkey.pem

Теперь я хочу удалить domain.example и www.domain.example из сертификата, потому что веб-сервер переместился на другой экземпляр. Тот факт, что записи DNS были изменены, означает, что процесс обновления завершится неудачно, если domain.example и www.domain.example все еще являются частью сертификата, потому что DNS записи теперь указывают на другой IP-адрес.

Как я могу удалить определенные имена хостов из сертификата шифрования, не удаляя сертификат и не создавая новый?

0
задан 11 July 2019 в 08:00
3 ответа

Обычно я не утруждаюсь перевыпуском сертификатов в этом случае. Я просто редактирую файл конфигурации в /etc/letsencrypt/renewal/example.com.conf и удаляю оттуда домен. При следующем обновлении новый сертификат больше не будет содержать удаленный домен.

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

2
ответ дан 4 December 2019 в 12:15

Как я могу удалить определенные имена хостов из сертификата Let's encrypt без удаления сертификата и создания нового?

Нельзя.

Сертификат - это в основном открытый ключ, некоторые метаданные (например, даты и список имен хостов) и подпись над всем выше (подпись вычисляется центром сертификации, доставляющим этот сертификат).

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

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

Это также показывает опасность создания сертификатов для нескольких имен: это может дать стимул, поскольку снижает количество сертификатов для обработки, но связывает судьба всех имен одно к другому. Когда все автоматизировано, как и должно быть при работе с Let's Encrypt, не должно быть проблем иметь один сертификат на имя. Конечно, ситуация иная, если вам нужно управлять миллионами имен.

1
ответ дан 4 December 2019 в 12:15

Вы должны использовать --cert-name вместе со списком имен хостов, которые вы хотите сохранить. Итак:

certbot certonly --cert-name example.com -d imap.domain.example,mail.domain.example,pop.domain.example,smtp.domain.example

См. https://certbot.eff.org/docs/using.html#change-a-certificate-s-domains

1
ответ дан 4 December 2020 в 11:41

Теги

Похожие вопросы