AWS OpsWorks
ユーザーガイド (API バージョン 2013-02-18)

SSL の使用

アプリケーションで SSL を使用するには、最初に認証機関 (CA) からデジタルサーバー証明書を取得する必要があります。簡単になるように、このチュートリアルでは、証明書を作成し、その証明書に自己署名します。自己署名した証明書は学習やテストに便利ですが、本稼働用スタックには、CA によって署名された証明書を常に使用する必要があります。

このウォークスルーでは、次の作業を行います。

  1. OpenSSL をインストールおよび設定します。

  2. プライベートキーを作成します。

  3. 証明書署名リクエストを作成します。

  4. 自己署名証明書を生成します。

  5. 証明書情報を使用してアプリケーションを編集します。

重要

アプリケーションで SSL を使用する場合、CVE-2014-3566 で説明されている脆弱性に対応するため、可能であればアプリケーションサーバー Layer で SSLv3 を無効にすることをお勧めします。スタックに Ganglia Layer が含まれる場合は、その Layer に対しても SSL v3 を無効にします。その詳細は特定の Layer によって異なります。詳細については、以下を参照してください。

ステップ 1: OpenSSL をインストールおよび設定する

サーバー証明書を作成およびアップロードするには、SSL プロトコルと TLS プロトコルをサポートするツールが必要です。OpenSSL はオープンソースのツールで、RSA トークンの作成やそのトークンにプライベートキーを署名するための基本的な暗号関数を提供します。

次の手順の説明は、コンピュータにまだ OpenSSL がインストールされていないことを前提としています。

Linux や Unix で OpenSSL をインストールするには

  1. OpenSSL の [Source] の [Tarballs] に移動します。

  2. 最新のソースをダウンロードします。

  3. パッケージをビルドします。

Windows へ OpenSSL をインストールするには

  1. Microsoft Visual C++ 2008 Redistributable Package がシステムにまだインストールされていない場合、環境に適した Redistributable (x64 または x86 バージョン) をダウンロードしてください。

  2. インストーラを実行し、Microsoft Visual C++ 2008 Redistributable のセットアップウィザードの指示に従って、再頒布可能コードをインストールします。

  3. [OpenSSL: Binary Distributions] に移動し、ご利用の環境に応じたバージョンの OpenSSL バイナリをクリックして、インストーラをローカルに保存します。

  4. インストーラを実行し、OpenSSL セットアップ​ウィザード​の指示に従ってバイナリをインストールします。

ターミナルウィンドウまたはコマンドウィンドウを開き、次のコマンドラインを使用して、OpenSSL のインストールポイントを指す環境変数を作成します。

  • Linux および UNIX の場合

    export OpenSSL_HOME=path_to_your_OpenSSL_installation
  • Windows の場合

    set OpenSSL_HOME=path_to_your_OpenSSL_installation

ターミナルウィンドウまたはコマンドウィンドウを開き、次のコマンドラインを使用して、コンピュータのパス変数に OpenSSL バイナリのパスを追加します。

  • Linux および UNIX の場合

    export PATH=$PATH:$OpenSSL_HOME/bin
  • Windows の場合

    set Path=OpenSSL_HOME\bin;%Path%

注記

これらのコマンドラインを使用して環境変数に加えた変更は、現在のコマンドラインセッションでのみ有効です。

ステップ 2: プライベートキーを作成する

証明書署名リクエスト(CSR)を作成するには一意のプライベートキーが必要です。次のコマンドラインを使用してキーを作成します。

openssl genrsa 2048 > privatekey.pem

ステップ 3: 証明書署名リクエストを作成する

証明書署名リクエスト(CSR)は、デジタルサーバー証明書を申請するために認証機関(CA)に送信されるファイルです。次のコマンドラインを使用して CSR を作成します。

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.

次の表は、証明書リクエストを作成する際に役立ちます。

証明書リクエストデータ

名前 説明
国名 2 文字の ISO 略称 (国名コード)。 例 :US = アメリカ
州または県 あなたが所属する組織の所在地の州または県。省略不可です。 ワシントン
市区町村 あなたが所属する組織の所在地の市区町村。 シアトル
組織名 組織の正式名称。組織名は、省略不可です。 CorporationX
部門名 (オプション) 追加の組織情報。 マーケティング
共通名 CNAME に対する完全に適合するドメイン名。完全に一致しない場合は、証明書名チェックの警告が通知されます。 www.example.com
E メールアドレス サーバー管理者の E メールアドレス someone@example.com

注記

共通名フィールドは誤解されることが多く、間違って入力されることがよくあります。共有名とは通常の場合、ホスト名にドメイン名を付け加えたものです。"www.example.com" または "example.com" のようになります。正しい共有名を使用して CSR を作成しなければなりません。

ステップ 4: CSR を認証機関に送信する

本稼働環境で使用する場合は、認証機関 (CA) に CSR を送信してサーバー証明書を取得します。この場合、他の認証情報や識別の根拠が必要になることがあります。申請が正常に処理された場合、CA はデジタル署名されたアイデンティティ証明書と、場合によっては証明書チェーンファイルを返します。AWS が特定の CA を推奨することはありません。利用可能な CA の一覧 (一部のみ) については、Wikipedia の Certificate Authority - Providers を参照してください

