2016-07-11 10 views
1

Я пытаюсь получить новые сертификаты для своих доменов, используемых в службах Интернета и электронной почты.Возможно ли возобновить сертификат для служб Apache и электронной почты, не перезагружая их?

Для этого я использую Certbot, который используется в качестве клиентской программы для подключения к LetsEncrypt, который выполняет создание сертификатов.

Каждый учебник, который я видел, не идентифицирует какую-либо методологию для возобновления сертификатов без перезапуска веб-сайтов (например, Apache) или служб электронной почты.

Кто-нибудь знает, как это сделать?

ответ

2

Документация certbot описывает способ получения сертификата без необходимости перезагрузки веб-сервера, используя WebRoot плагин: https://certbot.eff.org/docs/using.html#webroot

Чтобы подвести итог, вам необходимо пройти через несколько дополнительных аргументов команды certbot для обновления : certonly, --webroot и --webroot-path или -w. Таким образом, полная команда будет выглядеть примерно так:

certbot renew certonly --webroot -w /var/www/example/ -d www.example.com 

Согласно документации:

Webroot плагин работает, создавая временный файл для каждого из запрашиваемых доменов в $ {Webroot-путь} /.well-known/acme-challenge. Затем сервер проверки шифрования Let's Encrypt делает HTTP-запросы проверкой того, что DNS для каждого запрошенного домена решает сервер, на котором работает certbot.

Это позволяет зашифровать Давайте выполнять проверку домена без остановки Apache для привязки к порту 80, 443 и т.д.

+0

Через некоторое время я получаю этот ответ. Но теперь у меня возникают проблемы: я не хочу, чтобы мои веб-сайты через HTTP. И webroot должен выполнить вызов по HTTP. Вы знаете альтернативный способ выполнения задачи с использованием HTTPS без остановки или перезапуска Apache? –

+0

@HugoFonseca Если я правильно понял ваш вопрос, должно быть возможно разрешить только HTTP-подключения к временным файлам в $ {webroot-path} /. Хорошо известном/acme-challenge, в то же время требуя HTTPS для остальной части вашего сайта , Я могу представить несколько способов сделать это в конфигурации сервера, возможно, самым простым может быть правило перезаписи URL-адресов в файле .htaccess. Это зависит от того, как вы хотите заставить HTTPS для остальной части вашего сайта, но по существу вы просто создадите исключение для этого каталога. –

2

Для Apache 2.4: «apachectl graceful» («перезагрузка») перезагружает сертификаты для меня (тестируется с помощью ubuntu 16.04 с использованием 2.4.18-2ubuntu3). Предостережение: в Интернете много информации, в которой говорится, что apache требует полного перезапуска вместо перезагрузки для приема новых сертификатов. Поскольку для меня достаточно изящной перезагрузки, я бы сказал, что это возможно, возможно, даже вероятно, что для более старых версий Apache нужно было больше, чем перезагрузка?

Вы можете создать скрипт, который сначала обновит certbot, а затем apachectl изящный. Или просто 2 cronjobs, где apachectl изящный происходит после certbot cronjob.

Эта проблема не так плоха, хотя ИМХО: Letsencrypt возобновит сертификаты до 30 дней до истечения срока действия. Лично я перезапускаю свои серверы чаще, потому что мой еженедельный ubuntu autoupdater настроен в «/etc/apt/apt.conf.d/50unattended-upgrades» с помощью «Автоматический перезапуск :: Автоматическая перезагрузка» «true»; и вероятность того, что у него не будет обновления, которое заставляет его перезагружаться в течение 30 дней, довольно низкое.

Если вы не хотите перезагрузки, вам нужно будет проверить ваши другие услуги (postfix, dovecot приходят на ум, если у вас также есть почта на сервере) на то, что им нужно, чтобы принять новый сертификат, а затем добавить это к ваш скрипт, который запускает «certbot renew».

1

Certbot имеет встроенную команду, чтобы обновить все ваши сертификаты:

certbot renew certonly --webroot -w /var/www/example/ -d www.example.com 

Если вы хотите просто перезагрузить конфигурацию после того, как вы уже создали сертификат, просто запустите sudo service nginx reload или sudo service apache2 reload.Это приведет к перезагрузке конфигурации без перезагрузки (без простоя) вашего веб-сайта.

Я использую этот метод для автоматического обновления моего сертификата SSL для шифрования через cronjob, но он будет работать и для certbot. Более подробно см. Automatically renew Let's Encrypt SSL certificate

+0

Перезагрузка Apache не будет использовать новые сертификаты, вам потребуется перезагрузка. – magnetik

 Смежные вопросы

  • Нет связанных вопросов^_^