

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將私有金鑰安全地儲存於 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. 選擇 **Properties (屬性)**，然後選擇 **Permissions (權限)**。

1. 確認您的帳戶是儲存貯體上的承授者，具備讀取權限。

1. 如果已連接儲存貯體政策，請選擇 **Bucket policy (儲存貯體政策)**，以檢視已指派給儲存貯體的許可。