参考AWS CloudFront文档,AWS API网关支持TLS v1.0,v1.1,v1.2。
但我想将加密协议限制为我的网关API的TLS V1.1和V1.2。我在哪里配置此?我没有看到我的API的云偏转分布。网关资源页面没有指定安全协议的选项。
我的API使用自定义域运行了过去2年。知道如何仅在API网关中将API限制为TLS V1.1和V1.2协议?
我刚刚通过大量的审判&错误,我可以记录我认为目前对此的最佳解决方案。Suman J的答案是2017年10月的最佳解决方案,但是它确实有一个限制,并且AWS从那以后也随之发展。
那么限制是什么?
如果您使用的是与API网关一起使用Lambda并删除自定义域名,则手动创建CloudFront Distribution并关联LAMBDA功能,需要特定的Lambda版本号。也就是说,它不支持别名。这对于CI/CD来说是有问题的,其中版本编号可以不断更改。但是,API网关自定义域名基本路径映射确实支持别名,因此最好继续使用这些别名。
那么AWS如何发展?
截至2017年11月,API网关支持在自定义域名中创建区域端点。这些端点不会创建云沿分布,从而优化了将自己的云方向分布放在其前面的策略,以防止使用TLS V1.0。
那么我该如何设置全部?
我用来执行此操作的步骤(通过控制台)如下。请注意,您可能需要更改一些设置以支持您的特定应用程序。为了本文档的目的,请说您的API命名为API.EXAMPLE.com。
-
在API网关中,编辑您的自定义域名,添加区域配置,选择您的证书,然后单击"保存"。注意:对于区域API,您需要使用与API同一区域的ACM证书。更多信息在这里:https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-negiary-api-custom-custom-domain-migrate.html
-
复制新创建的区域端点的目标域名。(例如d-abcdefg123.execute-api.us-east-1.amazonaws.com)
-
在53号公路或您的DNS提供商中,将API的映射从边缘优化的CloudFront目标域名更改为新创建的区域端点目标域名(IE D-ABCDEFG123.Execute-api.us-east)-1.amazonaws.com)。
-
一旦DNS更改传播,请单击X图标,编辑自定义域名并删除边缘优化的端点。然后,这应该使您能够使用与API相同的api cname创建一个新的云方向发行,而不会阻止您。
-
在API网关中,使用域名创建一个新的自定义域名= regional-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分钟)时,在53号公路或您的DNS提供商中创建一个新的CNAME记录映射test-api.example.com到新创建的CloudFront域名(例如)d123abcdefg.cloudfront.net)
一旦分发创建完成了针对test-api.example.com
的全面测试您的应用程序如果测试都很好,则将新的CloudFront的替代域名(CNAME)更新为= api.example.com。(注意 - 这不会使其"实时",DNS更改以下是必需的)
一旦分发更新完成(平均40分钟),然后在53号公路或您的DNS提供商中,将api.example.com的cname记录映射更新为新创建的CloudFront域名(即D123ABCDEFG.CLOUDFRONT。net)
如果一切正常,您现在可以删除路由53/dns cna test-api.example.com记录加上api.example.com api Gateway自定义域名。
对于奖励积分,如果使用路线53,建议使用A和AAAA记录别名而不是CNAME,以在上面的53步长(我已经完成)。这略微降低了成本,在某种程度上隐藏了基础的云层分布,还可以支持IPv6支持。
我希望这会有所帮助!: - )
为了使网关API具有额外的云正面分配,我们需要
- 从AWS控制台,在API网关下,转到自定义域名并删除映射的条目。
- 用 创建一个新的云额分布
CloudFront设置
- 原始域名作为您的GATE API端点https://abcdfefg.execute-api.us-east-1.amazonaws.com
- 查看器协议策略仅为https
- Origin SSL协议为TLSV1.2,TLSV1.1(UNCHECK TLSV1)
- 在下添加CNAME条目
- 以及其他几个默认值上述更改完成后,访问https上的自定义域名将执行按照 cloudfront Distribution中定义的TLS安全设置。
aws已宣布,现在可以为边缘优化的API网关实施配置:
- https://aws.amazon.com/about-aws/whats-new/2019/06/amazon-api-gateway--gateway-adds-configurable-transport-transport-transport-layer-security-security-version-version-version-version-custom-domains/
- https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-custom-domain-domain-domain-tls-version.html
对于任何人看到的人,您现在可以在API网关中为自定义域的最小TLS版本设置为1.2的最小版本:https://docs.aws。amazon.com/apigateway/latest/developerguide/apigateway-custom-domain-domain-tls-version.html
您可以在云范围内创建API Gateway Distribution列表。如果您的API Gateway Origin具有HTTPS,则可以指定在CloudFront和API网关之间使用哪种类型的TLS协议。在查看器/客户端和CloudFront之间,您可以在一般部分中指定TLS协议和套件> CloudFront配置的安全策略。仅当您使用SNI自定义SSL时,此配置才能可见。您可以选择:
- TLSV1
- TLSV1_2016
- TLSV1.1_2016
- TLSV1.2_2018
到目前为止,您可以通过指定自定义域的安全策略来强制执行最小TLS版本。支持的安全策略是TLS1.0和TLS 1.2
TLS版本的最低版本API网关安全策略支持是TLSV1.0
通过自定义域名推荐的安全策略是TLSV1.2
为了更好地控制TLS版本,在您的帐户中创建一个云额分布,并将区域API Gateway端点用作Origin。
最小TLS版本1.3仅通过自定义CloudFront Distribution才有可能。
参考:https://cloudnamaste.com/minimum-tls-version-for-api-gateway/