また、テスト目的でのみ使用できる自己署名証明書を生成することもできます。この例では、次のコマンドラインを使用して自己署名証明書を生成します。

openssl x509 -req -days 365 -in csr.pem -signkey privatekey.pem -out server.crt

出力は以下のようになります。

Loading 'screen' into random state - done Signature ok subject=/C=us/ST=washington/L=seattle/O=corporationx/OU=marketing/CN=example.com/emailAddress=someone@example.com Getting Private key

ステップ 5: アプリケーションを編集する

証明書を生成して署名したら、SSL を有効化して証明書情報を指定するために、アプリケーションを更新します。[Apps (アプリ)] ページで、アプリを選択して詳細ページを開き、[Edit App (アプリの編集)] をクリックします。SSL サポートを有効化するには、[Enable SSL (SSL の有効化)] を [Yes (はい)] に設定します。次の設定オプションが表示されます。

SSL 証明書

ボックスにパブリックキー証明書 (.crt) ファイルの内容を貼り付けます。証明書の例を次に示します。

-----BEGIN CERTIFICATE----- MIICuTCCAiICCQCtqFKItVQJpzANBgkqhkiG9w0BAQUFADCBoDELMAkGA1UEBhMC dXMxEzARBgNVBAgMCndhc2hpbmd0b24xEDAOBgNVBAcMB3NlYXR0bGUxDzANBgNV BAoMBmFtYXpvbjEWMBQGA1UECwwNRGV2IGFuZCBUb29sczEdMBsGA1UEAwwUc3Rl cGhhbmllYXBpZXJjZS5jb20xIjAgBgkqhkiG9w0BCQEWE3NhcGllcmNlQGFtYXpv ... -----END CERTIFICATE-----

注記

Nginx を使用していて、証明書チェーンファイルがある場合は、その内容をパブリックキー証明書ファイルに追加する必要があります。

既存の証明書を更新する場合は、次のようにします。

  • 証明書を更新するには [Update SSL certificate (SSL 証明書の更新)] を選択します。

  • 新しい証明書が既存のプライベートキーと一致しない場合は、[Update SSL certificate key (SSL 証明書キーの更新)] を選択します。

  • 新しい証明書が既存の証明書チェーンと一致しない場合は、[Update SSL certificates (SSL 証明書の更新)] を選択します。

[SSL Certificate Key]

ボックスにプライベートキーファイル (.pem ファイル) の内容を貼り付けます。次のようになります。

----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQC0CYklJY5r4vV2NHQYEpwtsLuMMBhylMrgBShKq+HHVLYQQCL6 +wGIiRq5qXqZlRXje3GM5Jvcm6q0R71MfRIl1FuzKyqDtneZaAIEYniZibHiUnmO /UNqpFDosw/6hY3ONk0fSBlU4ivD0Gjpf6J80jL3DJ4R23Ed0sdL4pRT3QIDAQAB AoGBAKmMfWrNRqYVtGKgnWB6Tji9QrKQLMXjmHeGg95mppdJELiXHhpMvrHtpIyK ... -----END RSA PRIVATE KEY-----
[SSL certificates of Certification Authorities]

証明書チェーンファイルがある場合は、ボックスにその内容を貼り付けます。

注記

Nginx を使用している場合は、このボックスを空にしておく必要があります。証明書チェーンファイルがある場合は、これをパブリックキー証明書ファイルの [SSL Certificate Key] に追加します。

[Save] をクリックしたら、アプリケーションを再デプロイして、オンラインインスタンスを更新します。

組み込みアプリケーションサーバーレイヤーの場合、AWS OpsWorks スタックによってサーバー設定は自動的に更新されます。デプロイが完了したら、以下のようにして OpenSSL のインストールが成功したことを確認できます。

OpenSSL のインストールを検証するには

  1. [Instances] ページに移動します。

  2. アプリケーションサーバーのインスタンスの IP アドレス (または、ロードバランサーを使用している場合はロードバランサーの IP アドレス) をクリックして、アプリケーションを実行します。

  3. IP アドレスのプレフィックスを http:// から https:// に変更し、ブラウザを更新して、SSL でページが正しく読み込まれることを検証します。

予期どおりにアプリケーションが実行されないか、ウェブページが機能しない場合、トラブルシューティング情報については、「OpenSSL FAQ」の「Using the OpenSSL application」セクションを参照してください。アプリが Mozilla Firefox で作動するように設定されていると、「SEC_ERROR_UNKNOWN_ISSUER」という証明書エラーが表示されることがあります。このエラーは、お客様の組織のウイルス対策およびマルウェア対策プログラムに搭載されている証明書交換機能、一部の種類のネットワークトラフィックモニタリングおよびフィルタリングソフトウェア、またはマルウェアのいずれかが原因で発生することがあります。このエラーのトラブルシューティング方法の詳細については、Mozilla Firefox Support ウェブサイトに掲載されている、安全なウェブサイトでの「安全な接続ではありません」エラーコードをトラブルシュートするにはを参照してください。

カスタムレイヤーも含めてすべてのレイヤーに対して、AWS OpsWorks スタックによって SSL 設定がアプリケーションの deploy 属性に追加されるだけです。カスタムレシピを実装して、ノードオブジェクトから情報を取得し、適切にサーバーを設定する必要があります。