在 Amazon Certificate Manager 中准备好证书 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 Amazon Certificate Manager 中准备好证书

为 API 设置自定义域名之前,您必须先在 Amazon Certificate Manager 中准备好 SSL/TLS 证书 有关更多信息,请参阅 Amazon Certificate Manager《用户指南》

注意事项

以下是 SSL/TLS 证书的注意事项。

  • 如果您创建边缘优化的自定义域名,API Gateway 将利用 CloudFront 来支持自定义域名的证书。因此,自定义域名 SSL/TLS 证书的要求和限制由 CloudFront 决定。例如,公有密钥的最大大小为 2048,而私有密钥大小可以是 1024、2048 和 4096。公有密钥的大小取决于所用的证书颁发机构。要求证书颁发机构返回大小不同于默认长度的密钥。有关更多信息,请参阅安全访问对象创建签名 URL 和签名 Cookie

  • 要将 ACM 证书与区域自定义域名结合使用,您必须在与 API 相同的区域中请求或导入证书。证书必须由公开信任的证书颁发机构签名并涵盖自定义域名。

  • 要将 ACM 证书与边缘优化的自定义域名结合使用,您必须在美国东部(弗吉尼亚州北部) - us-east-1 区域中请求或导入证书。

  • 您必须有一个已注册的域名,例如 example.com。您可以使用 Amazon Route 53 或获得认可的第三方域注册商。要获取此类注册商的列表,请参阅 ICANN 网站上获得认可的注册商目录

在 ACM 中创建或导入 SSL/TLS 证书

以下过程说明了如何为域名创建或导入 SSL/TLS 证书。

To request a certificate provided by ACM for a domain name
  1. 登录到 Amazon Certificate Manager 控制台

  2. 选择请求证书

  3. 对于证书类型,选择请求公有证书

  4. 选择 Next (下一步)

  5. 对于完全限定域名,为您的 API 输入一个自定义域名,例如 api.example.com

  6. (可选)选择向此证书添加一个名称

  7. 对于验证方法,选择一种验证域名所有权的方法。

  8. 对于密钥算法,选择一种加密算法。

  9. 选择请求

  10. 如果请求有效,Internet 域中注册的拥有者必须同意请求,然后 ACM 才能颁发证书。如果您使用 Route 53 管理您的公有 DNS 记录,则可以直接通过 ACM 控制台更新您的记录。

To import into ACM a certificate for a domain name
  1. 从证书颁发机构为自定义域名获取 PEM 编码的 SSL/TLS 证书。要获取此类 CA 的部分列表,请参阅 Mozilla 内置 CA 列表

    1. 使用 OpenSSL 网站中的 OpenSSL 工具包生成证书的私有密钥并将输出结果保存到文件中:

      openssl genrsa -out private-key-file 2048
    2. 使用 OpenSSL 通过之前生成的私有密钥生成证书签名请求 (CSR):

      openssl req -new -sha256 -key private-key-file -out CSR-file
    3. 将 CSR 提交给证书颁发机构并保存生成的证书。

    4. 从证书颁发机构下载证书链。

    注意

    如果您通过其他方式获取了私有密钥并且密钥已加密,则您可以使用以下命令解密密钥,然后再将其提交到 API Gateway 以便设置自定义域名。

    openssl pkcs8 -topk8 -inform pem -in MyEncryptedKey.pem -outform pem -nocrypt -out MyDecryptedKey.pem
  2. 将证书上传到 Amazon Certificate Manager:

    1. 登录到 Amazon Certificate Manager 控制台

    2. 选择导入证书

    3. 对于证书正文,输入从证书颁发机构提供的 PEM 格式的服务器证书的正文。下面显示了此类证书的简短示例。

      -----BEGIN CERTIFICATE----- EXAMPLECA+KgAwIBAgIQJ1XxJ8Pl++gOfQtj0IBoqDANBgkqhkiG9w0BAQUFADBB ... az8Cg1aicxLBQ7EaWIhhgEXAMPLE -----END CERTIFICATE-----
    4. 对于证书私有密钥,输入 PEM 格式的证书的私有密钥。下面显示了此类密钥的简短示例。

      -----BEGIN RSA PRIVATE KEY----- EXAMPLEBAAKCAQEA2Qb3LDHD7StY7Wj6U2/opV6Xu37qUCCkeDWhwpZMYJ9/nETO ... 1qGvJ3u04vdnzaYN5WoyN5LFckrlA71+CszD1CGSqbVDWEXAMPLE -----END RSA PRIVATE KEY-----
    5. 对于证书链,输入 PEM 格式的中间证书和根证书(可选),一个接一个,不带任何空白行。如果包含了根证书,您的证书链必须以中间证书开始,以根证书结尾。使用证书颁发机构提供的中间证书。不要包含未在信任路径链中的任何中间证书。下面显示了一个简短示例。

      -----BEGIN CERTIFICATE----- EXAMPLECA4ugAwIBAgIQWrYdrB5NogYUx1U9Pamy3DANBgkqhkiG9w0BAQUFADCB ... 8/ifBlIK3se2e4/hEfcEejX/arxbx1BJCHBvlEPNnsdw8EXAMPLE -----END CERTIFICATE-----

      以下是另一个示例。

      -----BEGIN CERTIFICATE----- Intermediate certificate 2 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Intermediate certificate 1 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Optional: Root certificate -----END CERTIFICATE-----
    6. 选择下一步,然后再次选择下一步

成功创建或导入证书后,请记下证书的 ARN。您在设置自定义域名时会需要它。