AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

在 Amazon S3 中安全存储私钥

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

下面的示例介绍一个从 Amazon S3 存储桶下载私有密钥文件的配置文件Resourcesfiles 节。

例 .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://s3-us-west-2.amazonaws.com.cn/elasticbeanstalk-us-west-2-123456789012/server.key

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

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

分配到您环境的 EC2 实例的实例配置文件必须具有从指定存储桶读取密钥对象的权限。验证实例配置文件有权读取 IAM 中的对象,并且存储桶和对象上的权限不禁止实例配置文件。

查看存储桶的权限

  1. 打开 Amazon S3 管理控制台

  2. 选择存储桶。

  3. 选择 Properties,然后选择 Permissions

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

  5. 如果附加了存储桶策略,请选择 Edit bucket policy。选择 Edit bucket policy 可查看分配到存储桶的权限。