Я не могу настроить 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>