Задать вопрос
@lagudal

Certbot renew -как прописать конфиги так, чтобы сертификаты обновлялись автоматически?

Дано: домен с тремя сабдоменами, vps ubuntu 20.04, nginx на 8080 через Varnish на 80 порту.
На этих 3 сабдоменах по сайту на Magento 2.
Сначала были установлены сертификаты от letsencrypt (стандарно, certbot с последующим certbot renew --dry-run), потом уже инсталлированны варниш и магенто инстансы, и настроены конфиги nginx под них.
вот пример nginx конфига одного из виртуальных хостов.
spoiler
server {
	listen 8080;
	server_name magento.site.com;
	set $MAGE_ROOT /var/www/magento;
	set $MAGE_DEBUG_SHOW_ARGS 0;
	set $MAGE_MODE default;
	include /var/www/magento/nginx.conf.sample;
}
server {
	server_name magento.site.com;

    listen [::]:443 ssl http2; # managed by Certbot
    listen 443 ssl http2; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/magento.site.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/magento.site.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    
    # HSTS (ngx_http_headers_module is required) (63072000 seconds)
   add_header Strict-Transport-Security "max-age=63072000" always;
   location / {
       proxy_pass http://127.0.0.1;
       proxy_set_header Host               $http_host;
       proxy_set_header X-Forwarded-Host   $http_host;
       proxy_set_header X-Real-IP          $remote_addr;
       proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto  https;
       proxy_set_header X-Forwarded-Port   443;
       proxy_buffer_size                   128k;
       proxy_buffers                       4 256k;
       proxy_busy_buffers_size             256k;
       fastcgi_buffer_size                 32k;
       fastcgi_buffers                     4 32k;
   }
}

Все работает корректно, до того момента, пока certbot не пытается обновить сертификаты. Утром одного дня получаю 3 просроченных сертификата, вручную - с настроенными конфигами - не срабатывает -
Challenge failed for domain magento.site.com
В принципе, изменив один конфиг nginx на дефолный, отключив варниш и переведя nginx на 80 порт, все обновилось, делов на 5 минут, но все же... Как то можно в такой конфигурации заставить certbot обновлять сертификаты автоматом? Видел что в конфиг варниш предлагается добавить
spoiler
backend certbot {
    .host = "127.0.0.1";
    .port = "8080";
}

sub vcl_recv {
    if (req.url ~ "^/\.well-known/acme-challenge/") {
        set req.backend_hint = certbot;
        return(pipe);
    }
}

sub vcl_pipe {
    if (req.backend_hint == certbot) {
        set req.http.Connection = "close";
        return(pipe);
    }
}

но это не помогло.
  • Вопрос задан
  • 166 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Так certbot умеет-же обновлять уже выданный сертификат, и повторное подтверждение (конфигурирование NGINX) для этого уже не нужно!

P.S. --dry-run уберите.
Ответ написан
Комментировать
--dry-run - Это для тестов эмитирует выдачу сертификатов не тратя попытки при этом файлы не создаютя !
так же не забыайте что нужно применить сертификаты перед этим протестируйте что конфиги валидны.
как-нибудь так
* */12 * * * /usr/sbin/nginx -t && /usr/sbin/nginx -s reload  >/dev/null 2>&1

ну иcertbot renew до этого за пол часика.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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