如何在nginx服务器上干净地处理第一次使用letsencrypt?

如何在nginx服务器上干净地处理第一次使用letsencrypt?,nginx,lets-encrypt,Nginx,Lets Encrypt,我使用letsencrypt/certbot管理证书以供nginx使用。我发现,在设置服务器时,我陷入了一种鸡和蛋的局面:nginx必须提供。众所周知的/acme challenge目录,但如果配置的ssl证书还不存在,nginx拒绝启动 到目前为止,我已经通过手动编辑nginx服务器块中的ssl,启动它,第一次运行certbot,然后恢复更改来解决这个问题。我想知道是否有更干净的方法 (目前我使用的是webroot auth方法,但我并不喜欢它。这里的目标是提供一种配置,在初始设置时能够正确执

我使用letsencrypt/certbot管理证书以供nginx使用。我发现,在设置服务器时,我陷入了一种鸡和蛋的局面:nginx必须提供
。众所周知的/acme challenge
目录,但如果配置的ssl证书还不存在,nginx拒绝启动

到目前为止,我已经通过手动编辑nginx服务器块中的ssl,启动它,第一次运行certbot,然后恢复更改来解决这个问题。我想知道是否有更干净的方法


(目前我使用的是webroot auth方法,但我并不喜欢它。这里的目标是提供一种配置,在初始设置时能够正确执行)

因为您知道证书的最终名称和目的地,所以可以生成自签名证书,要启动nginx,然后运行certbot,并将自签名替换为正确的。ACME挑战应该通过HTTP解决

生成自签名证书的代码。除了
keyout
out
参数之外,不要担心太多

openssl req -x509 -nodes -days 365 -newkey rsa:4096 \
    -subj "/C=UK/ST=England/L=London/CN=www.example.com" \
    -keyout "/path/to/your/key.cer" \
    -out "/path/to/your/certificate.cer"
您可以完全编写此脚本,这样您就不会感到头痛