certbot создает сертификат на двух разных экземплярах ec2 - PullRequest
0 голосов
/ 28 мая 2020

Проблема

У меня запущено два экземпляра EC2. Один экземпляр EC2 в настоящее время размещает мой веб-сайт https://thechrisbolton.com, который, как вы можете видеть, имеет действующий сертификат letsencrypt. Я хочу создать сертификат на своем втором экземпляре EC2, где я буду развертывать свое приложение. Как только мое приложение будет развернуто на втором экземпляре EC2, я уничтожу первый. Однако я не могу получить сертификат, созданный на втором экземпляре EC2.

Ошибка

- The following errors were reported by the server:

   Domain: thechrisbolton.com
   Type:   unauthorized
   Detail: Invalid response from
   https://thechrisbolton.com/.well-known/acme-challenge/kITr3I__o6eb_WH2cguR200gWnt998DN1s8xamtPIbM
   [3.234.11.212]: "<html>\r\n<head><title>404 Not
   Found</title></head>\r\n<body>\r\n<center><h1>404 Not
   Found</h1></center>\r\n<hr><center>nginx/1.18.0</ce"

   Domain: www.thechrisbolton.com
   Type:   unauthorized
   Detail: Invalid response from
   https://www.thechrisbolton.com/.well-known/acme-challenge/DhzxfraTsUeN3a7bXQhfzS36CTHRzlBUWVAHceD
ETB8
   [3.234.11.212]: "<html>\r\n<head><title>404 Not
   Found</title></head>\r\n<body>\r\n<center><h1>404 Not
   Found</h1></center>\r\n<hr><center>nginx/1.18.0</ce"

Что я пробовал

$ certbot certonly --standalone -d thechrisbolton.com -d www.thechrisbolton. com

Я прочитал документацию по certbot , чтобы попытаться найти способ создать существующий сертификат. Единственное, что похоже на то, что это может сработать, - это флаг --duplicate. Но там указано, Most users will not need to issue this command in normal circumstances., поэтому я чувствую, что делаю что-то не так, если использую это.

1 Ответ

1 голос
/ 12 июня 2020

Причина, по которой вы не можете получить сертификат, созданный на втором экземпляре EC2. Это связано с тем, что домен https://thechrisbolton.com/ не указывает на второй экземпляр EC2.

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

(Я упростил процессы только для объяснения. )

Certbot работает следующим образом: он отправляет запрос в «Let's Encrypt» на выдачу сертификата для данного домена (в данном случае это https://thechrisbolton.com/). В ответ на этот запрос «Let's Encrypt» (он же LE) предоставляет certbot файл (также известный как вызов), который ему необходимо разместить в месте, доступном через inte rnet с этого url http://<requested-domain>/.well-known/acme-challenge/. Certbot делает именно это и помещает файл в то место, которое вы даете ему во время выполнения команды certbot --certonly (вы использовали опцию --standalone, в этом случае certbot раскручивает свой собственный сервер на порту 80 и делает файл доступный по адресу /.well-known/acme-challenge/), затем он снова вызывает «Let's Encrypt», говоря, что файл готов, дайте мне сертификат. Затем LE обращается к этому URL-адресу, чтобы проверить, доступен ли файл в указанном месте или нет. Если он находит файл, то только он выдает сертификат. Все это делается для того, чтобы убедиться, что человек, запрашивающий сертификат, владеет доменом, для которого он запрашивает сертификат.

Какое решение?

Если вы используете stati c IP, затем просто укажите stati c IP на новый экземпляр EC2 и переместите сертификаты на новый компьютер, и он должен работать.

Если вы не можете этого сделать, обновите свой DNS чтобы указать IP-адрес publi c нового экземпляра EC2, и выполните ту же команду certbot. Который вы используете прямо сейчас.

...