

# 选择针对 API Gateway 中自定义域的安全策略
<a name="apigateway-custom-domain-tls-version"></a>

*安全策略* 是 API Gateway 提供的最低 TLS 版本和密码套件的预定义组合。当您的客户端与您的 API 或自定义域名建立 TLS 握手时，安全策略会强制实施 API Gateway 接受的 TLS 版本和密码套件。安全策略会保护您的 API 和自定义域名免受网络安全问题的侵扰，例如客户端和服务器之间的篡改和侦听。

API Gateway 支持传统安全策略和增强型安全策略。`TLS_1_0` 和 `TLS_1_2` 是传统安全策略。将这些安全策略用于通用工作负载，或者开始创建 API。任何以 `SecurityPolicy_` 开头的策略都是增强型安全策略。可将这些策略用于受监管的工作负载、高级治理或后量子密码术。使用增强型安全策略时，还必须设置端点访问模式以进行更多治理。有关更多信息，请参阅 [端点访问模式](apigateway-security-policies.md#apigateway-security-policies-endpoint-access-mode)。

## 注意事项
<a name="apigateway-custom-domain-tls-version-considerations"></a>

以下是 API Gateway 中针对 REST API 自定义域名的安全策略的注意事项：
+ 您无法对使用增强型安全策略的域名启用双向 TLS。
+ 您无法将 HTTP API 映射到使用增强型安全策略的域名。
+ 如果为使用增强型安全策略的 REST API 启用多级基础路径映射，则无法为同一域名创建指向 HTTP API 的基础路径映射。
+ 您的 API 可以映射到与 API 具有不同安全策略的自定义域名。当您调用该自定义域名时，API Gateway 会使用 API 的安全策略来协商 TLS 握手。如果您禁用默认 API 端点，则这可能会影响调用方调用 API 的方式。
+ API Gateway 支持对所有 API 应用安全策略。但是，您只能为 REST API 选择安全策略。对于 HTTP 或 WebSocket API，API Gateway 仅支持 `TLS_1_2` 安全策略。
+ API Gateway 不支持为具有多种端点类型的域名更新安全策略。如果域名有多种端点类型，请删除其中一个以更新安全策略。

## API Gateway 如何应用安全策略
<a name="apigateway-custom-domain-tls-version-understanding"></a>

以下示例以 `SecurityPolicy_TLS13_1_3_2025_09` 安全策略为例，显示 API Gateway 如何应用安全策略。

`SecurityPolicy_TLS13_1_3_2025_09` 安全策略接受 TLS 1.3 流量并拒绝 TLS 1.2 和 TLS 1.0 流量。对于 TLS 1.3 流量，该安全策略接受以下密码套件：
+ `TLS_AES_128_GCM_SHA256`
+ `TLS_AES_256_GCM_SHA384`
+ `TLS_CHACHA20_POLY1305_SHA256`

API Gateway 不接受任何其他密码套件。例如，该安全策略将拒绝使用 `AES128-SHA` 密码套件的任何 TLS 1.3 流量。

要监控客户端使用哪些 TLS 协议和密码来访问您的 API Gateway，您可以在访问日志中使用 `$context.tlsVersion` 和 `$context.cipherSuite` 上下文变量。有关更多信息，请参阅 [监控 API Gateway 中的 REST API](rest-api-monitor.md)。

要查看所有 REST API 和自定义域名的默认安全策略，请参阅[默认安全策略](apigateway-security-policies-list.md#apigateway-security-policies-default)。要查看所有 REST API 和自定义域名支持的安全策略，请参阅[支持的安全策略](apigateway-security-policies-list.md)。

## 更改您的自定义域名的安全策略
<a name="apigateway-security-policies-update-custom-domain-name"></a>

如果您更改安全策略，大约需要 15 分钟才能完成更新。您可以监控自定义域名的 `lastUpdateStatus`。当您的自定义域名更新时，`lastUpdateStatus` 为 `PENDING`，更新完成后，它将变为 `AVAILABLE`。

当您使用以 `SecurityPolicy_` 开头的安全策略时，还必须打开端点访问模式。有关更多信息，请参阅 [端点访问模式](apigateway-security-policies.md#apigateway-security-policies-endpoint-access-mode)。

------
#### [ AWS 管理控制台 ]

**更改自定义域名的安全策略**

1. 通过以下网址登录到 Amazon API Gateway 控制台：[https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)。

1. 选择将流量发送到 REST API 的自定义域名。

   确保只有一种端点类型与您的自定义域名关联。

1. 选择**自定义域名设置**，然后选择**编辑**。

1. 对于**安全策略**，选择一个新策略。

1. 对于**端点访问模式**，请选择**严格**。

1. 选择**保存更改**。

------
#### [ AWS CLI ]

以下 [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html) 命令将域名更新为使用 `SecurityPolicy_TLS13_1_3_2025_09` 安全策略：

```
aws apigateway update-domain-name \
    --domain-name example.com \
    --patch-operations '[
        {
            "op": "replace",
            "path": "/securityPolicy",
            "value": "SecurityPolicy_TLS13_1_3_2025_09"
        }, 
        {
            "op": "replace",
            "path": "/endpointAccessMode",
            "value": "STRICT"
        }
    ]'
```

输出将与以下内容类似：

```
{
   "domainName": "example.com",
   "endpointConfiguration": { 
      "types": [ "REGIONAL" ], 
      "ipAddressType": "dualstack" 
   },
   "regionalCertificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/a1b2c3d4-5678-90ab-cdef",
   "securityPolicy": "SecurityPolicy_TLS13_1_3_2025_09",
   "endpointAccessMode": "STRICT"
}
```

------

## 有关 HTTP API 和 WebSocket API 的信息
<a name="apigateway-rest-additional-apis"></a>

有关 HTTP API 和 WebSocket API 的更多信息，请参阅[API Gateway 中的 HTTP API 的安全策略](http-api-ciphers.md)和[针对 API Gateway 中的 WebSocket API 的安全策略](websocket-api-ciphers.md)。