

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# X509 証明書を作成し署名する
<a name="configuring-https-ssl"></a>

`OpenSSL` を使用してアプリケーションの X509 証明書を作成できます。OpenSSL は標準のオープンソースライブラリーで、x509 証明書の作成と署名を含む包括的な暗号関数をサポートしています。OpenSSL の詳細については、[www.openssl.org](https://www.openssl.org/) を参照してください。

**注記**  
[HTTPS を単一インスタンス環境で使用する](https-singleinstance.md)か、自己署名証明書を使用して、[バックエンドで再度暗号化する](configuring-https-endtoend.md)には、証明書をローカルに作成する必要があります。ドメイン名を所有している場合は、 ( AWS Certificate Manager ACM) を使用して で証明書を作成し、ロードバランシングされた環境で無料で AWS 使用できます。手順については、*AWS Certificate Manager ユーザーガイド*の「[証明書のリクエスト](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)」を参照してください。

コマンドラインで `openssl version` を実行して、OpenSSL がすでにインストールされているかどうかを確認します。OpenSSL をインストールしていない場合は、「[公開 GitHub リポジトリ](https://github.com/openssl/openssl)」の指示を使用してソースコードをインストールするか、または好みのパッケージマネージャを使用できます。OpenSSL は Elastic Beanstalk の Linux イメージにもインストールされているため、簡単な代替策として、次のように [EB CLI](eb-cli3.md) の **eb ssh** コマンドを使用して実行環境の EC2 インスタンスに接続できます。

```
~/eb$ eb ssh
[ec2-user@ip-255-55-55-255 ~]$ openssl version
OpenSSL 1.0.1k-fips 8 Jan 2015
```

証明書署名リクエスト（CSR）を作成するための RSA プライベートキーを作成する必要があります。プライベートキーを作成するには、**openssl genrsa** コマンドを使用します。

```
[ec2-user@ip-255-55-55-255 ~]$ openssl genrsa 2048 > privatekey.pem
Generating RSA private key, 2048 bit long modulus
.................................................................................................................................+++
...............+++
e is 65537 (0x10001)
```

*privatekey.pem*  
プライベートキーを保存するファイルの名前です。通常、**openssl genrsa** コマンドは画面にプライベートキーの内容を表示しますが、このコマンドは出力をファイルにパイプします。任意のファイル名を選択し、ファイルを後から取得できるように安全な場所に保存します。プライベートキーをなくした場合は、証明書を使用することはできません。

CSR は、デジタルサーバー証明書を申請するために認証機関（CA）に送信するファイルです。CSR を作成するには、**openssl req** コマンドを使用します。

```
$ openssl req -new -key privatekey.pem -out csr.pem
You are about to be asked to enter information that will be incorporated 
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
```

要求された情報を入力して、**Enter** を押します。以下の表は、各フィールドの例を表示して説明したものです。


****  

| 名前 | 説明 | 例 | 
| --- | --- | --- | 
| 国名 | 2 文字の ISO 略称 (国名コード)。 | 例 :US = アメリカ | 
| 州または県 | あなたが所属する組織の所在地の州または県。この名前を省略することはできません。 | ワシントン | 
| 市区町村 | あなたが所属する組織の所在地の市区町村。 | Seattle | 
| 組織名 | 組織の正式名称。組織名は、省略不可です。 | Example Corp | 
| 部門名 | 追加の部門情報は、省略可能です。 | Marketing | 
| 共通名 | ウェブサイトの完全修飾ドメイン名 これは、ユーザーがサイトを訪問したときに表示されるドメイン名と一致する必要があります。一致しない場合は証明書エラーが表示されます。 | www.example.com | 
| E メールアドレス | サイト管理者の E メールアドレス | someone@example.com | 

署名を要求する署名リクエストをサードパーティに送信するか、または開発とテスト用に自分で署名することができます。自己署名証明書は、ロードバランサーと EC2 インスタンス間のバックエンド HTTPS にも使用できます。

証明書に署名するには、**openssl x509** コマンドを使用します。以下の例では、以前のステップ (*privatekey.pem*) のプライベートキーおよび署名リクエスト (*csr.pem*) を使用して、*365* 日間有効な *public.crt* という名前の公開証明書を作成します。

```
$ openssl x509 -req -days 365 -in csr.pem -signkey privatekey.pem -out public.crt
Signature ok
subject=/C=us/ST=washington/L=seattle/O=example corporation/OU=marketing/CN=www.example.com/emailAddress=someone@example.com
Getting Private key
```

秘密キーと公開証明書は後で使用できるようにしておきます。署名リクエストは破棄できます。必ず、[プライベートキーは安全な場所に保存し](https-storingprivatekeys.md)、ソースコードには追加しないことをお勧めします。

Windows Server プラットフォームを使用して証明書を使用するには、PFX 形式に変換する必要があります。プライベートキーとパブリック証明書ファイルから PFX 証明書を作成するには、次のコマンドを使用します。

```
$ openssl pkcs12 -export -out example.com.pfx -inkey privatekey.pem -in public.crt
Enter Export Password: password
Verifying - Enter Export Password: password
```

証明書があるため、ロードバランサーで使用するために、[IAM にアップロードする](configuring-https-ssl-upload.md)か、[HTTPS を終了するように環境内のインスタンスを設定](https-singleinstance.md)します。