

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

# SSL の使用
<a name="workingsecurity-ssl"></a>

**重要**  
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、[AWS re:Post](https://repost.aws/) または[AWS プレミアムサポート](https://aws.amazon.com/support)を通じて AWS サポート チームにお問い合わせください。

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

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

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

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

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

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

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

**重要**  
アプリケーションで SSL を使用する場合、[CVE-2014-3566](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2014-3566) で説明されている脆弱性に対応するため、可能であればアプリケーションサーバーレイヤーで SSLv3 を無効にすることをお勧めします。スタックに Ganglia レイヤーが含まれる場合は、そのレイヤーでも SSL v3 を無効にする必要があります。その詳細は特定のレイヤーによって異なります。詳細については、以下を参照してください。  
[Java App Server OpsWorks スタックレイヤー](layers-java.md)
[Node.js App Server OpsWorks スタックレイヤー](workinglayers-node.md)
[PHP App Server OpsWorks スタックレイヤー](workinglayers-php.md)
[Rails App Server OpsWorks スタックレイヤー](workinglayers-rails.md)
[静的ウェブサーバー OpsWorks スタックレイヤー](workinglayers-static.md)
[Ganglia レイヤー](workinglayers-ganglia.md)

**Topics**
+ [ステップ 1: OpenSSL をインストールおよび設定する](#w2ab1c14c57c29c15)
+ [ステップ 2: プライベートキーを作成する](#w2ab1c14c57c29c17)
+ [ステップ 3: 証明書署名リクエストを作成する](#w2ab1c14c57c29c19)
+ [ステップ 4: CSR を認証機関に送信する](#w2ab1c14c57c29c21)
+ [ステップ 5: アプリケーションを編集する](#w2ab1c14c57c29c23)

## ステップ 1: OpenSSL をインストールおよび設定する
<a name="w2ab1c14c57c29c15"></a>

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

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

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

1. [OpenSSL の [Source] の [Tarballs]](https://www.openssl.org/source/) に移動します。

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

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

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

1. Microsoft Visual C\$1\$1 2008 再頒布可能パッケージがシステムにインストールされていない場合は、[こちらからダウンロード](https://www.microsoft.com/en-us/download/details.aspx?id=11895)してください。

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

1. [[OpenSSL: Binary Distributions](https://www.openssl.org/community/binaries.html)] に移動し、ご利用の環境に応じたバージョンの OpenSSL バイナリをクリックして、インストーラをローカルに保存します。

1. インストーラを実行し、**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: プライベートキーを作成する
<a name="w2ab1c14c57c29c17"></a>

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

```
openssl genrsa 2048 > privatekey.pem
```

## ステップ 3: 証明書署名リクエストを作成する
<a name="w2ab1c14c57c29c19"></a>

証明書署名リクエスト（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 = アメリカ | 
| 州または県 | あなたが所属する組織の所在地の州または県。省略不可です。 | ワシントン | 
| 市区町村 | あなたが所属する組織の所在地の市区町村。 | Seattle | 
| 組織名 | 組織の正式名称。組織名は、省略不可です。 | CorporationX | 
| 部門名 | (オプション) 追加の組織情報。 | Marketing | 
| 共通名 | CNAME に対する完全に適合するドメイン名。完全に一致しない場合は、証明書名チェックの警告が通知されます。 | www.example.com | 
| E メールアドレス | サーバー管理者の E メールアドレス | someone@example.com | 

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

## ステップ 4: CSR を認証機関に送信する
<a name="w2ab1c14c57c29c21"></a>

本稼働環境で使用する場合は、認証機関 (CA) に CSR を送信してサーバー証明書を取得します。この場合、他の認証情報や識別の根拠が必要になることがあります。申請が正常に処理された場合、CA はデジタル署名されたアイデンティティ証明書と、場合によっては証明書チェーンファイルを返します。AWS が特定の CA を推奨することはありません。利用可能な CA の一覧 (一部のみ) については、Wikipedia の [Certificate Authority - Providers](https://en.wikipedia.org/wiki/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: アプリケーションを編集する
<a name="w2ab1c14c57c29c23"></a>

証明書を生成して署名したら、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 (SSL 証明書)**] のパブリックキー証明書ファイル に追加します。

![\[SSL Settings interface with options for SSL サポート, Certificate, Key, and Certification Authorities.\]](http://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/images/app_ssl_settings.png)


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

[組み込みアプリケーションサーバーレイヤー](workingcookbook-json.md#workingcookbook-json-deploy)の場合、 OpsWorks Stacks はサーバー設定を自動的に更新します。デプロイが完了したら、以下のようにして OpenSSL のインストールが成功したことを確認できます。

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

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

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

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

アプリが Mozilla Firefox で作動するように設定されていると、「`SEC_ERROR_UNKNOWN_ISSUER`」という証明書エラーが表示されることがあります。このエラーは、お客様の組織のウイルス対策およびマルウェア対策プログラムに搭載されている証明書交換機能、一部の種類のネットワークトラフィックモニタリングおよびフィルタリングソフトウェア、またはマルウェアのいずれかが原因で発生することがあります。このエラーのトラブルシューティング方法の詳細については、Mozilla Firefox Support ウェブサイトに掲載されている、「[安全なウェブサイトでの「安全な接続ではありません」エラーコードをトラブルシュートするには](https://support.mozilla.org/en-US/kb/error-codes-secure-websites?redirectlocale=en-US&redirectslug=troubleshoot-SEC_ERROR_UNKNOWN_ISSUER#w_monitoringfiltering-in-corporate-networks)」を参照してください。

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