stackoverflow.com/questions/46614040/...

ясь наДокументация AWS CloudfrontAWS API Gateway поддерживает TLS v1.0, v1.1, v1.2.

Но я хочу ограничить протоколы шифрования TLS v1.1 и v1.2 для моего API шлюза. Где я могу это настроить? Я не вижу ни одного дистрибутива Cloudfront для моего API. На странице ресурсов шлюза нет возможности указать протокол безопасности.

Мой API работает в течение последних 2 лет, используя собственный домен. Любая идея, как я могу ограничить мой API для протоколов TLS V1.1 и V1.2 только в шлюзе API?

Ответы на вопрос(3)

точник вашего шлюза API имеет HTTPS, вы можете указать, какой тип протоколов TLS будет использоваться между облачным фронтом и шлюзом API. Между средством просмотра / клиентом и облачным фронтом можно указать протоколы и наборы TLS в разделе «Общие»> «Политика безопасности конфигурации CloudFront». Эта конфигурация видна только если вы используете пользовательский SSL с SNI. Вы можете выбрать между:

TLSv1TLSv1_2016TLSv1.1_2016TLSv1.2_2018
 suman j06 окт. 2017 г., 23:18
@ Michael-sqlbot Можете ли вы проверитьstackoverflow.com/questions/46614040/... ?
 Michael - sqlbot04 окт. 2017 г., 05:51
Это требует предоставления второго дистрибутива CloudFront перед тем, который принадлежит и контролируется API Gateway.
 Michael - sqlbot05 окт. 2017 г., 01:27
@ sumanj правильно. Вы не можете увидеть его, получить к нему доступ или изменить его. Вот почему текущий обходной путь требует создания дополнительного дистрибутива CloudFront.
 suman j04 окт. 2017 г., 16:02
У API Gateway уже есть облачный фронт (по умолчанию). Однако я не вижу этой записи вcloud front ресурс из веб-консоли AWS.
Решение Вопроса

чтобы Gateway API с дополнительным распределением фронта облака работал, нам нужно

Из Консоли AWS в разделе API Gateway перейдите наПользовательское доменное имя и удалите сопоставленную запись.Создайте новый дистрибутив облачного фронта с

Настройки Cloudfront

Исходное доменное имя как конечная точка вашего Gate APIhttps://abcdfefg.execute-api.us-east-1.amazonaws.comПолитика протокола просмотра как только HTTPSИсходные протоколы SSL как TLSv1.2, TLSv1.1 (снимите флажок TLSv1)Добавить запись CNAME вАльтернативное доменное имя ссылаться на собственное доменное имяи несколько других значений по умолчанию После того, как вышеупомянутые изменения будут выполнены, доступ к пользовательскому имени домена по https приведёт в действие параметры безопасности TLS, как определено вCloudFront распределение.
 jlmurph12 мая 2018 г., 22:08
Дополнительную информацию можно найти в блоге AWS на эту тему:aws.amazon.com/about-aws/whats-new/2017/09/...
 Christophe Vidal31 янв. 2019 г., 11:30
Проблема в том, что удаление пользовательского имени домена имеетне очистил запись в связанных ресурсах сертификата. И я не могу создать новый облачный фронт с тем же альтернативным доменным именем, это похоже на ошибку в AWS. Кто-то нашел обходной путь?

пройдя через много проб и ошибок, могу документально подтвердить то, что, по моему мнению, является оптимальным решением на данный момент. Ответ от suman j был лучшим решением еще в октябре 2017 года, однако у него есть ограничение, и с тех пор AWS развивалась.

Так в чем же ограничение?

Если вы используете Lambda со шлюзом API и удаляете пользовательское имя домена, то для создания вручную дистрибутива CloudFront и привязки функции Lambda требуется определенный номер версии Lambda. То есть он не поддерживает псевдонимы. Это проблематично с CI / CD, где номера версий могут постоянно меняться. Однако сопоставления базовых путей пользовательских доменных имен шлюза API поддерживают псевдонимы, поэтому может быть лучше продолжать их использовать.

Так как же развивался AWS?

По состоянию на ноябрь 2017 года API Gateway поддерживает создание региональных конечных точек в пользовательских доменных именах. Эти конечные точки не создают дистрибутив CloudFront, тем самым оптимизируя стратегию размещения своего собственного дистрибутива CloudFront перед ними, что предотвращает использование TLS v1.0.

Так как мне все это настроить?

Шаги, которые я использовал для этого (через консоль), следующие. Обратите внимание, что вам может потребоваться изменить некоторые настройки для поддержки вашего конкретного приложения. Для целей этой документации предположим, что ваш api называется api.example.com.

В API Gateway отредактируйте свое пользовательское доменное имя, добавьте региональную конфигурацию, выберите сертификат и нажмите «Сохранить». Примечание. Для региональных API необходимо использовать сертификат ACM из того же региона, что и API. Больше информации здесь:https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-regional-api-custom-domain-migrate.html

