Использование CloudFront с внешним DNS-сервером, указывающим на экземпляр EC2 - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь настроить облачный фронт с моим экземпляром ec2. Домен находится в dreamhost, и я добавил запись CNAME, указывающую на URL-адрес облачного фронта.

Я использую Lets Encrypt на моем экземпляре EC2. Если я использую свой эластичный IP-адрес и устанавливаю его на запись A на хосте снов, он нормально пересылается, и все работает. Если я указываю запись CNAME на URL-адрес облачного фронта, я получаю ошибку 502.

Следуя руководству по устранению неполадок здесь , я проверил свой SSL-сертификат, используя онлайн-сервис, и он показывает, что все в порядке.

Чего мне не хватает? Нужно ли добавить URL-адрес облачного фронта в мой сертификат или как?

Кроме того, я указываю сертификат SSL дистрибутива на сертификат, размещенный в AWS Certificate Manager, который, как мне кажется, в конечном итоге указывает на мое происхождение. Я указал сертификат на свой URL и добавил запись CNAME, чтобы подтвердить право собственности, и все это, похоже, работало нормально.

UPDATE:

Я подключил свой общедоступный URL-адрес ec2 к онлайн-проверке ssl, и я получил следующий результат. Возможно, это может быть частью проблемы? Я получаю тот же результат, если ввожу свой эластичный IP. Кажется, что это может быть виновником, но я понятия не имею, каким будет следующий шаг. Вернуться к поиску в Google ..

enter image description here

ОБНОВЛЕНИЕ 2:

Из того, что я читаю, мне нужно убедиться, что промежуточный сертификат установлен на моем экземпляре ec2. Я также узнал, что в Apache 2.4 файл fullchain.pem заменяет старый файл cert.pem как SSLCertificateFile.

Я изменил содержимое /etc/httpd/conf/httpd-le-ssl.conf так:

   <VirtualHost *:443>
      DocumentRoot "/var/www/html"
      ServerName "test.example.com"
      ServerAlias "test.example.com"
      Include /etc/letsencrypt/options-ssl-apache.conf
      SSLCertificateFile /etc/letsencrypt/live/test.example.com/fullchain.pem
      SSLCertificateKeyFile /etc/letsencrypt/live/test.example.com/privkey.pem
   </VirtualHost>

После изменения этого параметра и перезапуска службы httpd я все еще получаю сообщение об ошибке в своем URL. Когда я подключаю test.example.com к контроллеру SSL, он показывает это:

enter image description here

Имейте в виду, что первый снимок экрана, который я разместил, использовал мой эластичный IP-адрес, а не URL-адрес test.example.com, так что в действительности он не сопоставим. У меня, к сожалению, нет скриншота того, как выглядел test.example.com до того, как я внес изменения, но я все еще получаю ошибку 502, так что, видимо, ее не исправляют.

ОБНОВЛЕНИЕ 3:

Похоже, что мои заголовки ответов показывают server: CloudFront, когда я перехожу на test.example.com, так что это шаг в правильном направлении. Я вообще этого не получал.

ОБНОВЛЕНИЕ 4:

Я скачал openssl и смог получить следующую информацию. Странно, что цепочка сертификатов даже не показывает, позволяет шифровать как источник сертификата.

Первоначально я настроил свой экземпляр EC2, используя сертификат letsencrypt, используя test.example.com. Затем, когда я создал дистрибутив облачного фронта, я использовал диспетчер сертификатов для создания сертификата, указывающего на мой test.example.com. Теперь я задаюсь вопросом, не настроил ли я это неправильно, так как вывод openssl показывает только сертификат amazon. Меня смущает взаимодействие между менеджером сертификатов и сертификатом let encrypt, который, похоже, указывает на один и тот же URL. тьфу.

Я думаю, мне нужно настроить балансировщик эластичной нагрузки и использовать сертификат из ACM в ELB. Тогда я думаю, мне больше не понадобится сертификат let encrypt на экземпляре EC2?

enter image description here

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 12 июля 2019

Если вы используете второй подход, указанный @Kannaiyan, вам не нужно перемещать доменное имя в AWS. Просто создайте размещенную зону и скопируйте записи NS, сгенерированные в зоне, вашему провайдеру DNS. Затем вы можете легко подключить свое доменное имя, включая домен apex, к дистрибутиву Cloudfront.

Вы можете проверить мой ответ здесь

0 голосов
/ 05 ноября 2018

Если вы хотите использовать свой собственный SSL с выделенным IP-адресом, AWS будет взимать с вас 600 долларов в месяц. CloudFront предоставит выделенный IP-адрес на границе, заберет ваш SSL и будет обслуживать этот IP-адрес.

Вы также можете импортировать пользовательский SSL в менеджер сертификатов AWS, который затем можно использовать для назначения его конечной точке CloudFront. Единственным недостатком этого подхода является необходимость повторного обновления SSL во время обновления сертификата.

Другие альтернативы,

Действия со сторонним поставщиком DNS.

  1. Создайте запись CNAME с вашим провайдером DNS.
  2. Создание сертификата безопасности AWS с помощью диспетчера сертификатов AWS, для которого может потребоваться проверка домена с использованием CNAME или адреса электронной почты. Это БЕСПЛАТНО.
  3. Добавьте запись CNAME в ваш дистрибутив CloudFront.
  4. Как только вы получите сертификат, назначьте сертификат конечной точке CloudFront

Будет добавлена ​​дополнительная передача в оба конца для запроса DNS для разрешения IP.

CNAME (разрешение) -> DNS-имя хоста CloudFront (thing.cloudfront.net) -> Разрешение на IP.

В качестве альтернативы (также лучший способ сделать это )

Если вы переместите свой DNS на маршрут 53, вы можете назначить ваш CloudFront для дистрибутива, который разрешит ваш обслуживающий домен в одном запросе DNS.

При вышеописанной настройке я не вижу необходимости в Lets Encrypt сертификате с EC2.

Подробнее о пользовательских сертификатах SSL с AWS в CloudFront можно узнать по здесь .

Надеюсь, это поможет.

EDIT:

Проверить SSL:

  1. Направьте источник своего облачного фронта в корзину S3.
  2. Убедитесь, что URL-адрес облачного фронта работает без проблем при подключении к корзине S3 с объектом.
  3. Проверьте URL-адрес пользовательского домена, чтобы убедиться, что пользовательский сертификат SSL работает.
  4. Теперь измените свое происхождение на сервер EC2.
  5. Убедитесь, что вы регистрируете запрос и ответ в целях отладки.
  6. Подтвердите еще раз URL своего пользовательского домена.
  7. Если вы получили 5XX, проверьте ответ от вашего сервера EC2.
...