前のトピック: INSSLR: SSL サポート付き冗長 HTTP 入力ゲートウェイ次のトピック: OUT: 単一のホスト出力ゲートウェイ アプライアンス


INSSLR2 - SSL サポート付き冗長 HTTP 入力ゲートウェイ

最新バージョン: 1.0.1-2

APP--INSSLR2 icon--ICO

早見表

カタログ

システム

カテゴリ

ゲートウェイ

ユーザ ボリューム

はい

最小 メモリ

192 M

OS

Linux

制約

いいえ

INSSLR2 アプライアンスはセキュアな HTTP リクエストのレイヤ 7 ゲートウェイです。 リクエストをエンコードされていない HTTP リクエストに変換します。 クライアント側で安全な HTTP をサポートするためにこの機能を使用できます。

ただし、バックエンド処理インフラストラクチャでは、以下のような場合の SSL をサポートしないかサポートできません。

設定された場合、INSSLR2 はクライアント証明書認証もサポートします。 SSL 相互認証の場合には、クライアントおよびサーバの両方が証明書および対応する公開鍵を交換します。 処理を進める前に、クライアントおよびサーバの両方は証明書を発行した証明機関(CA)に連絡して証明書が信頼できることを確認することができます。

そのデフォルト設定で、INSSLR2 は安全な HTTP リクエスト用のレイヤ -7 ゲートウェイとして動作します。 また、アプリケーションに送信されるネットワーク トラフィックに対してファイアウォール保護されたエントリ ポイントを提供します。 これはインターネット アクセス可能な静的 IP アドレスを使用して設定できます。

設定されると、2 つの INSSLR2 アプライアンスは冗長サービスを提供するためにフェールオーバ モードで使用できます。 この場合、INSSLR2 IP アドレスは 1 つのノード上でのみ実行され、失敗した場合には他の INSSLR2 アプライアンスに自動で転送されます。 一度にアクティブにする INSSLR2 アプライアンスは 1 つのみです。 フェールオーバ モードで実行する場合。INSSLR2 は複数のモードで動作するよう設定できます。

冗長モードで実行されるとき、INSSLR2 は以下について ctl 端子へのインターフェースを提供します。

INSSLR2 は、その http 端子へ接続されたバックエンド アプライアンスの健全性を常にモニタします。 INSSLR2 が行う健全性状態チェックには、簡易 TCP 接続チェックまたはより複雑な HTTP リクエスト(INSSLR2 の境界上で指定されている場合)が含まれる場合があります。

接続されたアプライアンスが失敗した場合には、INSSLR2 は、グリッド ダッシュボードへエラーをレポートします。または、冗長モードで、設定されている場合は、バックアップ INSSLR2 アプライアンスにフェールオーバを実行します。

複数のサービス用に単一 IP アドレスで表示する必要があるアプリケーションをサポートするには、非 HTTP トラフィックを透過的に個別の出力端子に転送するように INSSLR2 を設定します。 そのような接続で、このアプライアンスはレイヤ -3 ファイアウォール/NAT ルータとして動作します。

境界

リソース

リソース

最小値

最大値

デフォルト

CPU 使用率

0.05

4

0.05

メモリ使用量

192 MB

2 G

192 M

帯域幅

1 Mbps

2 Gbps

200 Mbps

メモ

端子

名前

方向

プロトコル

説明

ctl

in

http

アプライアンスがプライマリ/バックアップになることを強制する通知を受信します。

fover_mode が none でない場合のみ、この端子は接続を受け付けます。 アプライアンスをアクティブまたはパッシブにする有効な http リクエストは次のとおりです。

/?action=<active|passive|kill|status>

他方のノードがアクティブでなく、フェールオーバを完了できない場合、このアクションは成功しない可能性があります。また、エラーは返されません。 次のリクエストによってアプライアンスのステータスを確認するのは、呼び出しを行うアプリケーションです。

/?action=status

status は、アプライアンスの現在の状態(アクティブまたはパッシブ)を返します。

kill は、アプライアンスの強制的なシャットダウンを実行します。 これにより、他方のノードが実行中の場合、そのノードに引き継がせます。

in

in

任意

受信トラフィックをすべて受け付けます。

アプリケーション設定エディタの[インターフェース]タブを使用して、この端子に接続されたインターフェースを設定できます。

fover

in

raw

2 つの INSSLR2 インスタンス間の相互通信用のインターフェースをフェールオーバします。

アプリケーション設定エディタの[インターフェース]タブを使用して、この端子に接続されたインターフェースを設定できます。

http

out

http

設定された外部 IP アドレス上で受信された HTTPS または HTTP リクエスト(またはその両方)は、標準の HTTP ポート 80 を使用して、プレーン HTTP リクエストとして出力 http に転送されます。

