AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 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. 选择属性,然后选择权限

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

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