Я пытаюсь автоматизировать настройку 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
плагин (или, по крайней мере, какой-то другой плагин), поэтому я не могу его отключить.
Так что я нахожусь в ситуации, когда у меня есть курица и яйцо, потому что -
Я не могу создать conf nginx перед запуском certbot, потому что certbot пытается проверить conf nginx, и это не удается, потому что он ссылается на каталоги, которые не существуют
Я не могу запустить certbot перед созданием conf nginx, потому что certbot использует conf сайта для получения новых сертификатов
Единственная опция, которую я вижу, это
- создайте файл nginx conf без
#SSL
строк - запустите certbot для получения новых сертификатов
- обновите файл conf nginx для добавления в
#SSL
линии
Это кажется грязным, но не уверен, есть ли другой способ?
Какой правильный порядок для запуска?
Спасибо!