7

我有一个 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

请帮帮我

4

2 回答 2

11

我在我的 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;中,该文件包含以下内容:

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

...以及相关的监听指令以在端口 443 上启用 SSL。

您可以在多个服务器块中包含相同的定义。

我的证书中还有其他子域作为 SAN,并且我有单独的服务器块example.comwww.example.com以及其他子域,例如click.example.com- 都使用相同的证书。

于 2016-07-12T09:22:25.987 回答
1

Let´s Encrypt webroot 方法使用您的 webroot 目录中名为“.well-known/acme-challenge”的文件。您可以在您的开发服务器和主服务器上配置一个位置片段,以指向另一个 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

这个讨论可以帮助

或者您可以使用独立方法并手动完成一些工作。

于 2016-04-25T22:15:41.800 回答