Nginx certbot auto/letsencrypt为指向同一服务器的多个域设置一个密钥

Nginx certbot auto/letsencrypt为指向同一服务器的多个域设置一个密钥,nginx,https,lets-encrypt,certbot,Nginx,Https,Lets Encrypt,Certbot,我实际上更多的是一个前端开发人员,所以服务器配置对我来说是一个非常新的领域,如果这是一个简单的问题,很抱歉 我在尝试让certbot自动为多个域生成SSH密钥时遇到了一些麻烦,指向一个框 我有3-4个域(domain1.net,domain2.io,domain3.me,domain4.code),它们都指向同一个数字海洋水滴 之前(几个月前),我曾直接尝试使用letsencrypt(当时没有certbot)。不知何故,我的所有域都使用了SSL,但它们最近都过期了,我现在似乎只能续费domain

我实际上更多的是一个前端开发人员,所以服务器配置对我来说是一个非常新的领域,如果这是一个简单的问题,很抱歉

我在尝试让certbot自动为多个域生成SSH密钥时遇到了一些麻烦,指向一个框

我有3-4个域(
domain1.net
domain2.io
domain3.me
domain4.code
),它们都指向同一个数字海洋水滴

之前(几个月前),我曾直接尝试使用
letsencrypt
(当时没有
certbot
)。不知何故,我的所有域都使用了SSL,但它们最近都过期了,我现在似乎只能续费
domain1.net
,而不能续费其他域

我尝试了以下命令:

./certbot-auto certonly -a webroot --agree-tos -w /var/www/domain1.net/public_html/ \--expand -d domain1.net,www.domain1.net,domain2.io,www.domain2.io,domain3.me,www.domain3.me,domain4.codes,www.domain4.codes
…这似乎很有效,我得到了以下信息:

| Saving debug log to /var/log/letsencrypt/letsencrypt.log             │
│ Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org      │
│ Cert not yet due for renewal                                         │
│ Renewing an existing certificate                                     │
│ Performing the following challenges:                                 │
│ http-01 challenge for domain1.net                                    │
│ http-01 challenge for www.domain1.net                                │
│ http-01 challenge for domain2.io                                     │
│ http-01 challenge for www.domain2.io                                 │
│ http-01 challenge for domain3.me                                     │
│ http-01 challenge for www.domain3.me                                 │
│ http-01 challenge for domain4.codes                                  │
│ http-01 challenge for www.domain4.codes                              │
│ Using the webroot path /var/www/domain1.net/public_html for          │
│ all unmatched domains.                                               │
│ Waiting for verification...                                          │
│ Cleaning up challenges                                               │
│ Generating key (2048 bits):                                          │
│ /etc/letsencrypt/keys/0012_key-certbot.pem                           │
│ Creating CSR: /etc/letsencrypt/csr/0012_csr-certbot.pem

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/domain1.net/fullchain.pem. Your cert
   will expire on 2017-02-20. To obtain a new or tweaked version of
   this certificate in the future, simply run certbot-auto again. To
   non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
。。好的,太好了!然而,似乎只有
domain1.net
www.domain1.net
起作用了。。。其他域声称没有使用HTTPS

我还在
/etc/letsencrypt/live/
目录中看到多个文件。。我以前尝试过让它工作(直接使用letsencrypt,而不是通过certbot),直到今天它才工作,直到今天它们过期并拒绝续费。这是我在该目录中看到的内容:

tom@Personal:/opt$ sudo ls -la /etc/letsencrypt/live/
total 20
drwx------ 5 root root 4096 Nov 22 18:22 .
drwxr-xr-x 8 root root 4096 Nov 22 18:22 ..
drwxr-xr-x 2 root root 4096 Nov 22 18:41 domain1.net
drwxr-xr-x 2 root root 4096 Oct 16 00:00 domain1.net-0001
drwxr-xr-x 2 root root 4096 Nov 22 18:22 www.domain1.net
嗯。。不确定其中为什么有多个条目。不应该只有一个吗

不管怎样——我对HTTPS/keys/NginX还不够精通,无法弄明白这一点,所以我正在抓狂。我只想获取我的SSL密钥:

  • 正在为上述所有域工作
  • 通过certbot自动续订自动续订
  • 我也不确定我到底把这里搞砸了。。。非常感谢您的帮助

    编辑:这是我的服务器配置块在nginx中的外观:

    server {
    # listen 80 default_server;
    # listen [::]:80 default_server ipv6only=on;
    
    
      # START LETS ENCRYPT ADDITIONS:
      listen 443 ssl;
      server_name domain1.net www.domain1.net domain2.io www.domain2.io domain3.me www.domain3.me domain4.codes www.domain4.codes;
      ssl_certificate /etc/letsencrypt/live/www.domain1.net/fullchain.pem; # managed by Certbot
      ssl_certificate_key /etc/letsencrypt/live/www.domain1.net/privkey.pem; # managed by Certbot
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_prefer_server_ciphers on;
      ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
      # /END LETS ENCRYPT ADDITION
    
      root /var/www/domain1.net/public_html;
      index index.php index.html index.htm;
    
      # FOR LETSENCRYPT AUTO-RENEWAL, we must give it access to /.well-known
      location ~ /.well-known {
        allow all;
      }
      # /END LETSENCRYPT AUTO_RENEWAL
    
      location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
      }
    

    我只是想跟进一下,我让它工作起来了

    原来我的命令是正确的,但我误用了
    -d
    标志——它需要分别应用于每个域。因此,正确的命令:

    ./certbot-auto certonly -a webroot --agree-tos -w /var/www/domain1.net/public_html/ \--expand -d domain1.net,www.domain1.net  -d domain2.io,www.domain2.io -d domain3.me,www.domain3.me -d domain4.codes,www.domain4.codes
    

    伟大的但是如果你有超过100个域名呢?您仍然可以通过1个证书和lets encrypt这样做吗?如果你不知道答案,我理解。