クライアント提供の HTTP ヘッダに加えて、転送されたリクエストには以下の情報ヘッダが含まれます。

  • X-Forwarded-For: リモート クライアントの IP アドレス。

    これは、リモート IP アドレスの代わりにサーバ側の CGI スクリプトで使用します。

  • X-Forwarded-Proto: https

    このヘッダは、クライアントが HTTPS を介して接続されている場合に存在します。 このヘッダを使用して、HTTP および HTTPS 接続を区別することはバックエンド アプリケーションに依存します。

fs

out

nfs

キーの格納場所であるローカル キー ボリュームの代わりの場所として、nfs マウントを提供します。

ローカル キー ボリュームおよび fs 端子接続の両方が提供される場合、アプライアンスは開始しません。 この端子は未接続のままにできます。

aux

out

任意

他のプロトコルの出力(設定されている場合)。

詳細については、l3_accept_* プロパティを参照してください。

nfy

out

http

フェールオーバが発生するたびに通知を送信します。

fover_nfy_prefix も参照してください。 この端子は未接続のままにできます。

mon

out

cce

パフォーマンスとリソースの使用状況統計を送信します。

プロパティ

名前

タイプ

説明

dns1

IP アドレス

プライマリ DNS サーバを定義します。

リモート ホストがその IP アドレスによって指定されている場合、dns1 は空白にしておくことができます。 そうでない場合は、dns1 を指定します。

デフォルト:(空)

dns2

IP アドレス

プライマリ DNS サーバが応答しない場合に使用されるセカンダリ DNS サーバを定義します。

デフォルト:(空)

l7_accept

enum

http 端子に転送するために受け付ける HTTP トラフィックの種類を指定します。

有効な値: https、http、both、none。

none に設定された場合、トラフィックはすべて l3_accept_* プロパティのみに従ってリダイレクトされます。

デフォルト: both

l3_accept_proto

enum

どのプロトコルを aux 端子へ転送する必要があるかを指定します。

有効な値: none、tcp、udp、raw、all。
tcp または udp に設定されている場合は、l3_accept_port プロパティで、ポートを指定できます。

raw に設定した場合、l3_accept_port プロパティがプロトコル番号を指定します。

all に設定した場合、外部インターフェース上のすべての受信トラフィックが aux 端子に転送されます。 これよりも l7_accept プロパティの方が優先されます。

注: l7_accept を none 以外の値に設定した場合、すべての http(s) が http 端子へ転送され、残りのトラフィックはこのプロパティの指定どおりに aux へ転送されます。

デフォルト: none

l3_accept_port

String

aux 端子への l3_accept_proto によって指定されたプロトコルで受け付け、ルーティングするプロトコルのカンマまたはスペース区切りリスト。

このリスト内のプロトコルは、ポート番号または標準プロトコル名として指定できます(TCP または UDP ポートを指定する場合は ftp、smtp など、raw プロトコルを使用する場合は gre、tcp)。 ポート範囲も指定できます(1024:10000、0:1024)。

空の場合、指定されたプロトコルのすべてのポートが転送されます。

注: l3_accept_proto を raw に設定した場合、このプロパティを指定する必要があります。この場合、プロトコル番号を指定します。 複数の raw プロトコルを指定できますが、20:30 などのプロトコル範囲は指定できません。

デフォルト: all

allowed_hosts

String

接続できるホストまたはサブネットのリスト。 スペースまたはカンマで複数のエントリを区切る必要があります。

サポートされている形式の例: 192.168.1.2 192.168.1.0/24 192.168.2.0/255.255.255.0。

デフォルト: 0.0.0.0/0(すべて許可)

key_on_fs

String

キーが fs 端子を介して nfs マウントに格納されるか(on)、またはローカル キー ボリューム(off)上に格納されるかを示します。

有効な値: on および off

デフォルト: off

cert_file

String

このゲートウェイ インスタンスでクライアントに提示する必要があるサーバ証明書のファイル名(データ ボリュームのルートを基準にした)。

l7_accept を https または both に設定した場合、このプロパティによって指定された場所の設定済みデータ ボリューム上に有効な証明書を配置する必要があります。 そうしないと、INSSLR2 は起動に失敗します。 詳細については、「ボリューム」を参照してください。

デフォルト: server.pem

unsafe_ssl

String

レガシー ブラウザとの互換性のため「安全でない」ssl 暗号の使用を有効にします。

デフォルト値の disabled では、SSLv2 暗号だけでなく、安全と見なされない他のいくつかの SSLv3 および TLSv1 暗号も無効にします。

SSLv2 のみで作動するレガシー ブラウザ用の https セッションをサポートする必要がない限り、このプロパティを disabled のままにすることをお勧めします。 enabled に設定すると、システムで利用可能なすべての SSL 暗号が https セッションで使用できます。 これには SSLv2 が含まれます。

デフォルト: 無効

このプロパティはバージョン 1.2.1 に追加されました。

keepalive

Integer

INSSLR2 とクライアントの間の最大 keepalive 時間を指定します。 時間は秒単位で指定されます。

デフォルト: 15。

timeout

Integer

