У меня есть следующий сертификат:
# 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-адрес.
Как я могу удалить определенные имена хостов из сертификата шифрования, не удаляя сертификат и не создавая новый?
Обычно я не утруждаюсь перевыпуском сертификатов в этом случае. Я просто редактирую файл конфигурации в /etc/letsencrypt/renewal/example.com.conf
и удаляю оттуда домен. При следующем обновлении новый сертификат больше не будет содержать удаленный домен.
Но в вашем случае, поскольку имя, которое вы хотите удалить, было оригинальным для сертификата, я бы посоветовал вам вообще не продлевать этот сертификат, но удалите файл конфигурации обновления для старого сертификата, затем выпустите новый сертификат только с теми именами, которые вы хотите сохранить.
Как я могу удалить определенные имена хостов из сертификата Let's encrypt без удаления сертификата и создания нового?
Нельзя.
Сертификат - это в основном открытый ключ, некоторые метаданные (например, даты и список имен хостов) и подпись над всем выше (подпись вычисляется центром сертификации, доставляющим этот сертификат).
Это означает, что после выпуска вы можете изменить ничего в нем, иначе подпись больше не будет совпадать и она будет отклонена как недействительная.
Вам нужно сгенерировать новый сертификат с нуля. Вам не нужно удалять текущий, вы можете продолжать использовать его или нет, никакого вреда не будет, если некоторые имена в нем больше не существуют или не разрешаются.Но вы можете сгенерировать новые с правильным набором нужных вам имен.
Это также показывает опасность создания сертификатов для нескольких имен: это может дать стимул, поскольку снижает количество сертификатов для обработки, но связывает судьба всех имен одно к другому. Когда все автоматизировано, как и должно быть при работе с Let's Encrypt, не должно быть проблем иметь один сертификат на имя. Конечно, ситуация иная, если вам нужно управлять миллионами имен.
Вы должны использовать --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