Невозможно заставить HTTPS работать со статически размещенным сайтом на S3 - PullRequest
0 голосов
/ 18 января 2019

Я не могу настроить HTTPS со статическим веб-сайтом, размещенным на S3. Я следовал официальной документации, а также некоторым учебникам, но все еще не могу ее устранить. Моя установка выглядит следующим образом.

Сначала я запрашиваю сертификат SSL через AWS Certificate Manager. На самом деле, я запросил 2 из них, и ни один из них не помогает заставить HTTPS работать. Сертифицированные домены SSL выглядят следующим образом. Я подтвердил, что статус issued.

  • *. Mydomain.com
  • sub.mydomain.com

Обратите внимание, что мое доменное имя зарегистрировано в Google Domains. У меня есть 3 записи CNAME следующим образом.

  • один для * .mydomain.com
  • один для sub.domain.com
  • один для HTTP обратно в корзину S3

В CloudFront я создаю дистрибутив. Происхождение и происхождение группы

  • Имя домена и путь к источнику = sub.mydomain.com.s3.amazonaws.com
  • Origin ID = S3-sub.mydomain.com
  • Тип источника = S3 Origin

Поведения

  • Path Pattern = Default(*)
  • Происхождение или происхождение группы = S3-sub.mydomain.com
  • Политика протокола просмотра = Redirect HTTP to HTTPS

На разных сайтах обучения я видел рекомендованное Viewer Protocol Policy как одно из значений (например, HTTP and HTTPS, Redirect HTTP to HTTPS, HTTPS Only). Я перепробовал все 3 значения и не получил желаемого эффекта (очень дорого обходиться, так как каждое изменение занимает 15+ минут).

После того, как дистрибутив CloudFront имеет статус Status = Deployed и State = Enabled, я попытался зайти на свой сайт через HTTPS, но он просто зависает и время ожидания. HTTP-доступ все еще работает нормально, что противоречит моему пониманию политики протокола Viewer = Redirect HTTP to HTTPS.

Есть идеи, что я здесь не так делаю? Многие учебники предлагают использовать сквозную службу AWS (например, DNS), чтобы упростить настройку, но я зарегистрировал свой домен в Google.

Обратите внимание, что в этом посте посвящен HTTPS с доступом только по VPN, а в этом посте предлагают подход с использованием всех AWS. Второй пост интересен тем, что один пользователь предложил ввести запись A. На данный момент у меня есть только запись CNAME для моего субдомена. Если бы я создал запись A, куда бы я указал?

Обновление: я зашел в домены Google и удалил запись CNAME sub, указывающую на URL-адрес корзины S3. Затем я добавил новое CNAME с sub, указывающим на URL-адрес CloudFront. Когда я пробую HTTPS, я могу что-то ударить, но получаю XML AccessDenied.

<Error>
 <Code>AccessDenied</Code>
 <Message>Access Denied</Message>
 <RequestId>186A2418C76E7526</RequestId>
 <HostId>
  somelongstring
 </HostId>
</Error>

1 Ответ

0 голосов
/ 18 января 2019

Мне удалось заставить все работать, выполнив 2 дополнительных действия.

В доменах Google я создал CNAME, указывающий sub на URL-адрес CloudFront.

На CloudFront, чтобы избежатьAccessDenied, я установил Default Root Object на index.html.По всей видимости, настройка индексного документа из S3 отделена от CloudFront.

...