INSSLR2 がバックエンド サーバからの出力を何秒間待つかを指定します。

バックエンド サーバがタイムアウト秒の出力を送信しない場合、接続が閉じられます。

デフォルト: 300

max_request_size

Integer

クライアント リクエストの最大サイズ(MB)。 アプリケーションで大きなクライアント アップロードを処理する必要がある場合は増やします。

デフォルト: 10

adv_config

String

http と https の両方のリスナ(いずれか有効な方)用ロケーション ブロック内で nginx conf に挿入される raw 設定を追加します。

たとえば、カスタム ヘッダを追加するには、proxy_set_header myport$proxy_port に adv_config を設定します。

これにより、myport : 80 がバックエンド サーバに送信されるリクエストに追加されます。 adv_config はロケーション ブロックに対して任意の有効なステートメントに設定することができます。 詳細については、nginx ドキュメントを参照してください。

複数の設定行は ; で区切ることによって追加できます。

注: 設定されている場合、このプロパティには有効な nginx 構文(; で終了)が含まれている必要があります。そうなっていない場合、アプライアンスは起動に失敗します。

デフォルト:(空)

client_cert

String

クライアント証明書認証を有効にします。

有効な値: on、ask、および off

on に設定した場合、クライアント証明書認証が強制され、有効な証明書を持っているクライアントのみが INSSLR2 へのリクエストに成功します。

ask に設定した場合、クライアントは証明書を提示するよう求められます。しかし、有効な証明書を提示しなくても接続は確立されます。

デフォルト: off

client_depth

Integer

チェーンのクライアント証明書内で追求する検証の深さ。 client_cert が設定されていない場合、このプロパティは効果がありません。

有効な値: 1 ~ 9

デフォルト: 1

ca_list_client

String

PEM 形式の CA 証明書のシーケンスが含まれるファイル。 リストされた CA 証明書の名前が、接続時にクライアントに送信されます。 これはクライアントに対し、どのクライアント証明書を送信する必要があるかを通知します。

同じリストがクライアント証明書の確認にも使用されます。

ファイル名は、マウント済みキー ボリュームのルートまたは fs 端子を使用して行った nfs マウントのルートに相対するもので、次のようにパスを含めてもかまいません。

path/to/keys/ca_list_client.pem 

デフォルト: ca_list_client.pem

cert_revocation_list

String

証明機関によって生成される証明書失効リスト(CRL)が含まれるファイル。 このリストは、CA によって無効にされたクライアント証明書を識別します。

INSSLR2 に対して提示されるすべてのクライアント証明書が検索され、証明書の失効が判明した場合、INSSLR2 はクライアントに対して SSL 証明書エラー応答を発行します。

ca_list_client と同様、ファイル名はマウント済みキー ボリュームのルートまたは fs 端子を使用して行った nfs マウントのルートに相対するもので、次のようにパスを含めてもかまいません。

path/to/keys/ca_list_client.pem 

デフォルト: empty

ヘルス チェック プロパティ

名前

タイプ

説明

healthcheck_method

String

バックエンド Web サーバのヘルス チェックに使用されるメソッド。

  • off: ヘルス チェックは無効です。 他のすべての healthcheck_ プロパティは無関係になります。
  • tcp_connect: INSSLR2 は Web サーバのポート 80 に接続します。 接続が正常に確立される場合、INSSLR2 は Web サーバが機能しているとみなします。

    これは最も速いメソッドで、最も少ないリソースを必要とします。

  • http_head: INSSLR2 は、HEAD メソッドを使用して healthcheck_url プロパティによって指定されたドキュメントをリクエストします。

    これは tcp_connect より遅く、INSSLR2 と Web サーバの両方でより多くのリソースを必要としますが、信頼性は向上します。 応答では healthcheck_regexp によって指定された正規表現とのマッチングが行われます。 一致が見つかるとサーバは稼働中と考えられます。

  • http_get: INSSLR2 は、GET メソッドを使用して healthcheck_url プロパティによって指定されたドキュメントをリクエストします。

    これはほとんどのリソースを必要とする最も遅いメソッドですが、信頼性は最も高くなります。

    応答(ヘッダと本文)では healthcheck_regexp によって指定された正規表現とのマッチングが行われ。一致が見つかるとサーバは稼働中と考えられます。

デフォルト: off。

healthcheck_url

String

http_get および http_head のヘルス チェック メソッドを通じてバックエンド Web サーバのヘルス チェックを実行するのに使用される URL。

