我正在尝试使用Ansible在服务器上自动设置certbot + nginx。

第一次运行时,还没有letencrypt证书。但是我按如下方式创建nginx conf,引用将由certbot创建的SSL / cert目录

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;
}


然后在后面的播放中,我使用certbot-auto插件运行--nginx,但收到错误消息

> /usr/local/bin/certbot-auto certonly --nginx -n --agree-tos --text -d example.co --email [email protected]

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

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


似乎certbot会在继续之前先检查nginx conf(这很有意义),但是conf验证失败,因为它引用的目录不存在。另外,还需要--nginx插件(或至少一些其他插件),所以我不能放弃它。

所以我处于一种鸡与蛋的情况,因为-


我无法在运行certbot之前创建nginx conf,因为certbot尝试验证nginx conf,并且失败,因为它引用了不存在的目录
创建nginx conf之前,我无法运行certbot,因为certbot使用站点的conf来要求新证书


我唯一看到的选择是


创建不带#SSL行的nginx conf
运行certbot以获取新证书
更新nginx conf文件以在#SSL行中添加


感觉很混乱,但是不确定是否还有其他方法?

运行此命令的正确顺序是什么?

谢谢!

最佳答案

在运行certbot之前,肯定需要存在.conf文件。然后,Certbot自己将证书的路径写入文件中,因此步骤3不必要。

关于ssl - 哪个先出现-创建nginx网站`.conf`文件或运行`certbot-auto certonly`?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58295060/

10-11 08:46