メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

X509 証明書を作成し署名する

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

注記

HTTPS を単一インスタンス環境で使用するか、自己署名証明書を使用して、バックエンドで再度暗号化するには、証明書をローカルに作成する必要があります。 ドメイン名を所有している場合は、AWS で証明書を作成し、AWS Certificate Manager (ACM) を使用して無料で、負荷分散環境で、それを使用できます。 手順については、「AWS Certificate Manager ユーザーガイド」の「証明書のリクエスト」を参照してください。

コマンドラインで openssl version を実行して、OpenSSL がすでにインストールされているかどうかを確認します。OpenSSL をインストールしていない場合は、「公開 GitHub リポジトリ」の指示を使用してソースコードをインストールするか、または好みのパッケージマネージャを使用できます。OpenSSL は Elastic Beanstalk の Linux イメージにもインストールされているため、簡単な代替策として、EB CLIeb 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 = アメリカ
州または県 あなたが所属する組織の所在地の州または県。この名前を省略することはできません。 ワシントン
市区町村 あなたが所属する組織の所在地の市区町村。 シアトル
組織名 組織の正式名称。組織名は、省略不可です。 Example Corp
部門名 追加の部門情報は、省略可能です。 マーケティング
共通名 ウェブサイトの完全修飾ドメイン名これは、ユーザーがサイトを訪問したときに表示されるドメイン名と一致する必要があります。一致しない場合は証明書エラーが表示されます。 www.example.com
E メールアドレス サイト管理者の E メールアドレス someone@example.com

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

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

$ openssl x509 -req -days 365 -in csr.pem -signkey privatekey.pem -out server.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

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

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

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

証明書があるため、ロードバランサーで使用するために、IAM にアップロードまたは、HTTPS を終了するように環境内のインスタンスを設定します