Давайте зашифруем сертификат и NGINX - Невозможно найти сертификат или директиву ключа

Мой сервер работает на LEMP Stack Ubuntu 16.04 и последней версии nginx

У меня уже есть сертификат SSL, установленный на моем сервер для следующих доменов и поддоменов: example.com , domain1.example.com и все работает нормально.

Чего я пытаюсь достичь

Я хочу создать новый сертификат для domain2.example.com

Для этого я попробовал эту команду:

sudo certbot --nginx - d example.com -d domain1.example.com -d domain2.example.com --expand

Сообщение об ошибке

Не удается найти сертификат или ключевую директиву в /etc/nginx/sites-enabled/example.com для set (['www.example.com', '* .example.com', 'example.com']). VirtualHost не был изменен.

nginx config

server {

   # SSL configuration

   listen 443 ssl http2 default_server;
   listen [::]:443 ssl http2 default_server;
   include snippets/ssl-example.com.conf;
   include snippets/ssl-params.conf;


    root /var/www/laravel/public;
    index index.php index.html index.htm;


    server_name example.com *.example.com www.example.com ;
}

Вопросы

Что я делаю не так? Как я могу воссоздать сертификат, чтобы добавить domain2 ?

3
задан 26 July 2017 в 05:21
3 ответа

Для меня я зашел в папку / etc / nginx / sites-enabled и вручную удалил ошибочные файлы виртуального хоста с символьной связью, которые, как я думал, я удалил ранее . Сюрприз, они все еще были там. Поэтому обязательно выполните sudo rm -rf [имя файла] в этой папке. Затем перезапустите nginx с помощью sudo nginx -s reload и снова запустите команду certbot, которая должна быть GTG.

0
ответ дан 3 December 2019 в 07:53

Один из лучших способов - использовать подключаемый модуль webroot (описанный https://certbot.eff.org/#centosrhel7-other ). Я советую действовать следующим образом:

  1. Добавьте следующую директиву местоположения для хостов (серверных блоков), которые вы хотите обработать с помощью certbot, и получить для этого сертификаты:

     location /.well-known {
      корень / usr / share / nginx / html;
     }
     
  2. Установите certbot

  3. Exec certbot certonly , команду
  4. Следуйте инструкциям. Выберите способ аутентификации «webroot» (2 вариант). И когда вы запросите www-root для вашего домена, введите / usr / share / nginx / html (как в директиве местоположения root).
  5. Когда все будет готово, вы сможете найти свои сертификаты в / etc / letsencrypt / live / youdomain.com / fullchain.pem .
  6. Добавить в серверный блок:

     ssl on;
    ssl_certificate /etc/letsencrypt/live/youdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/youdomain.com/privkey.pem;
     

Вот и все;) После этого вы можете легко обновить сертификаты, запустив команду certbot Renew .

Как это работает?

Когда мы добавляем директиву местоположения, мы выбираем настраиваемую корневую папку для /. Хорошо известный ] расположение. Certbot создает файлы внутри . Хорошо известного каталога, а внешний сервер аутентификации (ACME CA) проверяет файлы в этой папке. Если вы управляете множеством доменов или используете nginx в качестве прокси (!), Очень полезно использовать один общий корень для /. Широко известного местоположения, потому что в этом случае у вас может не быть корневого каталога на машине с nginx (для Например, у вас установлен nginx на одном VPS в качестве прокси для Apache, установленного на другом VPS).

Удачи.

0
ответ дан 3 December 2019 в 07:53

Вот что мне нужно было сделать.

  1. Сначала найдите существующие сертификаты, набрав сертификаты certbot
  2. Затем укажите сертификат, который вы хотите развернуть
  3. Обновить сертификат, набрав sudo certbot certonly --cert-name example.com -d example.com -d domain1.example.com -d domain2.example.com --expand .
  4. Выберите 2: Поместить файлы в корневой каталог каталог (webroot)
  5. Введите новый webroot , который был для меня / var / www / laravel
0
ответ дан 3 December 2019 в 07:53

Теги

Похожие вопросы