

# AWS Certificate Manager で証明書を準備する
<a name="how-to-specify-certificate-for-custom-domain-name"></a>

API のカスタムドメイン名を設定する前に、AWS Certificate Managerで SSL/TLS 証明書を準備する必要があります。詳細については、[AWS Certificate Managerユーザーガイド](https://docs.aws.amazon.com/acm/latest/userguide/)を参照してください。

## 考慮事項
<a name="how-to-specify-certificate-for-custom-domain-name-considerations"></a>

SSL/TLS 証明書に関する考慮事項は、以下のとおりです。
+ エッジ最適化カスタムドメイン名を作成すると、API Gateway は CloudFront を活用してカスタムドメイン名の証明書をサポートします。そのため、カスタムドメイン名の SSL/TLS 証明書の要件と制約は [CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html) によって指定されます。たとえば、パブリックキーの最大サイズは 2048 で、プライベートキーのサイズは 1024、2048、または 4096 とすることができます。パブリックキーのサイズは、使用している認証機関によって決まります。デフォルトの長さと異なるサイズのキーを返すよう認証機関に依頼します。詳細については、「[オブジェクトへのセキュアなアクセス](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https.html)」および「[署名付き URL と署名付き Cookie](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-trusted-signers.html)」を参照してください。
+ リージョン別カスタムドメイン名を作成する場合、パブリックキーの最大サイズは 2048 です。
+ リージョン別カスタムドメイン名で ACM 証明書を使用するには、API と同じリージョンで証明書をリクエストまたはインポートする必要があります。証明書はカスタムドメイン名を対象としている必要があります。
+  エッジ最適化カスタムドメイン名で ACM 証明書を使用するには、米国東部 (バージニア北部) – `us-east-1` リージョンで証明書をリクエストまたはインポートする必要があります。
+  `{{example.com}}` などの登録済みドメイン名が必要です。[Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/) または認定されているサードパーティーのドメインレジストラを使用できます。そのようなレジストラの一覧については、ICANN のウェブサイトの[認定レジストラディレクトリ](https://www.icann.org/en/accredited-registrars)を参照してください。

## SSL/TLS 証明書を作成または ACM にインポートするには
<a name="how-to-specify-certificate-for-custom-domain-name-setup"></a>

次の手順は、ドメイン名の SSL/TLS 証明書を作成またはインポートする方法を示しています。

------
#### [ To request a certificate provided by ACM for a domain name ]

1. [AWS Certificate Manager コンソール](https://console.aws.amazon.com/acm)にサインインします。

1. [**証明書のリクエスト**] を選択します。

1. **[証明書タイプ]** で、**[パブリック証明書をリクエスト]** を選択します。

1. [**次へ**] を選択します。

1. **[完全修飾ドメイン名]** に、API のカスタムドメイン名 (`api.example.com` など) を入力します。

1. 必要に応じて、[**この証明書に別の名前を追加**] を選択します。

1. **[検証方法]** で、ドメインの所有権を検証する方法を選択します。

1. **[キーアルゴリズム]** で、暗号化アルゴリズムを選択します。

1. **[リクエスト]** を選択します。

1. リクエストが有効であるためには、ACM が証明書を発行する前に、インターネットドメインの登録された所有者がリクエストに同意する必要があります。Route 53 を使用してパブリック DNS レコードを管理する場合は、ACM コンソールでレコードを直接更新できます。

------
#### [ To import into ACM a certificate for a domain name ]

1.  証明機関からカスタムドメイン名の PEM エンコード SSL/TLS 証明書を取得します。このような CA のリストの一部については、「[Mozilla の Included CA List](https://ccadb.my.salesforce-sites.com/mozilla/IncludedCACertificateReport)」を参照してください。

   1. 証明書のプライベートキーを生成し、OpenSSL ウェブサイトの [OpenSSL](https://www.openssl.org) ツールキットを使用して出力をファイルに保存します。

      ```
      openssl genrsa -out {{private-key-file}} 2048
      ```

   1. OpenSSL を使用して、以前に作成されたプライベートキーで証明書署名リクエスト (CSR) を生成します。

      ```
      openssl req -new -sha256 -key {{private-key-file}} -out {{CSR-file}}
      ```

   1. CSR を認証機関に送信し、結果として生じる証明書を保存します。

   1. 認証機関から証明書チェーンをダウンロードします。
**注記**  
 別の方法でプライベートキーを取得し、キーが暗号化されている場合は、次のコマンドを使用してキーを復号してから、カスタムドメイン名を設定するためにキーを API Gateway に送信できます。  

   ```
   openssl pkcs8 -topk8 -inform pem -in {{MyEncryptedKey.pem}} -outform pem -nocrypt -out {{MyDecryptedKey.pem}}
   ```

1. 証明書を AWS Certificate Manager へアップロードします

   1. [AWS Certificate Manager コンソール](https://console.aws.amazon.com/acm)にサインインします。

   1. [**Import a certificate**] を選択します。

   1. **[証明書本文]** に、証明機関からの PEM 形式のサーバー証明書の本文を入力します。このような証明書の省略された例を次に示します。

      ```
      -----BEGIN CERTIFICATE-----
      EXAMPLECA+KgAwIBAgIQJ1XxJ8Pl++gOfQtj0IBoqDANBgkqhkiG9w0BAQUFADBB
      ...
      az8Cg1aicxLBQ7EaWIhhgEXAMPLE
      -----END CERTIFICATE-----
      ```

   1. **[証明書のプライベートキー]** に、PEM 形式の証明書のプライベートキーを入力します。このようなキーの省略された例を次に示します。

      ```
      -----BEGIN RSA PRIVATE KEY-----
      EXAMPLEBAAKCAQEA2Qb3LDHD7StY7Wj6U2/opV6Xu37qUCCkeDWhwpZMYJ9/nETO
      ...
      1qGvJ3u04vdnzaYN5WoyN5LFckrlA71+CszD1CGSqbVDWEXAMPLE
      -----END RSA PRIVATE KEY-----
      ```

   1. **[証明書チェーン]** に、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-----
      ```

   1. **[次へ]** を選択し、さらに **[次へ]** を選択します。

------

証明書が正常に作成またはインポートされた後、証明書の ARN をメモします。カスタムドメイン名を設定する際に必要になります。