Что будет первым: создать файл сайта .ginf для сайта nginx или запустить certbot-auto certonly? - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь автоматизировать настройку certbot + nginx на сервере, используя Ansible.

При первом запуске сертификаты letsencrypt отсутствуют (пока). Тем не менее, я создаю nginx conf следующим образом, ссылаясь на каталоги SSL / cert, которые будут создавать с помощью certbot

server {

  listen              443 ssl;
  server_name         example.co;

  # ...

  # SSL
  ssl_certificate /etc/letsencrypt/live/example.co/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.co/privkey.pem;
  include /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

}

server {
  if ($host = example.co) {
      return 301 https://$host$request_uri;
  }

  listen 80;
  server_name example.co;
  return 404;
}

Затем, позже в ANSI-игре, я запускаю certbot-auto с --nginx plugin, но я получаю сообщение об ошибке

> /usr/local/bin/certbot-auto certonly --nginx -n --agree-tos --text -d example.co --email admin@example.co

Error while running nginx -c /etc/nginx/nginx.conf -t.

nginx: [emerg] cannot load certificate "/etc/letsencrypt/live/example.co/fullchain.pem"

Кажется, что certbot сначала проверяет conf nginx, прежде чем продолжить (что имеет смысл), но conf не проходит проверку, поскольку ссылается на несуществующие каталоги. Кроме того, требуется --nginx плагин (или, по крайней мере, какой-то другой плагин), поэтому я не могу его отключить.

Так что я нахожусь в ситуации, когда у меня есть курица и яйцо, потому что -

  1. Я не могу создать conf nginx перед запуском certbot, потому что certbot пытается проверить conf nginx, и это не удается, потому что он ссылается на каталоги, которые не существуют

  2. Я не могу запустить certbot перед созданием conf nginx, потому что certbot использует conf сайта для получения новых сертификатов

Единственная опция, которую я вижу, это

  • создайте файл nginx conf без #SSL строк
  • запустите certbot для получения новых сертификатов
  • обновите файл conf nginx для добавления в #SSLлинии

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

Какой правильный порядок для запуска?

Спасибо!

1 Ответ

1 голос
/ 09 октября 2019

Файл .conf обязательно должен быть там перед запуском certbot. Затем Certbot сам запишет путь к сертификатам в файл, поэтому не нужно выполнять шаг 3.

...