最新バージョン: 2.0.2-1
早見表 |
|
カタログ |
システム |
カテゴリ |
ゲートウェイ |
ユーザ ボリューム |
あり |
最小 メモリ |
160M |
OS |
Linux |
制約 |
なし |
INSSLR アプライアンスはセキュアな HTTP リクエストのレイヤ 7 ゲートウェイです。 リクエストをエンコードされていない HTTP リクエストに変換します。 クライアント側で安全な HTTP をサポートする必要がある場合は、常にこのアプライアンスを使用できますが、バックエンド処理インフラストラクチャでは、以下のような場合の SSL をサポートしないかサポートできません。
設定された場合、INSSLR はクライアント証明書認証もサポートします。 SSL 相互認証の場合には、クライアントおよびサーバの両方が証明書および対応する公開鍵を交換します。 処理を進める前に、クライアントはサーバの証明書を発行した証明機関(CA Technologies)に連絡して証明書が信頼できることを確認することができます。 サーバも同様の手順を実行できます。
デフォルト設定では、INSSLR は CA 3Tera AppLogic アプリケーションへのファイアウォールで保護されたエントリ ポイントをネットワーク トラフィックに提供する、セキュアな HTTP リクエストのレイヤ 7 ゲートウェイとして動作します。これはインターネットによってアクセス可能な静的 IP アドレスと共に設定できます。
設定されると、2 つの INSSLR アプライアンスは冗長サービスを提供するためにフェールオーバ モードで使用できます。 この場合、INSSLR IP アドレス(ip_addr を介して設定)は 1 つのノード上でのみ実行され、失敗した場合にはもう一方の INSSLR アプライアンスに自動で転送されます。 どの時点においても、アクティブなのは INSSLR アプライアンスのうち 1 つだけです。 フェールオーバ モードで実行する場合。INSSLR は複数のモードで動作するよう設定できます。
冗長モードで実行されるとき、INSSLR は以下について ctl 端子へのインターフェースを提供します。
INSSLR は、その http 端子へ接続されたバックエンド アプライアンスの健全性を常にモニタします。 INSSLR が行う健全性状態チェックには、簡易 TCP 接続チェックまたはより複雑な HTTP リクエスト(INSSLR の境界上で指定)が含まれる場合があります。 接続されたアプライアンスが失敗した場合には、INSSLR は、グリッド ダッシュボードへエラーをレポートします。または、冗長モードで、設定されている場合は、バックアップ INSSLR アプライアンスにフェールオーバを実行します。
複数のサービス用に単一 IP アドレスで表示する必要があるアプリケーションをサポートするには、非 HTTP トラフィックを透過的に個別の出力端子に転送するように INSSLR を設定できます。 そのような接続で、このアプライアンスはレイヤ -3 ファイアウォール/NAT ルータとして動作します。
リソース
リソース |
最小 |
最大 |
デフォルト |
CPU |
0.05 |
4 |
0.05 |
メモリ |
160M |
2 G |
160 M |
帯域幅 |
1 Mbps |
2 Gbps |
200 Mbps |
CA 3Tera AppLogic 2.7 リリース用のデフォルト メモリは 128MB に変更されました。 最小メモリは 64MB のままです。
注
INSSLR に割り当てられたメモリの量はそのスループットに影響しません。 より多くのメモリを使用するのは、バックエンド サーバが過度の長時間にわたってリクエストを保持できるように、多くの同時リクエストをサポートする目的のためのみです。
端子
名前 |
方向 |
プロトコル |
説明 |
ctl |
in |
HTTP |
アプライアンスがプライマリ/バックアップになることを強制する通知を受信します。 fover_mode が none でない場合のみ、この端子は接続を受け付けます。 有効な http リクエストは、/?action=<active|passive|kill|status> のような形式です。 active/passive によって、アプライアンスはアクティブまたはパッシブになります。 注: このアクションが成功しなくても(別のノードがアクティブでなく、フェールオーバが完了できない場合)、エラーは返されません。 /?action=status リクエストによってアプライアンスのステータスを確認するのは、呼び出しを行うアプリケーションです。 status は、アプライアンスの現在の状態(アクティブ/パッシブ)を返します。 kill は、アプライアンスの強制シャットダウンを実行し、別のノードに引き継がせます(実行中の場合)。 |
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 |
パフォーマンスとリソースの使用状況統計を送信します。 |
プロパティ
名前 |
タイプ |
説明 |
ip_addr |
ip_owned |
ゲートウェイの外部 IP アドレス。 このプロパティにはデフォルト値がありません。設定する必要があります。 デフォルト:(空) |
netmask |
IP アドレス |
ネットマスク。 このプロパティにはデフォルト値がありません。設定する必要があります。 デフォルト:(空) |
gateway |
IP アドレス |
送信トラフィック用のデフォルト ゲートウェイ。 デフォルト:(空) |
l7_accept |
enum |
http 端子に転送するために受け付ける HTTP トラフィックの種類を指定します。 有効な値: https、http、both、none。 none に設定された場合、トラフィックはすべて l3_accept_* プロパティのみに従ってリダイレクトされます。 |
l3_accept_proto |
enum |
どのプロトコルを aux 端子へ転送する必要があるかを指定します。 有効な値: none、tcp、udp、raw、all。 |
l3_accept_port |
文字列 |
aux 端子への l3_accept_proto によって指定されたプロトコルで受け付け、ルーティングするプロトコルのカンマ(またはスペース)区切りリスト。リスト内のプロトコルは、ポート番号または標準プロトコル名として指定されることがあります(たとえば、ftp、smtp など。 tcp/udp ポートまたは gre、tcp、などを指定するとき。 raw プロトコルを使用するとき)。 ポート範囲も指定できます(1024: 10000、0: 1024)。 空にしておくと、指定されたプロトコルのすべてのポートが転送されます。 |
allowed_hosts |
文字列 |
接続できるホストまたはサブネットのリスト。 スペースまたはカンマで複数のエントリを区切ります。 サポートされている形式の例: 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 |
文字列 |
キーが fs 端子を介して nfs マウントに格納されるか(on)、またはローカル キー ボリューム(off)上に格納されるかを示します。 有効な値: on および off デフォルト: off。 |
cert_file |
文字列 |
このゲートウェイ インスタンスでクライアントに提示する必要があるサーバ証明書のファイル名(データ ボリュームのルートを基準にした)。 注: l7_accept を https または both に設定した場合は、このプロパティによって指定された場所の設定済みデータ ボリューム(以下の「ボリューム」を参照)上に有効な証明書が存在する必要があり、そうなっていない場合は、INSSLR の起動に失敗します。 |
unsafe_ssl |
文字列 |
レガシ ブラウザとの互換性のために、安全でない ssl 暗号の使用を有効にします。 デフォルト値の disable では、SSLv2 暗号だけでなく、安全と見なされない他のいくつかの SSLv3 および TLSv1 暗号も無効にします。 SSLv2 のみで作動するレガシー ブラウザ用の https セッションをサポートする必要がない限り、このプロパティを disabled のままにすることをお勧めします。 enabled に設定した場合、システム(SSLv2 を含む)で使用可能なすべての SSL 暗号を https セッションで使用できます。 |
keepalive |
整数 |
INSSLR とクライアントの間の最大 keepalive 時間(単位: 秒)を指定します。 デフォルト: 15。 |
timeout |
整数 |
INSSLR がバックエンド サーバからの出力を何秒間待つかを指定します。 バックエンド サーバがタイムアウト秒の出力を送信しない場合、接続が閉じられます。 |
max_request_size |
整数 |
クライアント リクエストの最大サイズ(MB)。 アプリケーションで大きなクライアント アップロードを処理する必要がある場合は増やします。 デフォルト: 10 |
adv_config |
文字列 |
http と https の両方のリスナ(いずれか有効な方)用ロケーション ブロック内で nginx conf に挿入される raw 設定を追加します。 たとえば、カスタム ヘッダを追加するには、proxy_set_header myport$proxy_port に adv_config を設定します。 これにより、myport : 80 がバックエンド サーバに送信されるリクエストに追加されます。 adv_config は、ロケーション ブロックに対して任意の有効なステートメントに設定することができます(詳細は nginx ドキュメントを参照してください)。 複数の設定行は ; で区切ることによって追加できます。 設定されている場合、このプロパティには有効な nginx 構文(; で終了)が含まれている必要があります。そうなっていない場合、アプライアンスは起動に失敗します。 デフォルト:(空) |
client_cert |
文字列 |
クライアント証明書認証を有効にします。 有効な値: on および off on に設定した場合、クライアント証明書認証が強制され、有効な証明書を持っているクライアントのみが INSSLR へのリクエストに成功します。 ask に設定した場合、クライアントは証明書を提示するよう求められます。しかし、有効な証明書を提示しなくても接続は確立されます。 デフォルト: off。 |
client_depth |
整数 |
チェーンのクライアント証明書内で追求する検証の深さ。 client_cert が設定されていない場合、このプロパティは効果がありません。 有効な値: 1 ~ 9。 デフォルト: 1 |
ca_list_client |
文字列 |
PEM 形式の CA (Certificate Authority)証明書のシーケンスが含まれるファイル。 リスト表示された証明書の名前は、接続時にクライアントへ送信されます。 これはクライアントに対し、どのクライアント証明書を送信する必要があるかを通知します。 同じリストがクライアント証明書の確認にも使用されます。 ファイル名は、マウント済みキー ボリュームのルートまたは fs 端子経由で行った nfs マウントのルートに相対するもので、たとえば path/to/keys/ca_list_client.pem のようにパスを含めてもかまいません。 デフォルト: ca_list_client.pem |
cert_revocation_list |
文字列 |
CA (Certificate Authority)によって生成される証明書失効リスト(CRL)が含まれるファイル。 このリストは、CA によって無効にされたクライアント証明書を識別します。 INSSLR に対して提示されるすべてのクライアント証明書が検索され、証明書の失効が判明した場合、INSSLR はクライアントに対して「SSL 証明書エラー」応答を発行します。 ca_list_client と同様、ファイル名はマウント済みキー ボリュームのルートまたは fs 端子経由で行った nfs マウントのルートに相対するもので、パスを含めることができます(たとえば path/to/keys/ca_list_client.pem デフォルト: "")。 |
名前 |
タイプ |
説明 |
healthcheck_method |
文字列 |
バックエンド Web サーバのヘルス チェックに使用されるメソッド。 |
healthcheck_url |
文字列 |
http_get および http_head のヘルス チェック メソッドを通じてバックエンド Web サーバのヘルス チェックを実行するのに使用される URL。 完全な URL(http://host.name/file/to/check/for.php)、または相対パス(/file/to/check/for.php)として指定可能です。 URL として指定された場合、INSSLR は HTTP/1.1 プロトコルを使用する一方で、Host: ヘッダ内の UR から抽出されたホスト名を使用して、ヘルス チェックを実行します。 これにより、仮想ホストの使用が可能になります。 相対パスとして指定されると、INSSLR は HTTP/1.0 プロトコルを使用し、このプロパティによって指定されたドキュメントをチェックします。 |
healthcheck_agent |
文字列 |
http_get と http_head のヘルス チェック メソッド用のエージェント識別子として使用される文字列。 |
healthcheck_regexp |
文字列 |
http_head および http_get ヘルス チェック モードで使用されるテスト文字列。 短いか一般的な値(たとえば 「OK」)は間違った正の一致の原因になる場合があります。 この文字列は Perl の正規表現です。Perl の正規表現に関する詳細は、こちらを参照してください。 |
healthcheck_interval |
整数 |
バックエンド Web サーバのヘルス チェックの間隔(秒単位で指定)。 |
healthcheck_timeout |
整数 |
ヘルス チェックに要する最大時間(単位: 秒)。 タイムアウトを超えた場合、チェックは失敗したとみなされ、終了します(新しいチェックが開始されます)。 デフォルト: 10 |
healthcheck_alert |
整数 |
INSSLR がグリッド ダッシュボード上でエラーをダンプし始めるまでのヘルス チェックの失敗回数。 0 に設定した場合、エラーはダッシュボードにレポートされません(ただし、ヘルス チェックは有効なままです)。 アプリケーションを起動/停止するとき、誤った判定による警告を回避するため、値の設定を小さくし過ぎないでください。 INSSLR を冗長モードで実行しており、バックエンド サーバが失敗した場合にバックアップ ノードへスイッチを移動する場合は、fover_on_healthcheck も参照してください。 デフォルト: 3 |
fover_mode |
文字列 |
フェールオーバ モード。 可能な値は、none(フェールオーバなし)、symmetric、asymmetric です。 |
fover_local_ip |
IP アドレス |
別の INSSLR アプライアンスと通信するためにフェールオーバ モードで使用されるローカル IP アドレス。 これは、予約されたプライベート アドレス(rfc1918 によって定義)を含めて利用可能な任意の IP でもかまいません。 このアドレスは別の INSLLR アプライアンスのステータスのモニタのためにのみ使用されます。 これは別の INSSLR アプライアンス上で fover_remote_ip プロパティと同じ IP で設定する必要があります。 fover_mode を none に設定している場合は、これを空にしておきます。 |
fover_remote_ip |
IP アドレス |
フェールオーバ モードで使用される別の INSSLR アプライアンスのリモート IP アドレス。 重要: これは別の INSSLR アプライアンス上で fover_local_ip プロパティと同じ IP で設定する必要があります。 fover_mode を none に設定している場合は、これを空にしておきます。 |
fover_netmask |
IP アドレス |
fover_local_ip 用のネットマスク。 |
fover_nfy_prefix |
文字列 |
フェールオーバが発生するたびにリクエストされる URL プレフィックス。 リクエストされる URL は次のとおりです。 http://nfy/fover_nfy_prefixfover_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 |
整数 |
http 端子上のヘルス チェックが失敗したときに、INSSLR がバックアップ ノードにフェールオーバを実行するかどうかを指定します。 ゼロ以外の値に設定されている場合、INSSLR はその後の何回にもわたるヘルス チェックの失敗後にフェールオーバを実行します。 アプリケーションを起動/停止するとき、誤った判定による警告を回避するため、値の設定を小さくし過ぎないでください。 単に失敗時の通知が必要な場合は、healthcheck_alert も参照してください。 デフォルト: 0(無効) |
ボリューム
名前 |
説明 |
key |
少なくとも SSL サーバ署名キーを含む読み取り専用データ ボリューム(プレースホルダ)。 ファイルは PEM 形式である必要があります。 cert_file プロパティが別の名前を指定するように変更されない場合、証明書は server.pem という名前のキー ボリュームのルート ディレクトリ内に存在する必要があります。 |
エラー メッセージ
アプライアンスの起動に失敗した場合、以下の内容のエラーがシステム ログにログ記録される場合があります。
エラー メッセージ |
説明 |
エラー: SSL サーバ証明書[cert_file]が見つかりませんでした |
cert_file プロパティによって指定された SSL サーバ証明書が見つかりませんでした。 有効な証明書パスを提供するか、l7_accept を http または none に設定して安全な HTTP リクエストを無効にします。 |
エラー: RSA 秘密キーはパスワードで保護されています。 |
SSL サーバ証明書はパスワード保護されています。パスワード保護されていない証明書が必要です。 |
エラー: client_cert の値 [client_cert] が無効です。 |
有効な値は、on、off、ask です。 |
エラー: client_depth の値 [client_depth] が無効です。 |
有効な値は 1 ~ 9 です。 |
エラー: CA Technologies クライアント リスト[ca_list_client]が見つかりません |
CA Technologies のクライアント リストが見つかりませんでした。 CA Technologies クライアント リストを提供するか、client_cert の設定を off にしてクライアント証明書を無効にします。 |
エラー: raw l3 プロトコルを指定しましたが、プロトコル番号(l3_accept_port)を指定していません |
l3_accept_proto を raw に設定するとき、l3_accept_port プロパティは必須です。 |
エラー: プロパティ [property] の値が無効です: [value] |
プロパティの値が有効でありません。 |
エラー: 冗長モードで実行する場合の最低限必要なメモリは 100MB です |
冗長モード(fover_mode が none 以外)で実行するとき、最低限必要なメモリは 100MB です。 |
エラー: ヘルスチェックのフェールオーバは有効ですが、アプライアンスが冗長モードで実行されません |
エラー: ヘルスチェックのフェールオーバは有効です(fover_on_healthcheck > 0)が、アプライアンスが冗長モード(fover_mode は none)で実行されません。 |
エラー: healthcheck_method が http_get または http_head のとき、healthcheck_url を設定する必要があります |
healthcheck_method が http_get または http_head のとき、プロパティ healthcheck_url を空にしてはなりません。 |
エラー: healthcheck_method が http_get または http_head のとき、healthcheck_regexp を設定する必要があります |
healthcheck_method が http_get または http_head のとき、プロパティ healthcheck_regexp を空にしてはなりません。 |
エラー: ヘルス チェックのフェールオーバは有効ですが、ヘルスチェックが無効です |
ヘルスチェックのフェールオーバは有効です(fover_on_healthcheck > 0)が、ヘルスチェックが有効でありません(healthcheck_method が off)。 |
エラー: healthcheck_method の値 [healthcheck_method] が無効です |
有効な値は、off、tcp_connect、http_get、http_head です。 |
エラー: ファイアウォールの設定に失敗しました |
ファイアウォールの起動に失敗しました。l3_accept_proto、l3_accept_port、l3_accept_proto、allowed_hosts、l7_accept の値を確認してください。 |
エラー: Nginx の設定に失敗しました |
nginx サービスの設定に失敗しました。このサービスを使用する場合は、adv_config プロパティを確認してください。 |
エラー: ヘルスチェックが起動に失敗しました |
ヘルス チェックの起動に失敗しました。healthcheck_ properties を確認してください。 |
ヘルス チェック URL のエラー: [url] |
指定された healthcheck_url が有効でありません。 |
エラー: ハートビートが起動に失敗しました |
ハートビート サービスの起動に失敗しました。 |
パフォーマンス
アプリケーション フェールオーバ
INSSLR は、他の INSSLR の失敗を約 10 秒で検出します。 別のアプリケーションへのフェールオーバに、さらに 10 秒かかります。 アプリケーションの失敗が最初に発生してから、別のアプリケーションにトラフィックが引き継がれるまでの合計時間は、約 20 秒です。
リクエスト レート
ドキュメント サイズや利用可能なネットワーク帯域幅にもよりますが、INSSLR は毎秒 3000 以上のトランザクション(リクエスト/応答ペア)をルーティングします。
データ スループット
ドキュメント サイズや利用可能なネットワーク帯域幅にもよりますが、INSSLR は 7 MB/秒以上でルーティングします。
同時接続
デフォルト メモリで、INSSLR は 500 以上の同時保留リクエストをサポートします (クライアントからのオープン TCP 接続である保留リクエストで、1 つ以上の未完了 HTTP リクエストが進行中です)。 同時接続の最大数は、利用可能な空きメモリに依存します。 16MB の増設メモリは、それぞれ同時 http トランザクションの数を 500 ずつ増やします。 たとえば、冗長モードで実行していて、2000 の同時接続に対応できるようにするには、100M+3*=148M (冗長モードでの実行時の最小メモリは 100M)が必要となります。
冗長モード(fover_mode が none ではない)で実行される場合、INSSLR は、それがアクティブまたはパッシブになると必ず通知をトリガします。 これはアクティブなノードの起動時またはフェールオーバの発生時に必ず行われます(アクティブまたはパッシブになると通知が各ノードによって送信される)。
INSSLR 次の 2 つの通知を送信します。
http://nfy/fover_nfy_prefixfover_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
fover_nfy_prefix を使用して、呼び出されるリモート スクリプトの場所を変更するか、またはパラメータを追加できます(またはその両方)。 fover_nfy_prefix 値の例: /path/to/script.php?, /path/to/script.php?username=user&password=pass&。
重要:
http リクエストのタイムアウトは、フェールオーバが遅れないように 5 秒に設定されます。
INSSLR は、その http 端子上で基本チェックを行います。 エラーは、グリッド ダッシュボードにレポートされます(最長で 10 分ごとに 1 回)。 INSSLR が冗長モードで実行され、fover_on_healthcheck がゼロ以外の値に設定されている場合、INSSLR は後続の fover_on_healthcheck に従った数のヘルスチェック失敗後にそのバックアップ アプライアンスへのフェールオーバを試行します。 バックアップ INSSLR アプライアンスが実行されていないか正しく設定されていない場合、フェールオーバは成功しない可能性があります。
重要: fover_on_healthcheck を 1 に設定すると、ヘルスチェックに失敗するごとに INSSLR によってフェールオーバが実行されます。これは常に必要ではありません。 高い値を使用すると、間違った正の判定(アプリケーションを停止するなど)を防止しやすくなります。
SSL を使用するには、署名された証明書と暗号化に使用された秘密鍵の両方が必要です。 キーと証明書は、PEM 形式にし、cert_file プロパティによって指定された単一のファイルに入力する必要があります。
サーバ証明書の生成
CA 3Tera AppLogic では、サーバ証明書を生成することができます。
サーバ証明書を生成する方法
openssl genrsa -out privkey.pem 2048
パスワード保護されたキーを生成するには、以下のコマンドを使用します(INSSLR でキーを使用するには、パスワードなしのキーが必要であり、パスワード保護されたキーを作成する場合は、INSSLR で使用する前にパスワードを削除する必要があります)。
openssl genrsa -des3 -out privkey.pem 2048
証明書リクエスト生成するには、以下のコマンドを実行します。
openssl req -new -key privkey.pem -out server.csr
信頼された証明機関へ .csr ファイルを送信した後、署名付き証明書(.crt ファイル)が戻されるので、これを使用できます。
openssl req -new -x509 -key privkey.pem -out server.crt -days 1095
サーバ証明書の使用
これで、証明書とキーを 1 つのファイルに入れて、INSSLR で使用できるようになります。
cat privkey.pem server.crt > server.pem
キーがパスワード保護されている場合、以下を実行すればパスワードを削除できます。
openssl rsa -in key_with_pass.pem -out privkey.pem
既存の apache+mod_ssl サーバ証明書の使用
Apache で使用する既存の証明書を持っている場合は、INSSLR 内でもそれを使用できます。 キーがパスワード保護されていないことを確認し(上記参照)、秘密キーと証明書をこの順序で 1 つのファイル内に配置してください。
例:
cat privkey.pem server.csr > server.pem
チェーン証明書を使用する場合は、発行者によって提供される中間証明書も含める必要があります。 秘密キー、証明書、中間証明書をこの順序で 1 つのファイル内に配置してください。
例:
cat privkey.pem server.csr sf_issuing.crt > server.pem
重要: サーバ署名キーは、ユーザの Web サイトのアイデンティティを証明するものです。 パスワード暗号化されないので、脆弱でもあります(ユーザの助けがなくてもアプライアンスが読み取れるようにするためです)。 データ ボリュームにインストールするときは、キー ファイルを保護するために必要な手段を講じます。 同じデータ ボリュームを他の目的に使用したり、Web アクセス可能なデータ(HTML ページ、スクリプトなど)をホストするなどのように、Web サーバから見られる状態にはしないでください。
以下の例は、ユーザ自身の CA Technologies を作成し、OpenSSL を使用して、自分の証明書に署名する方法の概要を示しています。 これは OpenSSL 0.9.8b (INSSLR にインストールされているものと同じバージョン)を使用してテストされました。
証明機関の作成
自己署名付きサーバ証明書の作成に使用するご自身の証明機関をすでにお持ちの場合は、この手順をスキップして、その証明機関を使用することができます。 ユーザのアプリケーションに対する信頼された権限のインスツルメントを作成するときは、環境が安全であることが重要です。
証明機関を作成する方法
mkdir CA mkdir CA/private
openssl genrsa -des3 -out CA/private/CA_key.pem 2048
openssl req -new -key CA/private/CA_key.pem -x509 -days 365 -out CA/CA_cert.pem
重要: 証明機関用の秘密キーはアプリケーションの信頼の基本です。したがって、誰にでもわかるような保管や、他者への提供をしてはなりません。
証明機関の署名付きクライアント証明書の作成
CA 3Tera AppLogic を使って、証明機関の署名付きクライアント証明書を作成することができます。
証明機関の署名付きクライアント証明書を作成する方法
openssl genrsa -out clientA_privkey.pem 2048
openssl req -new -key clientA_privkey.pem -out clientA_request.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
以下の点に留意してください。
openssl genrsa -out clientB_privkey.pem 2048 openssl req -new -key clientB_privkey.pem -out clientB_request.csr openssl x509 -req -days 365 -in clientB_request.csr -CA CA/CA_cert.pem -CAkey CA/private/CA_key.pem -CAserial CA/CA_cert.srl -out clientB.cer
cat clientA_privkey.pem clientA.cer > clientA.pem
openssl pkcs12 -export -in clientA.cer -inkey clientA_privkey.pem -out clientA.p12
CA の署名付きクライアント証明書の無効化
CA が発行したクライアント証明書を無効にする方法
この例で「openssl.conf」は以下に示すとおりであり、「crl_reason」パラメータは、unspecified、keyCompromise、CACompromise、affiliationChanged、superseded、cessationOfOperation、certificateHold、removeFromCRL のうちのいずれかです。 理由の一致では、大文字と小文字を区別しません。
証明書失効リスト(CRL)を再生成する方法
この例で、「crl.pem」は「cert_revocation_list」プロパティとして INSSLR に提供されるファイルです。
上記の例に使用される環境設定ファイルの一例を以下に示します。
#################################################################### [ 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
INSSLR が使用する証明機関リスト ファイルの作成
CA 3Tera AppLogic では、INSSLR が使用する証明機関リスト ファイルを作成できます。
ca_list_client プロパティによって識別されたファイルを作成する方法
cat CA/private/CA_key.pem CA/CA_cert.pem > ca_list_client.pem
openssl s_client -host IP-address -port 443 -showcerts -ssl3 -cert clientA.cer -key clientA_privkey.pem -state
HTTPS を使用してクライアントを INSSLR に接続する場合、およびクライアント証明書を提示する場合、INSSLR はバックエンド サーバに発行するリクエストに以下のヘッダを追加します。
これらのヘッダを利用するかどうかはアプリケーションによって判断されます。 INSSLR は、特に確認せずに単にこの情報を渡します(シグネチャと正しい暗号化チェックは例外)。
Web アプリケーション
アプリケーションへの http または https アクセスを行うには、WEB アプライアンスに http 端子を直接接続します。
拡張性のある Web アプリケーションが必要な場合は、HALB アプライアンスに http 端子をフックします。
Web アプリケーション用の設定
設定例の一覧は、デフォルト以外の値に設定され、ネットワーク設定されていないプロパティのみを表示しています(ip_addr、netmask、gateway)。
プロパティ |
値 |
注 |
l7_accept |
http/https/both |
どの l7 プロトコルが使用されるかを指定します。 注: https または both を指定する場合、重要なボリュームには cert_file プロパティによって指定された SSL 証明書を含める必要があります。 |
サービスを追加した Web アプリケーション
アプリケーション内に http 以外にもサービスがある場合、INSSLR を使用して http トラフィックをその http 端子へ渡し、他のサービス用の aux 端子を使用するすることができます。
プロパティ |
値 |
注 |
l7_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 がある場合、INSSLR を使用して http トラフィックをその http 端子へ渡し、aux を使用して PS8 への残りのトラフィックをフィードします。これがバック エンド サーバへ必要なトラフィックをフィードします。
プロパティ |
値 |
注 |
l7_accept |
http/https/both |
どの l7 プロトコルが使用されるかを指定します。 注: https または both を指定する場合、重要なボリュームには cert_file プロパティによって指定された ssl 証明書を含める必要があります。 |
l3_accept_proto |
all |
http 端子へ渡されないすべての IP (icmp 以外の)トラフィックを aux 端子へリダイレクトします。 |
冗長性のある Web アプリケーション
冗長性のある Web アプリケーションが必要な場合は、アプリケーションをコピーし、INSSLR を使用して、外部 IP アドレスにフェールオーバ機能を提供することができます。
バックアップ Web アプリケーション
ユーザにダウンタイムを通知するバックアップ アプリケーションのみが必要な場合は、INSSLR を使用して、最小のリソースを必要とするバックアップ アプリケーションを構築します。
使用されるアプライアンスは次のとおりです。
プライマリ アプリケーション上の INSSLR は次のとおりです。
プロパティ |
値 |
注 |
ip_addr |
1.2.3.4 |
アプリケーションのパブリック IP アドレス。プライマリとバックアップのアプリケーションで同じである必要があります。 |
netmask |
255.255.255.0 |
アプリケーションのパブリック IP アドレス用ネットマスク。プライマリとバックアップのアプリケーションで同じである必要があります。 |
gateway |
1.2.3.254 |
アプリケーションのパブリック IP アドレス用ゲートウェイ。プライマリとバックアップのアプリケーションで同じである必要があります。 |
fover_mode |
asymmetric |
プライマリがダウンしているときに限りバックアップ アプリケーションを使用するので、asymmetric モードで実行されます。 |
fover_local_ip |
192.168.100.1 |
2 つのアプリケーション内の INSSLR アプライアンス間の通信に使用されるプライベート IP アドレス。 ローカル IP アドレスはリモートよりも小さいので、このアプライアンスがプライマリであり、実行中はずっとそのままです。 |
fover_remote_ip |
192.168.100.2 |
2 つのアプリケーション内の INSSLR アプライアンス間の通信に使用されるリモート IP アドレス。 |
fover_netmask |
255.255.255.0 |
fover_local_ip 用のネットマスク。 |
バックアップ アプリケーション上の INSSLR は次のとおりです。
プロパティ |
値 |
注 |
ip_addr |
1.2.3.4 |
アプリケーションのパブリック IP アドレス。プライマリとバックアップのアプリケーションで同じである必要があります。 |
netmask |
255.255.255.0 |
アプリケーションのパブリック IP アドレス用ネットマスク。プライマリとバックアップのアプリケーションで同じである必要があります。 |
gateway |
1.2.3.254 |
アプリケーションのパブリック IP アドレス用ゲートウェイ。プライマリとバックアップのアプリケーションで同じである必要があります。 |
fover_mode |
asymmetric |
プライマリがダウンしているときに限りバックアップ アプリケーションを使用するので、asymmetric モードで実行されます。 |
fover_local_ip |
192.168.100.2 |
2 つのアプリケーション内の INSSLR アプライアンス間の通信に使用されるプライベート IP アドレス。 |
fover_remote_ip |
192.168.100.1 |
2 つのアプリケーション内の INSSLR アプライアンス間の通信に使用されるリモート IP アドレス。 |
fover_netmask |
255.255.255.0 |
fover_local_ip 用のネットマスク。 |
冗長性のある Web アプリケーション(単一アプリケーション)
アプリケーションを新規作成せずに、冗長モードでアプリケーションを実行する場合、単純に中のアプライアンスを二重にして、冗長モードで実行することができます。 このとき(少なくとも) 2 つの Web サーバと 2 つのデータベース アプライアンスを使用するので、標準モードではすべてが使用されます(拡張性を提供)。しかし、他のアプライアンスが失敗した場合、これらのそれぞれはアプリケーションに単独でサービスすることになります。 追加の拡張性を必要とする場合は、さらに多くの Web とデータベースのアプライアンスを追加できます。 この例では、アプライアンスの半分(in1、sw1、web1、db1)が 1 つのフェールオーバ グループ内で実行され、残り(in2、sw2、web2、db2)は別のフェールオーバ グループ内で実行されるので、アプリケーションはサーバ クラッシュに耐えることができます。 すべてのアプライアンス(要求されるリソースが非常に少ない 1 つの INSSLR および 1 つの HALB のアプライアンスを除く)がアクティブ状態にあり、プライマリが失敗したときにのみ実行されるバックアップ アプリケーションにはリソースが費やされないので、このアプリケーションは非常に低コストで冗長性を提供します。
in1
プロパティ |
値 |
注 |
ip_addr |
1.2.3.4 |
アプリケーションのパブリック IP アドレス。プライマリとバックアップのアプリケーションで同じである必要があります。 |
netmask |
255.255.255.0 |
アプリケーションのパブリック IP アドレス用ネットマスク。プライマリとバックアップのアプリケーションで同じである必要があります。 |
gateway |
1.2.3.254 |
アプリケーションのパブリック IP アドレス用ゲートウェイ。プライマリとバックアップのアプリケーションで同じである必要があります。 |
fover_mode |
symmetric |
symmetric モードで実行されます。 |
fover_local_ip |
192.168.100.1 |
2 つのアプリケーション内の INSSLR アプライアンス間の通信に使用されるプライベート IP アドレス。 |
fover_remote_ip |
192.168.100.2 |
2 つのアプリケーション内の INSSLR アプライアンス間の通信に使用されるリモート IP アドレス。 |
fover_netmask |
255.255.255.0 |
fover_local_ip 用のネットマスク。 |
in2
プロパティ |
値 |
注 |
ip_addr |
1.2.3.4 |
アプリケーションのパブリック IP アドレス。プライマリとバックアップのアプリケーションで同じである必要があります。 |
netmask |
255.255.255.0 |
アプリケーションのパブリック IP アドレス用ネットマスク。プライマリとバックアップのアプリケーションで同じである必要があります。 |
gateway |
1.2.3.254 |
アプリケーションのパブリック IP アドレス用ゲートウェイ。プライマリとバックアップのアプリケーションで同じである必要があります。 |
fover_mode |
symmetric |
symmetric モードで実行されます。 |
fover_local_ip |
192.168.100.2 |
2 つのアプリケーション内の INSSLR アプライアンス間の通信に使用されるプライベート IP アドレス。 |
fover_remote_ip |
192.168.100.1 |
2 つのアプリケーション内の INSSLR アプライアンス間の通信に使用されるリモート IP アドレス。 |
fover_netmask |
255.255.255.0 |
fover_local_ip 用のネットマスク。 |
db1
プロパティ名 |
値 |
注 |
auto_create |
1 |
ボリュームが空の場合は、データベースを作成します。 |
server_id |
1 |
マスタ サーバ 1。これはリモート アプリケーション上では異なります。 |
rpl_mode |
master_and_slave |
マスタおよびスレーブ |
db2
プロパティ名 |
値 |
注 |
auto_create |
1 |
ボリュームが空の場合は、データベースを作成します。 |
server_id |
2 |
マスタ サーバ 1。これはリモート アプリケーション上では異なります。 |
rpl_mode |
master_and_slave |
マスタおよびスレーブ |
冗長性のある Web アプリケーション(2 つの同一アプリケーション)
同じグリッド(ただしサーバの 1 つが失敗してもアプリケーションのうちの 1 つにしか影響しないようにサーバが別々であること)、または別のグリッド上で使用する IP アドレスが両方のグリッドからアクセス可能である場合、2 つの同一のアプリケーションを実行できます。 以下の例は、冗長モードでも実行されているデータベース アプライアンスを使用したアプリケーションを示しています。このため、1 つのアプリケーションで失敗した場合でも、別のアプリケーションが引き継ぐのでデータが損失しません。
使用されるアプライアンスは次のとおりです。
クライアント リクエストは in1 ゲートウェイに到達します。 このゲートウェイは web_lb ロード バランサにリクエストを転送し、ロード バランサは web1 と web2 のいずれかの Web サーバにリクエストを伝えます。 Web サーバは db データベースにアクセスします。 db アプライアンスはリモート アプリケーション(これは同じもののコピーで、唯一異なるのは server_id が db かネットワーク設定であるかのみです)に接続され、データベースをレプリケートします。 リモート アプリケーションは、リモート アプリケーションの repl_out ゲートウェイからのみ接続が許可されるように設定された repl_in ゲートウェイ経由で、db アプライアンスに接続します。 2 つのアプリケーション内の db アプライアンスはマスタ/マスタ設定で実行されるので、これらのデータは常に同一です。
プロパティ設定の例を以下に示します(リストに表示されていないプロパティはデフォルト値のままです)。
db への Web アクセスは、ポート 8080 上の admin ゲートウェイを使用すれば可能です。
in1
プロパティ |
値 |
注 |
ip_addr |
1.2.3.4 |
アプリケーションのパブリック IP アドレス。両方のアプリケーションで同じである必要があります。 |
netmask |
255.255.255.0 |
アプリケーションのパブリック IP アドレス用ネットマスク。両方のアプリケーションで同じである必要があります。 |
gateway |
1.2.3.254 |
アプリケーションのパブリック IP アドレス用ゲートウェイ。両方のアプリケーションで同じである必要があります。 |
fover_mode |
symmetric |
symmetric モードで実行されます。 |
fover_local_ip |
192.168.100.1 |
2 つのアプリケーション内の INSSLR アプライアンス間の通信に使用されるプライベート IP アドレス。 リモート アプリケーションでは、これを 192.168.100.2 に変更します。 |
fover_remote_ip |
192.168.100.2 |
2 つのアプリケーション内の INSSLR アプライアンス間の通信に使用されるリモート IP アドレス。 リモート アプリケーションでは、これを 192.168.100.1 に変更します。 |
fover_netmask |
255.255.255.0 |
fover_local_ip 用のネットマスク。 |
db
プロパティ名 |
値 |
注 |
auto_create |
1 |
ボリュームが空の場合は、データベースを作成します。 |
error_log_filename |
db.error |
ログ データ ボリューム上に格納されるエラー ログ ファイルの名前。 |
error_log_level |
error |
エラー ロギング レベル。 |
server_id |
1 |
マスタ サーバ 1。これは第 2 アプリケーション上では異なります。 |
rpl_mode |
master_and_slave |
マスタおよびスレーブ |
重要: アプリケーションのうち 1 つのみが常にアクティブです。もう一方は単にフェールオーバのために実行されており、アクティブなアプリケーションが失敗したときに使用されます。
INSSLR は HTTP 1.0 および HTTP 1.1 をサポートしますが、クライアントがそれ自体で MSIE として識別する場合、HTTP 1.1 サポートはその接続に対してオフになります(MSIE の一部のバージョン内のバグを回避)。
クライアントが MSIE でない場合、INSSLR はクライアントのために HTTP 1.1 をサポートします(TCP セッション機能を通じた複数のリクエストを含む)。これは、バックエンド サーバの使用によって HTTP 1.0 のみがサポートされる場合も同様です。
INSSLR は 1 つの外部 IP をサポートします。したがって、単一の SSL 証明書のみを使用できます。
アプライアンス内でオープン ソース/サードパーティ ソフトウェアを使用
INSSLR では、そのベース クラス LUX5 によって使用されるサードパーティのオープン ソース パッケージに加えて、以下のサードパーティ オープン ソース パッケージを使用します。
ソフトウェア |
バージョン |
変更 |
ライセンス |
注 |
PyXML |
0.8.4-4 |
なし |
Fourthought |
該当なし |
gnutls |
1.4.1-2 |
なし |
LGPLv2.1 |
該当なし |
heartbeat |
2.1.3-3 |
なし |
LGPLv2.1 |
該当なし |
heartbeat-pils |
2.1.3-3 |
なし |
LGPLv2.1 |
該当なし |
heartbeat-stonith |
2.1.3-3 |
なし |
LGPLv2.1 |
該当なし |
iptables |
1.3.5-4 |
なし |
GPLv2 |
該当なし |
libgcrypt |
1.2.3-1 |
なし |
GPLv2 |
該当なし |
libgpg-error |
1.4-2 |
なし |
LGPLv2.1 |
該当なし |
lighttpd |
1.4.18-1 |
なし |
BSD |
該当なし |
nginx |
0.7.62-1 |
あり |
BSD |
該当なし |
sudo |
1.6.8p12-10 |
なし |
BSD |
該当なし |
telnet |
0.17-38 |
なし |
BSD |
該当なし |
Copyright © 2011 CA. All rights reserved. | このトピックについて CA Technologies に電子メールを送信する |