

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Amazon S3 中安全地存储私有密钥
<a name="https-storingprivatekeys"></a>

用于对公有证书签名的私有密钥是私有的，不应提交到源代码。通过将私有密钥上传到 Amazon S3，然后将 Elastic Beanstalk 配置为在应用程序部署期间从 Amazon S3 下载文件，可以避免将私有密钥存储在配置文件中。

以下示例显示了[配置文件](ebextensions.md)的[资源](environment-resources.md)和[文件](customize-containers-ec2.md#linux-files)部分，并从 Amazon S3 存储桶下载私有密钥文件。

**Example .ebextensions/privatekey.config**  

```
Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Auth:
          type: "s3"
          buckets: ["elasticbeanstalk-us-west-2-123456789012"]
          roleName: 
            "Fn::GetOptionSetting": 
              Namespace: "aws:autoscaling:launchconfiguration"
              OptionName: "IamInstanceProfile"
              DefaultValue: "aws-elasticbeanstalk-ec2-role"
files:
  # Private key
  "/etc/pki/tls/certs/server.key":
    mode: "000400"
    owner: root
    group: root
    authentication: "S3Auth"
    source: https://elasticbeanstalk-us-west-2-123456789012.s3.us-west-2.amazonaws.com/server.key
```

将示例中的存储桶名称和 URL 替换为您自己的。此文件中的第一个条目将名为 `S3Auth` 的身份验证方法添加到环境的 Auto Scaling 组的元数据中。如果您为环境配置了自定义[实例配置文件](concepts-roles-instance.md)，则将使用自定义实例配置文件，否则应用默认值 `aws-elasticbeanstalk-ec2-role`。默认实例配置文件具有从 Elastic Beanstalk 存储桶读取的权限。如果您使用不同的存储桶，请[向实例配置文件添加权限](iam-instanceprofile.md#iam-instanceprofile-addperms)。

第二个条目使用 `S3Auth` 身份验证方法从指定 URL 下载私有密钥并将其保存到 `/etc/pki/tls/certs/server.key`。然后，代理服务器可以从此位置读取私有密钥以[终止实例的 HTTPS 连接](https-singleinstance.md)。

分配给您的环境实例的 EC2 实例配置文件必须具有从指定存储桶读取密钥对象的权限。[验证实例配置文件有权](iam-instanceprofile.md#iam-instanceprofile-verify)读取 IAM 中的对象，并且存储桶和对象上的权限不禁止实例配置文件。

**查看存储桶的权限**

1. 打开 [Amazon S3 管理控制台](https://console.aws.amazon.com/s3/home)。

1. 选择存储桶。

1. 选择**属性**，然后选择**权限**。

1. 验证您的账户已被授予存储桶的读取权限。

1. 如果已附加存储桶策略，请选择**存储桶策略**以查看分配到存储桶的权限。