certbot-auto / letsencrypt настройка одного ключа для нескольких доменов, указывающих на один и тот же сервер

Я действительно больше занимаюсь фронтенд-разработкой, поэтому конфигурация сервера - это для меня совершенно новая территория, извините, если это простой вопрос!

У меня возникли проблемы, пытаясь заставить мой certbot-auto сгенерировать ключ SSH для нескольких доменов, указывающий на одно поле.

У меня есть 3-4 домена (domain1.net, domain2.io, domain3.me, domain4.codes), которые все указывают на одну и ту же каплю Digital Ocean.

Раньше (пару месяцев назад) я пробовал это напрямую с 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-ключи:

  1. работает для всех вышеуказанных доменов
  2. автоматическое продление через certbot-auto возобновление

и не совсем уверен, где я здесь ошибаюсь ... любая помощь ОЧЕНЬ ценится!

РЕДАКТИРОВАТЬ: так выглядит мой блок конфигурации сервера в 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
  }

person tdc    schedule 23.11.2016    source источник


Ответы (1)


Просто хотел проследить - у меня это работает!

Оказалось, что моя команда была правильной, но я неправильно использовал -dflag - его нужно применять для каждого домена отдельно. Итак исправленная команда:

./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
person tdc    schedule 25.11.2016
comment
Большой! Но что, если у вас более 100 доменов? Могли бы вы все еще сделать это через 1 сертификат с возможностью шифрования? Я понимаю, если вы не знаете ответа. - person Karem; 04.02.2017