リフレクションサービスとは、SGD Gateway のルーティングプロキシコンポーネントで使用される RESTful Web サービスの集まりです。SGD Gateway 管理者はリフレクションサービスを使用すると、ルーティングプロキシの経路、サービス、ロギングレベル、および接続を構成したり、ステータス情報を表示したりできます。
このセクションでは、次に示すリフレクションサービス関連のトピックについて説明します。
デフォルトでは、SGD Gateway のリフレクションサービスは無効になっています。
次のアクセス方法の 1 つ以上に対してリフレクションサービスを有効にします。
無認証アクセス – ユーザーは認証を受ける必要がありません。
デフォルトでは、無認証アクセスを使用できるのは SGD Gateway ホストからだけです。
無認証アクセスを有効にする方法の詳細については、「リフレクションサービスに対する無認証アクセスを有効にする方法」を参照してください。
認証アクセス – ユーザーはリフレクションサービスにアクセスする前に認証を受ける必要があります。
認証アクセスを有効にする方法の詳細については、「リフレクションサービスに対する認証アクセスを有効にする方法」を参照してください。
SGD Gateway ホストにスーパーユーザー (root) としてログインします。
リフレクションサービスに対する無認証アクセスを有効にします。
# /opt/SUNWsgdg/bin/gateway config enable --services-reflection
(オプション) リフレクションサービスで使用するインタフェースを変更します。
デフォルトでは、リフレクションサービスに対する無認証アクセスを使用できるのは SGD Gateway ホストからだけです。ほかのインタフェースで無認証アクセスを有効にすると、セキュリティーリスクが発生する可能性があります。
リフレクションサービスに対する無認証アクセスに使用されるデフォルトのインタフェースは、localhost
ループバックインタフェースです。次の例は、すべてのインタフェースで無認証アクセスを有効にする方法を示しています。
# /opt/SUNWsgdg/bin/gateway config edit \ --services-reflection-binding *:81
(オプション) リフレクションサービスで使用するポートを変更します。
リフレクションサービスに対する無認証アクセスに使用されるデフォルトのポートは、TCP ポート 81 です。これを別の未使用のポートに次の手順で変更できます。
# /opt/SUNWsgdg/bin/gateway config edit \
--services-reflection-binding localhost:portnum
ここで、portnum
はリフレクションサービスで使用するポート番号です。
SGD Gateway を再起動します。
# /opt/SUNWsgdg/bin/gateway restart
リフレクションサービスにアクセスします。
SGD Gateway ホストで、ブラウザを起動して http://localhost:81
にアクセスします。
リフレクションサービスのホームページが表示されます。
SGD Gateway ホストにスーパーユーザー (root) としてログインします。
リフレクションサービスの証明書と非公開鍵をエクスポートします。
リフレクションサービスの証明書と非公開鍵は、リフレクションサービスキーストア /opt/SUNWsgdg/proxy/etc/keystore.reflection
に保存されています。このキーストアは、SGD Gateway のインストール時に自動的に作成されます。
デフォルトでは、リフレクションサービスキーストアには自己署名付き証明書と鍵のペアが 1 つ入っています。
リフレクションサービスの証明書をエクスポートします。
# /opt/SUNWsgdg/java/default/bin/keytool -exportcert \ -aliasserver-name
-rfc \ -keystore /opt/SUNWsgdg/proxy/etc/keystore.reflection \ -storepass "$(cat /opt/SUNWsgdg/etc/password)" \ -fileclient.pem
ここで、server-name
はリフレクションキーストアでリフレクションサービスの証明書に使用されている別名、client.pem
はエクスポートした証明書のファイル名です。
keytool アプリケーションを使用する方法の詳細については、JDK Tools and Utilities のドキュメントを参照してください。
リフレクションサービスの非公開鍵をエクスポートします。
SGD Gateway に組み込まれている KeyManager アプリケーションを使用します。
# /opt/SUNWsgdg/java/default/bin/java \ -jar /opt/SUNWsgdg/proxy/KeyManager.jar export \ --keyfileclient.key
\ --keystore /opt/SUNWsgdg/proxy/etc/keystore.reflection \ --keyaliasalias-name
\ --keypass "$(cat /opt/SUNWsgdg/etc/password)" \ --storepass "$(cat /opt/SUNWsgdg/etc/password)"
ここで、alias-name
はリフレクションキーストアでリフレクションサービスの鍵に使用されている別名、client.key
はエクスポートした鍵のファイル名です。
証明書と非公開鍵をクライアントデバイスにインストールします。
証明書と非公開鍵は、リフレクションサービスに対する承認を得るためにクライアントデバイスで使用されます。
証明書と鍵をブラウザの証明書ストアにインポートするには、最初に証明書と鍵を PKCS12 形式のファイルに変換する必要があります。次に例を示します。
# openssl pkcs12 -export -inmycert.crt
-inkeymycert_key.pem
-outmycert.p12
このコマンドは、証明書ファイル mycert.crt
および関連付けられた非公開鍵 mycert_key.pem
を、PKCS12 形式の証明書ファイル mycert.p12
に変換します。
PKCS12 形式の証明書をブラウザにインポートする方法の詳細については、ブラウザのオンラインドキュメントを参照してください。
リフレクションサービスに対する認証アクセスを有効にします。
SGD Gateway ホストで、次のコマンドを実行します。
# /opt/SUNWsgdg/bin/gateway config enable --services-reflection-auth
(オプション) リフレクションサービスで使用するインタフェースとポートを変更します。
リフレクションサービスに対する認証アクセスに使用されるデフォルトのバインディングは、すべてのインタフェースの TCP ポート 82 です。これを別のインタフェースの未使用のポートに次の手順で変更できます。
# /opt/SUNWsgdg/bin/gateway config edit \ --services-reflection-bindingint
:portnum
ここで、int
はインタフェース、portnum
はリフレクションサービスで使用するポート番号です。
SGD Gateway を再起動します。
# /opt/SUNWsgdg/bin/gateway restart
証明書と非公開鍵を使用して、クライアントデバイスからリフレクションサービスに接続します。
curl コマンドを使用する場合:
$ curl --certclient.pem
--keyclient.key
-k -X GET https://gateway.example.com
:82
この例では、curl コマンドを使用してリフレクションサービスのホームページ https://
にアクセスします。ここで、gateway.example.com
:82gateway.example.com
は SGD Gateway の名前です。リフレクションサービスの証明書と非公開鍵は、client.pem
と client.key
です。
ブラウザを使用する場合:
https://
に移動します。ここで、gateway.example.com
:82gateway.example.com
は SGD Gateway の名前です。
リフレクションサービスのホームページが表示されます。
リフレクションサービスによって提供されている RESTful Web サービスにアクセスするには、クライアントアプリケーションを使用します。適切なクライアントアプリケーションには次のようなものがあります。
ブラウザ。リフレクションサービスにアクセスするもっとも簡単な方法は、ブラウザを使用することです。ただし、ブラウザでサポートされるのは HTTP GET
リクエストだけなので、情報を取り出す RESTful Web サービスにしかアクセスできません。実際、ブラウザを使用すると、ルーティングプロキシのステータス情報を表示したり、経路とサービスを一覧表示したりするタスクに役立ちます。
curl。これは UNIX および Linux プラットフォーム用のコマンド行ツールで、HTTP GET
、PUT
、POST
、および DELETE
リクエストをサポートしています。したがって、リフレクションサービスの全種類の RESTful Web サービスを使用できます。このツールの出力をファイルや別のプログラムにリダイレクトして、さらに処理することもできます。
または、RESTful Web サービスをサポートするユーザー独自のクライアントアプリケーションを持っている場合は、それを使用してリフレクションサービスにアクセスできます。
リフレクションサービスを使用してルーティングプロキシの構成を変更する場合、SGD Gateway を再起動する必要はありません。
リフレクションサービスからは次の出力形式でデータが返されることがあります。
ASCII。これはデフォルトの出力形式です。データはタブで区切られた ASCII 形式で返されます。この出力形式は、あとでデータに構文解析などの処理を行う場合に役立ちます。
HTML。データは、ブラウザでの表示に適した HTML 形式で返されます。HTML 出力で返すには、Web サービスの URI (Uniform Resource Identifier) の末尾に /html
を付加します。
表C.1「SGD Gateway リフレクションサービスの RESTful Web サービス」 に、SGD Gateway リフレクションサービスの RESTful Web サービスの一覧を示します。
表C.1 SGD Gateway リフレクションサービスの RESTful Web サービス
相対 URI | HTTP リクエストメソッド | 説明 |
---|---|---|
|
| ルーティングプロキシに関する稼働時間などの概要情報を表示します。 |
|
| 使用可能なサービスを一覧表示します。 サービスは、ルーティングプロキシが着信接続を行うエントリポイントです。 |
|
|
|
|
|
|
|
|
|
|
| 使用可能なクライアントを一覧表示します。 クライアントは、ルーティングプロキシが発信接続を行う出口ポイントです。 |
|
|
|
|
| 使用可能な経路を一覧表示します。 経路は、サービス経由の着信接続から、クライアント経由の発信接続までの、ルーティングプロキシを通る経路です。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| すべての経路について、現在実行中の接続を一覧表示します。 |
|
| グローバルなロギングレベルを表示します。 |
|
| ルーティングプロキシのグローバルなロギングレベルを設定します。 |
|
| ルーティングプロキシの特定のコンポーネントのロギングレベルを表示します。 |
|
| ルーティングプロキシの特定のコンポーネントのロギングレベルを設定します。 |
RESTful Web サービスにアクセスするには、リフレクションサービスの URL に Web サービスの相対 URI を付加します。
たとえば、SGD Gateway gateway.example.com
の使用可能な経路を一覧表示するには、次のようにリフレクションサービスの URL に /route
を付加します。
$ curl --certclient.pem
--keyclient.key
-k -X GET https://gateway.example.com
:82/route
ここで、client.pem
と client.key
は、リフレクションサービスの証明書と非公開鍵です。この例では、クライアントはリフレクションサービスにアクセスする前に認証を受けます。
次の例ではいずれも、リフレクションサービスにアクセスするためのクライアントアプリケーションとして curl コマンドを使用します。
これらの例では、gateway.example.com
という SGD Gateway のリフレクションサービスに対して認証アクセスを使用します。クライアントは、証明書 client.pem
および非公開鍵 client.key
を使用して認証されます。
SGD Gateway の使用可能なサービスを一覧表示するには:
$ curl --certclient.pem
--keyclient.key
-k \ -X GET https://gateway.example.com
:82/service
経路を停止するには、リフレクションサービスでその経路に使用されている Route Id を指定します:
$ curl --certclient.pem
--keyclient.key
-k \ -X GET https://gateway.example.com
:82/route Route Id Route Uptime Service Id ... 0 21h18m20s743m ssgd-route-service ... 1 21h18m20s736m shttp-ssl-service ... $ curl --certclient.pem
--keyclient.key
-k \ -X DELETE https://gateway.example.com
:82/route/1
グローバルなロギングレベルを FINER に設定するには:
$ curl --certclient.pem
--keyclient.key
-k \ -X PUT https://gateway.example.com
:82/logging/level/FINER