完全な URL(http://host.name/file/to/check/for.php)、または相対パス(/file/to/check/for.php)として指定可能です。

URL として指定された場合、INSSLR2 は HTTP/1.1 プロトコルを使用する一方で、Host: ヘッダ内の UR から抽出されたホスト名を使用して、ヘルス チェックを実行します。 これにより、仮想ホストの使用が可能になります。

相対パスとして指定されると、INSSLR2 は HTTP/1.0 プロトコルを使用し、このプロパティによって指定されたドキュメントをチェックします。

デフォルト: /

healthcheck_agent

String

http_get と http_head のヘルス チェック メソッド用のエージェント識別子として使用される文字列。

デフォルト: INSSLR2-health-check

healthcheck_regexp

String

http_head および http_get ヘルス チェック モードで使用されるテスト文字列。 OK などの短い、または一般的な値は誤検出の一致の原因になる場合があります。 この文字列は Perl の正規表現です。

デフォルト: ^HTTP¥/1¥.¥d¥s+200

healthcheck_interval

Integer

バックエンド Web サーバのヘルス チェックの間隔。 これは秒単位で指定します。

デフォルト: 60 秒

healthcheck_timeout

Integer

ヘルス チェックに要する最大時間(単位: 秒)。

タイムアウトを超えた場合、 チェックは失敗したとみなされ、終了します。 新しいチェックが開始されます。

デフォルト: 10

healthcheck_alert

Integer

INSSLR2 がグリッド ダッシュボード上でエラーをダンプし始めるまでのヘルス チェックの失敗回数。

0 に設定した場合、エラーはダッシュボードにレポートされませんが、ヘルス チェックは有効なままです。

アプリケーションを起動/停止するとき、誤った判定による警告を回避するため、値の設定を小さくし過ぎないでください。

INSSLR2 を冗長モードで実行しており、バックエンド サーバが失敗した場合にバックアップ ノードへスイッチを移動する場合は、fover_on_healthcheck も参照してください。

既定値: 3

フェールオーバ シナリオで使用する詳細プロパティ

名前

タイプ

説明

fover_mode

String

フェールオーバ モード。

有効な値: none (フェールオーバなし)、symmetric、asymmetric

none に設定した場合、INSSLR2 は INSSLR2 アプライアンスのように動作し、フェールオーバ機能は提供されません。

symmetric に設定すると、INSSLR2 は対称なフェールオーバ モードで実行されます。 どちらも対称なフェールオーバ モードで実行される 2 つの INSSLR2 アプライアンスを必要とします。

asymmetric に設定すると、INSSLR2 は、非対称なフェールオーバ モードで実行されます。 どちらも非対称なフェールオーバ モードで実行される 2 つの INSSLR2 アプライアンスを必要とします。

注: フェールオーバ モードで実行する場合、両方のアプライアンスの fover_mode が同じ値に設定されている必要があります。

デフォルト: none

fover_remote_ip

IP アドレス

フェールオーバ モードで使用される別の INSSLR2 アプライアンスのリモート IP アドレス。

注: fover_mode を none に設定している場合は、これを空にしておきます。

デフォルト:(空)

fover_nfy_prefix

String

フェールオーバが発生するたびにリクエストされる URL プレフィックス。

リクエストされる URL は以下のとおりです。

http://nfy/ fover_nfy_prefix fover_mode= fover_mode &state= <start|stop> &ip_addr= ip_addr &fover_local_ip= fover_local_ip &fover_remote_ip= fover_remote_ip &fover_netmask= fover_netmask、nfy 端子経由で送信されます。

デフォルト: ?

fover_on_healthcheck

Integer

http 端子上のヘルス チェックが失敗したときに、INSSLR2 がバックアップ ノードにフェールオーバを実行するかどうかを指定します。

ゼロ以外の値に設定されている場合、INSSLR2 はその後の何回にもわたるヘルス チェックの失敗後にフェールオーバを実行します。 アプリケーションを起動/停止するとき、誤った判定による警告を回避するため、値の設定を小さくし過ぎないでください。

単に失敗時の通知が必要な場合は、healthcheck_alert を参照してください。

デフォルト: 0(無効)

ボリューム

名前

説明

key

最低限、SSL サーバの署名キーが含まれる読み取り専用データ ボリューム(プレースホルダ)。 ファイルは PEM 形式である必要があります。

cert_file プロパティが別の名前を指定するように変更されない場合、証明書は server.pem という名前のキー ボリュームのルート ディレクトリ内に存在する必要があります。

エラー メッセージ

アプライアンスが開始に失敗すると、以下のメッセージが、アプライアンスのログ ファイルまたはグリッド コントローラのシステム ログのいずれかに表示される場合があります。

パフォーマンス
アプリケーション フェールオーバ

INSSLR2 は、およそ 10 秒で INSSLR2 の失敗を検出し、別のアプリケーションへのフェールオーバにさらに 10 秒を必要とします。 アプリケーションの失敗が最初に発生してから、別のアプリケーションにトラフィックが引き継がれるまでの合計時間は、約 20 秒です。

リクエスト レート

ドキュメント サイズや利用可能なネットワーク帯域幅にもよりますが、INSSLR2 は毎秒 3000 以上のトランザクション(リクエスト/応答ペア)をルーティングします。

データ スループット

ドキュメント サイズや利用可能なネットワーク帯域幅にもよりますが、INSSLR2 は 7 MB/秒以上でルーティングします。

同時接続

デフォルト メモリで、INSSLR2 は 500 以上の同時保留リクエストをサポートします。 クライアントからのオープン TCP 接続である保留リクエストで、1 つ以上の未完了 HTTP リクエストが進行中です。

同時接続の最大数は、利用可能な空きメモリに依存します。 16MB の増設メモリは、それぞれ同時 http トランザクションの数を 500 ずつ増やします。

たとえば、冗長モードで実行していて、2000 の同時接続に対応できるようにするには、100M + 3*16M = 148M が必要となります。 冗長モードで実行する場合の最小メモリは 100M です。

通知

冗長モード(fover_mode が none ではない)で実行する場合、INSSLR2 はアクティブまたはパッシブに移行するごとに通知をトリガします。 これは、アクティブなノードの起動時またはフェールオーバの発生時に実行されます。 アクティブまたはパッシブになると通知が各ノードによって送信されます。

INSSLR2 は、次の 2 つの通知を送信します。

fover_nfy_prefix を使用して、呼び出されるリモート スクリプトの場所を変更するか、またはパラメータを追加できます(またはその両方)。

fover_nfy_prefix 値の例:

/path/to/script.php?, /path/to/script.php?username=user&password=pass&。 

注:

ヘルス チェック

INSSLR2 は、1 分ごとに以下を確認する cronjob を実行します。

いずれかが true の場合は、エラー メッセージがグリッド ダッシュボードに送信されます。 複数のテストに失敗した場合は、すべてのエラーを示すサマリ メッセージがグリッド ダッシュボードにポストされます。

それぞれのエラーは 1 時間に 1 回のみグリッド ダッシュボードに送信されます。 アプライアンス起動後の最初の 5 分間はエラーはレポートされません。 これは、レプリケーションでの他のノードが開始されていないときの間違ったアラームを防止するためです。

サーバ証明書

SSL を使用するには、署名された証明書と暗号化に使用された秘密キーの両方が必要です。 キーと証明書は、PEM 形式にし、cert_file プロパティによって指定された単一のファイルに配置する必要があります。

サーバ証明書の生成

信頼された証明機関(CA)によって有料で署名できるサーバ証明書を生成するか、自己署名証明書を作成できます。

以下の手順に従います。

  1. 以下のコマンドを使用して、秘密キーを生成します。
    openssl genrsa -out privkey.pem 2048 
    

    また、以下のコマンドを使用して、パスワード保護されたキーを生成できます。 ただし、パスワード保護されたキーを作成する場合は、INSSLR2 で使用する前にパスワードを削除する必要があります。 INSSLR2 ではパスワードなしのキーが必要です。

    openssl genrsa -des3 -out privkey.pem 2048 
    
  2. 以下のいずれかのオプションを使用して、証明書を作成します。

サーバ証明書の使用

これで、ファイルに証明書とキーを配置し、以下のコマンドを実行することにより INSSLR2 で使用できるようになります。

cat privkey.pem server.crt > server.pem 

キーがパスワード保護されている場合は、以下のコマンドを実行してパスワードを削除できます。

openssl rsa -in key_with_pass.pem -out privkey.pem 

既存の apache+mod_ssl サーバ証明書の使用

INSSLR2 では、Apache で使用する既存の証明書を使用できます。 上記の手順に従ってキーがパスワード保護されていないことを確認し、単一のファイルにプライベート証明書とキーを配置します。

例:

チェーン証明書を使用する場合は、発行者によって提供される中間証明書も含める必要があります。 秘密キー、証明書、中間証明書をこの順序で単一ファイル内に配置してください。

例:

重要: サーバ署名キーは、ユーザの Web サイトのアイデンティティを証明するものです。 ユーザの介入なしでアプライアンスが読み取れるようにするためにパスワード暗号化されないので、脆弱でもあります。

データ ボリュームにインストールするときは、キー ファイルを保護するための手段を講じます。 同じデータ ボリュームを他の目的に使用しないでください。また、Web サーバから見られる状態にしないでください。 (例: HTML ページやスクリプトなどの Web アクセス可能なデータをホストするなど)

クライアント証明書

以下の例は、ユーザ自身の証明機関を作成し、OpenSSL を使用して、自分の証明書に署名する方法の概要を示しています。 これは OpenSSL 0.9.8b (INSSLR2 にインストールされているものと同じバージョン)を使用してテストされました。

証明機関の作成

自己署名付きサーバ証明書の作成に使用するご自身の証明機関をすでにお持ちの場合は、この手順をスキップして、その証明機関を使用することができます。 ユーザのアプリケーションに対する信頼された権限のインスツルメントを作成するときは、環境が安全であることが重要です。

重要: 証明機関用の秘密キーはアプリケーションの信頼性の基盤です。 誰にでもわかるような場所に保管したり、他者に提供したりしないでください。

以下の手順に従います。

  1. 安全なホスト上の該当するディレクトリ内に、作業ディレクトリを作成します。
  2. 証明機関用に、パスワード保護された RSA キーを、2048 ビットのキーの長さで作成します。
    openssl genrsa -des3 -out CA/private/CA_key.pem 2048 
    
  3. 秘密キーから、CA 用の公開キー証明書を作成します。
    openssl req -new -key CA/private/CA_key.pem -x509 -days 365 -out CA/CA_cert.pem 
    

証明機関の署名付きクライアント証明書の作成

証明機関の署名付きクライアント証明書を作成することができます。

以下の手順に従います。

  1. RSA 秘密キーを生成します。
    openssl genrsa -out clientA_privkey.pem 2048 
    

    パスワード保護されているキーを作成するには、-des3 スイッチを使用します

  2. 秘密キーから証明書署名要求(CSR)を生成します。
    openssl req -new -key clientA_privkey.pem -out clientA_request.csr 
    
  3. CA 用に生成された証明書を使用して、CSR 内の証明書に署名します。
    openssl x509 -req -days 365 -in clientA_request.csr -CA CA/CA_cert.pem -CAkey CA/private/CA_key.pem -CAcreateserial -out clientA.cer 
    

注:

INSSLR2 によって使用される CA リスト ファイルの作成

CA の署名付きクライアント証明書の無効化

CA によって発行されたクライアント証明書を無効にするには、以下のコマンドを使用します。

openssl ca -config openssl.conf -revoke clientB.cer -crl_reason keyCompromise 

この例で「openssl.conf」は以下に示すとおりであり、「crl_reason」パラメータは、unspecified、keyCompromise、CACompromise、affiliationChanged、superseded、cessationOfOperation、certificateHold、removeFromCRL のうちのいずれかです。 理由の一致では、大文字と小文字を区別しません。

証明書失効リスト(CRL)を再生成する方法

openssl ca -config openssl.conf -gencrl -out CA/crl.pem 

この例で、「crl.pem 」は「cert_revocation_list」プロパティとして INSSLR2 に提供されるファイルです。

上記の例に使用される環境設定ファイルの一例を以下に示します。 
      ####################################################################
      [ ca ]
      default_ca      = CA_default            # The default ca section

      ####################################################################
      [ CA_default ]

      dir             = ./CA                  # Where everything is kept
      certs           = $dir/certs            # Where the issued certs are kept
      crl_dir         = $dir/crl              # Where the issued crl are kept
      database        = $dir/index.txt        # database index file.
      #unique_subject = no                    # Set to 'no' to allow creation of
                                        # several ctificates with same subject.
      new_certs_dir   = $dir/newcerts         # default place for new certs.

      certificate     = $dir/cacert.pem       # The CA certificate
      serial          = $dir/serial           # The current serial number
      crlnumber       = $dir/crlnumber        # the current crl number
                                        # must be commented out to leave a V1 CRL
      crl             = $dir/crl.pem          # The current CRL
      private_key     = $dir/private/cakey.pem# The private key
      RANDFILE        = $dir/private/.rand    # private random number file

      default_days    = 365                   # how long to certify for
      default_crl_days= 30                    # how long before next CRL
      default_md      = sha1                  # which md to use.
      preserve        = no                    # keep passed DN ordering

      policy          = policy_anything

      [ policy_anything ]
      countryName             = optional
      stateOrProvinceName     = optional
      localityName            = optional
      organizationName        = optional
      organizationalUnitName  = optional
      commonName              = supplied
      emailAddress            = optional

INSSLR2 が使用する証明機関リスト ファイルの作成

INSSLR2 が使用する証明機関リスト ファイルを作成できます。

ca_list_client プロパティによって識別されるファイルを作成する方法

  1. 以下のファイルにアクセスします。
    cat CA/private/CA_key.pem CA/CA_cert.pem > ca_list_client.pem 
    
  2. このファイルを、キー ボリュームまたは fs 端子経由で nfs マウントされたボリュームのいずれかに置きます。

    必要であれば、INSSLR2 サーバ証明書(server.pem など)もクライアント証明書と同じ方法で作成し、作成済みの証明機関によって同様に署名することができます。 この証明書にはパスワードを使用しないでください。

  3. server.pem と ca_list_client.pem を所定の場所に置いたら、以下の方法でクライアント証明書認証をテストします。

クライアント証明書ヘッダ

HTTPS を使用してクライアントを INSSLR2 に接続する場合、およびクライアント証明書を提示する場合、INSSLR2 はバックエンド サーバに返されるリクエストに以下のヘッダを追加します。

これらのヘッダを利用するかどうかはアプリケーションによって判断されます。 INSSLR2 は、特に確認せずに(シグネチャと正しい暗号化のチェックは例外)この情報を渡します。

典型的な使用状況

Web アプリケーション

アプリケーションへの http または https アクセスを行うには、WEB アプライアンスに http 端子を直接接続します。

APP--Web Applications_Provide HTTPS--ICO

拡張性のある Web アプリケーションの場合は、HALB アプライアンスに http 端子をフックします。

APP--Web Applications_Scalable--ICO

設定例の一覧は、デフォルト以外の値に設定されたプロパティのみを表示しています。

名前

タイプ

説明

17_accept

http/https/both

どの l7 プロトコルが使用されるかを指定します。

https または both を指定する場合、重要なボリュームには cert_file プロパティによって指定された ssl 証明書を含める必要があります。

サービスを追加した Web アプリケーション

アプリケーション内に http 以外にもサービスがある場合、INSSLR2 を使用して http トラフィックをその http 端子へ渡し、他のサービス用の aux 端子を使用することができます。


APP--Web App w Additional Services--ICO

プロパティ

メモ

17_accept

http/https/both

どの l7 プロトコルが使用されるかを指定します。

https または both を指定する場合、重要なボリュームには cert_file プロパティによって指定された ssl 証明書を含める必要があります。

l3_accept_proto

tcp

tcp ポート 25、110、143 を aux 端子へリダイレクトします。

l3_accept_port

25,110,143

tcp ポート 25、110、143 を aux 端子へリダイレクトします。

複数サービスを追加した Web アプリケーション

複数の TCP/UDP サービスおよび HTTP を使用する場合、INSSLR2 を使用して HTTP トラフィックをその HTTP 端子へ渡し、aux を使用して残りのトラフィックを PS8 にフィードします。 PS8 から必要なトラフィックがバックエンド サーバにフィードされます。

APP--Web App w Multiple Additional Services--ICO

プロパティ

メモ

17_accept

http/https/both

どの l7 プロトコルが使用されるかを指定します。

https または both を指定する場合、重要なボリュームには cert_file プロパティによって指定された ssl 証明書を含める必要があります。

l3_accept_proto

all

http 端子へ渡されないすべての IP (icmp 以外の)トラフィックを aux 端子へリダイレクトします。

冗長性のある Web アプリケーション

冗長性のある Web アプリケーションが必要な場合は、アプリケーションをコピーし、INSSLR2 を使用して、外部 IP アドレスにフェールオーバ機能を提供することができます。

注: 同じアプリケーション内の 2 つの INSSLR2 アプライアンスが冗長モードで実行されるように設定する場合、同じ IP アドレスを 2 つの異なるインターフェース上に設定した場合、警告メッセージが表示されます。 そのエラーは無視してください。

バックアップ Web アプリケーション

ユーザにダウンタイムを通知するバックアップ アプリケーションのみが必要な場合は、INSSLR2 を使用して、最小限のリソースを必要とするバックアップ アプリケーションを構築します。

使用中のアプライアンス:

プライマリ アプリケーション上の INSSLR2

プロパティ

メモ

fover_mode

asymmetric

プライマリがダウンしているときに限りバックアップ アプリケーションを使用するので、asymmetric モードで実行されます。

fover_remote_ip

192.168.100.2

2 つのアプリケーション内の INSSLR2 アプライアンス間の通信に使用されるリモート IP アドレス。

バックアップ アプリケーション上の INSSLR2

プロパティ

メモ

fover_mode

asymmetric

プライマリがダウンしているときに限りバックアップ アプリケーションを使用するので、asymmetric モードで実行されます。

fover_remote_ip

192.168.100.1

2 つのアプリケーション内の INSSLR2 アプライアンス間の通信に使用されるリモート IP アドレス。

注: アプリケーション設定エディタの[インターフェース]タブを使用して、fover 端子に接続されたインターフェースの属性を設定できます。 例: fover_local_ip および fover_netmask プロパティ。

単一アプリケーション内の冗長性のある Web アプリケーション

新規のアプリケーションを作成しないで、アプリケーションを冗長モードで実行する場合、単純にアプライアンスを二重にすれば冗長モードで実行できます。 この場合は(少なくとも) 2 つの Web サーバと 2 つのデータベース アプライアンスが標準モードで使用され、すべてが使用されるため拡張性が提供されます。 これらはいずれも、一方のアプライアンスに障害が発生した場合、単独でアプリケーションにサービスを提供できます。

追加の拡張性を必要とする場合は、さらに多くの Web とデータベースのアプライアンスを追加できます。 この例では、アプライアンスの半分(in1、sw1、web1、db1)が 1 つのフェールオーバ グループ内で実行され、残り(in2、sw2、web2、db2)は別のフェールオーバ グループ内で実行されるので、アプリケーションはサーバ クラッシュに耐えることができます。 すべてのアプライアンス(要求されるリソースが非常に少ない 1 つの INSSLR2 および 1 つの HALB のアプライアンスを除く)がアクティブ状態にあり、プライマリが失敗したときにのみ実行されるバックアップ アプリケーションにはリソースが費やされないので、このアプリケーションは非常に低コストで冗長性を提供します。

APP--Redundant Web application_single application_ICO

in1

プロパティ

メモ

fover_mode

symmetric

symmetric モードで実行されます。

fover_remote_ip

192.168.100.2

2 つのアプリケーション内の INSSLR2 アプライアンス間の通信に使用されるリモート IP アドレス。

in2

プロパティ

メモ

fover_mode

symmetric

symmetric モードで実行されます。

fover_remote_ip

192.168.100.1

2 つのアプリケーション内の INSSLR2 アプライアンス間の通信に使用されるリモート IP アドレス。

db1

プロパティ名

メモ

auto_create

1

ボリュームが空の場合は、データベースを作成します。

server_id

1

マスタ サーバ 1。 これはリモート アプリケーション上では異なります。

rpl_mode

master_and_slave

マスタとスレーブ

db2

プロパティ名

メモ

auto_create

1

ボリュームが空の場合は、データベースを作成します。

server_id

1

マスタ サーバ 1。これはリモート アプリケーション上では異なります。

rpl_mode

master_and_slave

マスタとスレーブ

2 つの同一アプリケーションを実行する冗長性のある Web アプリケーション

2 つの同一のアプリケーションを同じグリッド(ただし、IP アドレスが両方のグリッドからアクセス可能である場合は、別々のサーバまたは別々のグリッド)で実行できます。 これは、サーバの 1 つが失敗してもアプリケーションのうちの 1 つにしか影響しないようにするためです。

注: 同じアプリケーション内の 2 つの INSSLR2 アプライアンスが冗長モードで実行されるように設定する場合、同じ IP アドレスを 2 つの異なるインターフェース上に設定した場合、警告メッセージが表示されます。 そのエラーは無視してください。

以下の例は、冗長モードでも実行されているデータベース アプライアンスを使用したアプリケーションを示しています。 このため、1 つのアプリケーションで失敗した場合でも、別のアプリケーションが引き継ぐのでデータが損失しません。

APP--Redundant Web application_two identical applications--ICO

使用中のアプライアンス:

クライアント リクエストは insslr ゲートウェイ上に送られます。 ゲートウェイは web_lb ロード バランサにリクエストを転送し、web_lb ロード バランサは web1 と web2 のいずれかの Web サーバにリクエストを伝えます。

Web サーバは db データベースにアクセスします。 db アプライアンスはリモート アプリケーションに接続します。 データベースをレプリケートするには、リモート アプリケーションが同じもののコピーで、唯一異なるのは db の server_id とネットワーク設定のみである必要があります。

リモート アプリケーションは、リモート アプリケーションの repl_out ゲートウェイからのみ接続が許可されるように設定された repl_in ゲートウェイを使用して、db アプライアンスに接続します。 2 つのアプリケーション内の db アプライアンスはマスタ/マスタ設定で実行されるので、これらのデータは常に同一です。

プロパティ設定の例

リストに表示されていないプロパティはデフォルト値のままにしてください。 db への Web アクセスは、ポート 8080 上の admin ゲートウェイを使用すれば可能です。

insslr

プロパティ

メモ

fover_mode

symmetric

symmetric モードで実行されます。

fover_remote_ip

192.168.100.2

2 つのアプリケーション内の INSSLR2 アプライアンス間の通信に使用されるリモート IP アドレス。 リモート アプリケーションでは、これを 192.168.100.1 に変更します。

db

プロパティ名

メモ

auto_create

1

ボリュームが空の場合は、データベースを作成します。

error_log_filename

db.error

logs データ ボリューム上に格納されるエラー ログ ファイルの名前。

error_log_level

error

エラー ログ レベル

server_id

1

マスタ サーバ 1。これは第 2 アプリケーション上では異なります。

rpl_mode

master_and_slave

マスタとスレーブ

重要: 常にアクティブなのは 1 つのアプリケーションだけです。他方のアプリケーションはフェールオーバ用に実行され、アクティブなアプリケーションに障害が発生した場合に使用されます。

注:

アプライアンス内で使用されるオープン ソース/サードパーティ ソフトウェア

INSSLR2 は、ベース クラス LUX6 で使用されるサードパーティのオープン ソース パッケージに加えて、以下のサードパーティのオープン ソース パッケージを使用します。

ソフトウェア

バージョン

変更

ライセンス

メモ

PyXML

0.8.4-19

いいえ

BSD

該当なし

heartbeat

3.0.4-1

いいえ

LGPLv2.1

該当なし

heartbeat-libs

3.0.4-1

いいえ

LGPLv2.1

該当なし

iptables

1.4.7-5.1.el6_2

いいえ

GPLv2

該当なし

libgcrypt

1.4.5-9.el6_2.2

いいえ

GPLv2

該当なし

libgpg-error

1.7-4

いいえ

LGPLv2.1

該当なし

lighttpd

1.4.18-1

いいえ

BSD

該当なし

nginx

0.7.62-1

はい

BSD

該当なし

sudo

1.7.4p5-13.el6_3

いいえ

BSD

該当なし

telnet

0.17-47

いいえ

BSD

該当なし