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