Назад | Перейти на главную страницу

Несоответствие сертификата при настройке Route53, CloudFront, Custom Origin

Задний план

Мои веб-сайты успешно используют CloudFlare с Let's Encrypt в течение года или двух. Веб-сайты размещены на EC2, у них есть действующие сертификаты Let's Encrypt для корневого каталога, www и всех используемых поддоменов. Веб-сайт управляется Wordpress.

Что я делаю

В качестве обучающего упражнения я решил изменить один из своих доменов, wildphotography.co.nz, на Route53 и CloudFront. Это не очень хорошо.

Эта проблема

После перехода с CloudFlare на Route53 с CloudFront я не могу просматривать свой веб-сайт. Подробности ниже. Мое желаемое конечное состояние - чтобы Route53 был моим DNS-сервером, а CloudFront - моим CDN.

Обратите внимание, что я вернулся к CloudFlare, потому что мне нужно, чтобы мой веб-сайт был в сети. У меня был Route53 в качестве DNS-сервера в течение 3-4 часов, и я мог видеть, что он разрешается в R53.

Подробности проблемы

После того, как я все настроил, в моем браузере появилась проблема

Из-за настройки Route53 запрос домена отправляется в CloudFront. Сертификат, предоставляемый CloudFront, предназначен для домена * .cloudfront.net. Отсюда несоответствие. Я считаю, что понимаю проблему, но не могу понять, как ее решить.

Если я перейду на URL-адрес Cloudfront (d1b5f3w2vf82yc.cloudfront.net), я получаю эту ошибку. Конечно, переход по этому URL-адресу обычно бесполезен.

Вот диагностика SSL

Вот моя настройка CloudFront. Обратите внимание, что я сделал снимок экрана после того, как изменил что-то незначительное, поэтому он показывает «в процессе». Я позволил ему распространиться, прежде чем испытать его.

Сначала обзор CloudFront

Настройки CloudFront Origin

Поведение CloudFront Root

Обратите внимание, что я перенаправляю с http на https на моем веб-сервере Nginx, поэтому я не беспокоюсь о том, чтобы CloudFront делал это. Это дает мне дополнительную информацию в моих журналах, полезную для диагностики.

Настройка Route53

Я удалил некоторые нерелевантные записи, относящиеся к электронной почте. Обратите внимание, что оба домена с www и без www являются записями псевдонимов, указывающими на распространение CloudFront. Он не принимает псевдоним cname - я даже не уверен, что это правильная комбинация.

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

Я создал новый поддомен origin.wildphotography.co.nz, который является cname для www.wildphotography.co.nz. Я считаю, что это необходимо, чтобы CloudFront мог найти IP-адрес исходного сервера.

Я пробовал CNAME, псевдоним, а не псевдоним, все что угодно.

Странно то, что когда он все еще был настроен с R53 / CloudFront, некоторые запросы проходили через CloudFront. Не много, но немного.

Любые идеи были бы хорошы. Я подозреваю, что у меня Route53 настроен как-то неправильно.

Обратите внимание, что вы также можете получить сертификат от AWS через ACM без дополнительной оплаты. Полученный сертификат можно затем развернуть в CloudFront для вашего домена. Для получения подробной информации посетите - http://docs.aws.amazon.com/acm/latest/userguide/gs-cf.html и прочтите сообщение в блоге - https://aws.amazon.com/blogs/aws/new-aws-certificate-manager-deploy-ssltls-based-apps-on-aws/

Прежде всего, вам необходимо загрузить свой собственный сертификат SSL в Cloudfront, чтобы избежать проблем во время проверки SSL. Если вы не загружаете собственный сертификат, действительный для имени вашего веб-сайта, Cloudfront предлагает сертификат, действительный только для его собственного домена cloudfront.net.

Затем вам понадобится пара записей в вашей зоне DNS в Route53:

  • Записи общедоступных веб-сайтов (www и вершина) должен указывать на ваш дистрибутив Cloudfront.
  • Другая вспомогательная запись (например, «origin») требуется для вашей настройки источника Cloudfront, поскольку Cloudfront не разрешает IP-источники. Эта вспомогательная запись должна указывать на ваш фактический веб-сервер. Важно, чтобы вы настроили свой дистрибутив на пересылку заголовка Host, чтобы ваш веб-сервер мог обслуживать правильное содержимое.

При такой настройке ваши клиенты направляются в Cloudfront через записи www / apex, а Cloudfront определяет местонахождение фактического веб-сервера через запись происхождения. Clodflare избавляет вас от реализации всей этой логики, потому что вы делегируете им свой DNS, но на самом деле это то, что они делают в фоновом режиме, когда вы включаете функцию CDN на своей панели DNS.