我有一个NGINX服务器,我试图用Let's Encrypt来添加SSL。
我的开发设置如下:
url : dev.domain.in root: /var/www/dev/html
制作如下:
url : domain.in root: /var/www/production/html
所以在我的nginx默认页面中,我有两个服务器块,一个用于开发,另一个用于生产
我想为这两个服务器提供一个证书。
我知道根据Let's Encrypt网站的命令如下
cd / opt / letsencrypt ./letsencrypt-auto certonly -a webroot –webroot-path = / usr / share / nginx / html -d example.com -d www.example.com
但是这只能在SUBDOMAIN具有相同的webroot的情况下才能完成。
所以我怎么可以在这里添加CERT
请帮我一下
我在我的nginx框上的所有虚拟主机上使用了一个普通的webroot。
/opt/certbot/certbot-auto certonly --webroot --agree-tos -w /srv/www/letsencrypt/ \ -d example.com,www.example.com
…在nginx中我有snippets/letsencrypt.conf
:
location ~ /.well-known { root /srv/www/letsencrypt; allow all; }
…其中包含在我的服务器块为每个站点。
.well-known目录中的文件是临时的 – 它们只存在足够长的时间才能完成授权过程,然后将其删除。
一旦注册成功,我通过include ssl/example.com.conf;
将证书定义包含在服务器块中include ssl/example.com.conf;
该文件包含以下内容:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
…以及相关的listen指令在端口443上启用SSL。
您可以在多个服务器块中包含相同的定义。
我在我的证书中还有其他子域作为SAN,我为example.com
, www.example.com
和其他子域名(如click.example.com
提供了单独的服务器块 – 所有这些子域都使用相同的证书。
让我们加密webroot方法使用名为“.well-known / acme-challenge”的webroot目录中的文件。 您可以在您的开发和主服务器上配置一个位置片段,以指向另一个仅用于该文件的webroot。
就像是:
location /.well-known/acme-challenge { alias /etc/letsencrypt/webrootauth/.well-known/acme-challenge; location ~ /.well-known/acme-challenge/(.*) { add_header Content-Type application/jose+json; } }
并将您的webroot指向--webroot-path /etc/letsencrypt/webrootauth
这个讨论可以帮助
或者你可以使用独立的方法,手工做一些工作。