Скопируйте имя целевого домена вновь созданной региональной конечной точки. (Например, d-abcdefg123.execute-api.us-east-1.amazonaws.com)

На маршруте 53 или в вашем провайдере DNS измените сопоставление вашего API с имени целевого домена Edge Optimized CloudFront на вновь созданное имя целевого домена региональной конечной точки (т.е. d-abcdefg123.execute-api.us-east-1.amazonaws.com ).

После распространения изменения DNS отредактируйте имя пользовательского домена и удалите Edge Optimized Endpoint, щелкнув значок x. Это должно позволить вам затем создать новый дистрибутив CloudFront с тем же CNAME вашего API без блокировки AWS.

В API Gateway создайте новое пользовательское доменное имя с именем домена = region-api.example.com, конфигурацией конечной точки = региональный и выберите сертификат ACM. Нажмите «Сохранить», затем «Редактировать» и добавьте базовое сопоставление путей в соответствии с текущим API и нажмите «Сохранить». Скопируйте имя целевого домена вновь созданной региональной конечной точки. (Например, d-xyzabcd456.execute-api.us-east-1.amazonaws.com)

На маршруте 53 или в вашем провайдере DNS создайте новую запись CNAME, сопоставляющую региональ- ное имя домена конечной точки в новом регионе-api.example.com. (Т. Е. D-xyzabcd456.execute-api.us-east-1.amazonaws.com)

В CloudFront создайте новый дистрибутив со следующими настройками:

ОРИГИНАЛЬНЫЕ НАСТРОЙКИ:

  Origin Domain Name = regional-api.example.com
   

  After entering the above the following hidden fields should then be displayed:   

  Origin SSL Protocols = TLSv1.2 & TLSv1.1

  Origin Protocol Policy = HTTPS Only

ПАРАМЕТРЫ ПОВЕДЕНИЯ ПО КЕШУ ПО УМОЛЧАНИЮ: (эти значения - то, что мне нужно для приложения, которое вызывает API для правильной работы)

  Viewer Protocol Policy = Redirect HTTP to HTTPS
    

  Allowed HTTP Methods = GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE

  Cached HTTP Methods = OPTIONS

  Cache Based on Selected Request Headers = Whitelist
    

  Whitelist Headers = Authorization   


  Object Caching = Customize  

  Minimum TTL = 0

  Maximum TTL = 0

  Default TTL = 0 

  Forward Cookies = All
      

  Query String Forwarding and Caching = Forward all, cache based on all
    

  Smooth Streaming = No

  Restrict Viewer Access (Use Signed URLs or Signed Cookies) = No
    

  Compress Objects Automatically = No 
   

  Lambda Function Associations = None

 

НАСТРОЙКИ РАСПРЕДЕЛЕНИЯ:

  Price Class = Use All Edge Locations
   

  AWS WAF Web ACL = None
     

  Alternate Domain Names (CNAMEs) = test-api.example.com
     

  SSL Certificate = Custom SSL Certificate (example.com)
   

  Custom SSL Client Support = Only Clients that Support Server Name Indication (SNI)
    

  Security Policy = TLSv1.1_2016 (recommended)
   

Поддерживаемые версии HTTP = HTTP / 2, HTTP / 1.1, HTTP / 1.0

В ожидании завершения создания CloudFront Distribution (в среднем 40 минут) в Route 53 или у вашего провайдера DNS создайте новую запись CNAME, сопоставляя test-api.example.com с вновь созданным доменным именем CloudFront (например, d123abcdefg.cloudfront.net)

После завершения создания дистрибутива полностью протестируйте свое приложение на test-api.example.com.

Если тестирование выполнено успешно, обновите альтернативные доменные имена (CNAME) вашего нового CloudFront так, чтобы он был = api.example.com. (обратите внимание - это не сделает его «живым», для этого необходимо изменить DNS ниже)

Как только обновление распространения завершено (в среднем 40 минут), затем в Route 53 или в вашем провайдере DNS обновите сопоставление записи CNAME api.example.com для вновь созданного доменного имени CloudFront (то есть d123abcdefg.cloudfront.net)

Если все работает хорошо, теперь вы можете удалить запись Route 53 / DNS CNA test-api.example.com и удалить имя пользовательского домена API-шлюза api.example.com.

Для бонусных баллов, если используется Маршрут 53, рекомендуется использовать псевдонимы записей A и AAAA вместо CNAME для шагов 53 Маршрута, описанных выше (что я и сделал). Это немного снижает стоимость, несколько скрывает базовый дистрибутив CloudFront, а также обеспечивает поддержку IPv6.

Надеюсь, это поможет! :-)

Ваш ответ на вопрос