[Решено] Обновление SSL сертификата Let's Encrypt в cron

  • 10 Ответов
  • 834 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

capricorn

  • *******
  • 1634
  • 106
Приветствую,

На фронт-энде стоит nginx как обратный прокси Apache.

Вручную обновить сертификат получилось только с помощью плагина webroot.

/usr/src/certbot-auto --webroot -w /var/www/html/кореньсайта/htdocs -d www.домен.ru -d домен.ru

Иными способами, как я понял, нужно держать открытым порт 443 при останове nginx. Что делать не хочется.

При выполнении команды выше открывается диалог

You have an existing certificate that has exactly the same domains or certificate name you requested and isn't close to expiry.
(ref: /etc/letsencrypt/renewal/домен.conf)

What would you like to do?
-------------------------------------------------------------------------------
1: Keep the existing certificate for now
2: Renew & replace the cert (limit ~5 per 7 days)
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Как это в cron поместить? Чтобы отработало, когда сертификат устареет. Он 3 месяца действует.
« Последнее редактирование: 15.02.2017, 23:59:31 от capricorn »

*

capricorn

  • *******
  • 1634
  • 106
Если просто поместить в cron консольный скрипт с этой командой, то приходит ошибка

An unexpected error occurred:
EOFError: EOF when reading a line

Я надеялся, что хватит
certbot-auto renew
Сам только недавно в кроне настроил, но слишком долго ждать проверки ( а в мануалах так в основном было написано)

*

capricorn

  • *******
  • 1634
  • 106
certbot-auto renew --dry-run
работает вручную?

Проверил сейчас, по идее хватает даже команды из папки и не надо даже указывать дополнительные параметры

./certbot-auto renew

В итоге выдает

Cert not yet due for renewal

The following certs are not due for renewal yet:
и далее список установленных сертификатов (60 дней еще не прошли)

Выполнил --dry-run
Код
 ./certbot-auto renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/sitename.conf
-------------------------------------------------------------------------------
Cert not due for renewal, but simulating renewal for dry run
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for sitename
http-01 challenge for sitename
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0001_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0001_csr-certbot.pem
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/sitename/fullchain.pem (success)
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates above have not been saved.)


« Последнее редактирование: 15.02.2017, 23:28:42 от ProtectYourSite »

*

capricorn

  • *******
  • 1634
  • 106
у тебя только Apache?
мне пиcало:
Attempting to renew cert from /etc/letsencrypt/renewal/домен.ru.conf produced an unexpected error: Failed authorization procedure. домен.ru (tls-sni-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Incorrect validation certificate for TLS-SNI-01 challenge. Requested ***.***.acme.invalid from *.*.*.*:443. Received 1 certificate(s), first certificate had names "домен.ru, www.домен.ru", www.домен.ru (tls-sni-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Incorrect validation certificate for TLS-SNI-01 challenge. Requested ***.***.acme.invalid from *.*.*.*:443. Received 1 certificate(s), first certificate had names "домен.ru, www.домен.ru". Skipping.
« Последнее редактирование: 15.02.2017, 23:52:04 от capricorn »

связка nginx+апач, обновил немного сообщение выше
https://community.letsencrypt.org/t/trying-to-renew-certificate-almost-fixed/16434/16 не смотрел?
Ошибкой обычно бывают пути в конфиге
« Последнее редактирование: 15.02.2017, 23:36:46 от ProtectYourSite »

*

capricorn

  • *******
  • 1634
  • 106
останови пожалуйста nginx и покажи netstat -tlpn

Код
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      15243/dovecot
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      1/init
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      671/rpcbind
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      1365/apache2
tcp        0      0 ip:53        0.0.0.0:*               LISTEN      695/named
tcp        0      0 ip:53        0.0.0.0:*               LISTEN      695/named
tcp        0      0 ip:53        0.0.0.0:*               LISTEN      695/named
tcp        0      0 ip:53        0.0.0.0:*               LISTEN      695/named
tcp        0      0 ip:53        0.0.0.0:*               LISTEN      695/named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      695/named
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      696/sshd
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      695/named
tcp        0      0 ip:1500      0.0.0.0:*               LISTEN      839/ihttpd
tcp        0      0 0.0.0.0:37736           0.0.0.0:*               LISTEN      680/rpc.statd
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1218/mysqld
tcp6       0      0 :::111                  :::*                    LISTEN      671/rpcbind
tcp6       0      0 :::53                   :::*                    LISTEN      695/named
tcp6       0      0 :::22                   :::*                    LISTEN      696/sshd
tcp6       0      0 ::1:953                 :::*                    LISTEN      695/named
tcp6       0      0 :::35753                :::*                    LISTEN      680/rpc.statd


*

capricorn

  • *******
  • 1634
  • 106
у меня, как оказалось /usr/src/certbot-auto renew --dry-run сейчас тоже заработал.

поставил в cron. на почту пришло

/root/.local/share/letsencrypt/lib/python2.6/site-packages/cryptography/__init__.py:26: DeprecationWarning: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of cryptography will drop support for Python 2.6
  DeprecationWarning
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Cert not yet due for renewal
Cert not yet due for renewal

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/www.домен.ru.conf
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/домен.ru.conf
-------------------------------------------------------------------------------

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/www.домен/fullchain.pem (skipped)
  /etc/letsencrypt/live/домен.ru/fullchain.pem (skipped)
No renewals were attempted.
certbot-auto update домен

Порт получается не причем. Видимо certbot как-то проснулся после того, как я вручную обновил один раз.

Проверим, когда срок действия окончится.

СПС большое камрад.

*

capricorn

  • *******
  • 1634
  • 106
Цитировать
https://community.letsencrypt.org/t/trying-to-renew-certificate-almost-fixed/16434/16 не смотрел?
Ошибкой обычно бывают пути в конфиге

смотрел. у меня VirtualHost *:443
я уже не даю certbot менять конфиги.