在为 Amazon API Gateway API 配置双向传输层安全性协议 (TLS) 身份验证时,我想使用由第三方颁发的客户端证书。
解决方法
如需使用适用于 API Gateway 的第三方签名客户端证书进行 TLS 身份验证,请执行以下步骤:
- 创建信任库以使用第三方签名的证书。
- 为您的 API Gateway API 创建自定义域名和 API 映射。
- 创建 DNS 记录,以将自定义域名映射到 API Gateway。
- 禁用默认端点。
- 测试 API。
注意:
创建信任库以使用第三方签名的证书
1. 生成 RootCA。RootCA 用于颁发客户端证书。
openssl genrsa -out RootCA.key 4096
openssl req -new -x509 -days 3650 -key RootCA.key -out RootCA.pem
2. 填写必填字段,然后输入域名。
3. 创建客户端证书私钥、证书签名请求 (CSR) 以及客户端证书。
openssl genrsa -out my_client.key 2048
openssl req -new -key my_client.key -out my_client.csr
4. 使用您之前创建的 CA 对客户端证书进行签名。
openssl x509 -req -in my_client.csr -CA RootCA.pem -CAkey RootCA.key -set_serial 01 -out my_client.pem -days 3650 -sha256
5. 创建 Amazon Simple Storage Service (Amazon S3) 桶来存储 truststore.pem 文件。
6. 将 RootCA.pem 上传到 Amazon S3 桶信任库。
7. (可选)创建从中间 CA 证书到根 CA 的证书链文件。
Cat Intermediate.pem ca.pem >ca-chain.pem.
有关详细信息,请参阅配置信任库。
为您的 API Gateway API 创建自定义域名和 API 映射
**注意:**在 API Gateway 中,只有密钥大小为 2048 位的证书才可见。证书大小不能超过 2048 位。
1. 打开 API Gateway 控制台,然后选择自定义域名。
2. 对于域名,输入您的域名,然后选择创建。
3. 对于域名,输入您的域名。
4. 对于最低 TLS 版本,选择 TLS 1.2。
5. 启用双向 TLS 身份验证。
6. 对于信任库 URI,输入您之前创建的 Amazon S3 URI。
7. 对于端点配置,选择区域。
8. 对于证书类型,选择您的证书类型,然后选择创建域名。
9. 选择您的自定义域名,然后选择配置 API 映射。
10. 选择添加新映射。
11. 为映射选择 API、阶段和路径,然后选择保存。
有关详细信息,请参阅如何为 API Gateway API 设置自定义域名?
创建 DNS 记录以将自定义域名映射到 API Gateway
创建 DNS 记录以将自定义域名指向 API Gateway 区域域名。这允许绑定到自定义域名的流量路由到 API 的区域主机名。DNS 记录可以是 CNAME 或“别名”类型。
有关详细信息,请参阅配置 Route 53 以将流量路由到 API Gateway 端点。
禁用默认端点
默认情况下,客户端可以使用 API Gateway 为您的 API 生成的 execute-api 端点调用 API。禁用默认 execute-api 端点,以便客户端只能使用自定义域名访问您的 API。
有关 HTTP API,请参阅禁用 HTTP API 的默认端点。
有关 REST API,请参阅禁用 REST API 的默认端点。
测试 API
使用 --key 和 --cert 参数测试 API,将客户端证书作为请求的一部分发送。
$ curl -v https://{YourCustomDomainName}/{resource} --key my_client.key --cert my_client.pem
**注意:**为确保请求成功,必须包含私钥 my_client.key 和客户端证书 my_client.pem。
相关信息
如何解决启用了自定义域和双向 TLS 的 Amazon API Gateway 的证书链和自签名证书问题?
为 Amazon API Gateway 引入双向 TLS 身份验证
如何解决来自需要双向 TLS 的 API Gateway 自定义域名的“HTTP 403 禁止”错误?