SSL は、IP ネットワーク経由の通信を保護するためのプロトコルです。 SSL では、TCP/IP ソケットテクノロジを利用してクライアントとサーバー間のメッセージ交換を行います。交換されるメッセージは、RSA の開発による公開鍵 - 非公開鍵暗号化システムで保護されます。 SSL は、Netscape Navigator、Microsoft の Web ブラウザをはじめとする大多数の Web サーバー製品でサポートされます。
第三者によるメッセージの読み取りや改ざんを防ぐため、SSL を使ってネットワーク通信を行うように N1 Service Provisioning System 4.1 アプリケーションを構成できます。 オプションとして、通信前に認証を行うように構成すれば、さらに高いネットワークセキュリティ効果を期待できます。
SSL プロトコルは、さまざまな暗号アルゴリズム、暗号方式をサポートします。こうした暗号は、サーバーとクライアント間の認証、証明書の送信、セッションキーの確立などに使用されます。 認証が行われるかどうかは、SSL が接続に使用する暗号群によって決まります。
暗号群の選択は慎重に行なってください。 どのアプリケーションも、ノードが要求する最小限のセキュリティを提供する暗号群だけを有効にする必要があります。 SSL は、クライアントとサーバーの両方でサポートされる最も安全な暗号群を使用します。 低セキュリティの暗号群を有効化した場合、サン以外のクライアントは、暗号群のネゴシエーション時に、最小限のセキュリティしか提供しない暗号群を選択することがあります。この場合、サーバーは、安全性の低い暗号群を使用しなければならなくなります。
SSL は、次のモードで動作します。
暗号化のみ、認証なし – 接続は暗号化されるが、接続するアプリケーションの認証は行われない
サーバーの認証 – クライアントは接続先のサーバーを認証する
サーバーとクライアントの認証 – クライアントとサーバーの両方が双方を認証する
インストール時、アプリケーション間の通信を保護する手段として SSL を選択すると、使用する暗号群を指定するプロンプトが表示されます。 暗号群の値は、config.properties ファイルの net.ssl.cipher.suites に格納されます。 選択内容によって、暗号群に次の値を設定できます。
「暗号化のみ、認証なし」を選択した場合、暗号群の値は SSL_DH_anon_WITH_3DES_EDE_CBC_SHA
「認証と暗号化」を選択した場合、暗号群の値は SSL_RSA_WITH_3DES_EDE_CBC_SHA
サーバーの認証を必要とする、または必要としない SSL 暗号群の一覧は、「「SSL 暗号群」」を参照してください。 サーバーの認証を必要とする暗号群を対象に、クライアントの認証を構成することもできます。
N1 Service Provisioning System 4.1 は、自己署名付き証明書をサポートします。 次の 2 種類のキーストアがあります。
プライベートキーストア – アプリケーションが別のアプリケーションに接続するとき自身の認証用として使用する公開鍵 - 非公開鍵のペアが格納される
トラストキーストア – このキーストアが信頼し、アプリケーションへの接続を許可する、その他のアプリケーションの自己署名付き証明書内の公開鍵が格納される
クライアントサーバー認証で SSL を有効にした場合、各アプリケーションに、SSL が使用する 2 つのキーストアを構成する必要があります。2 つのキーストアのうち 1 つは、ほかのアプリケーションに対する自身の認証用、もう 1 つはほかのアプリケーションの認証用です。
サーバー認証だけで SSL を有効にした場合、SSL サーバーとして機能するアプリケーションにはプライベートキーストア、SSL クライアントとして機能するアプリケーションにはトラスト (パブリック) キーストアが必要になります。 パブリックキーストアは、Java Secure Sockets Extension (JSSE) v1.0.3 によって提供される独自の JKS フォーマットです。
両方のキーストアに、同一のパスワードを指定する必要があります。
たとえば、SSL を使って、SSL クライアントであるアプリケーション A と、SSL サーバーであるアプリケーション B を接続する場合について考えてみましょう。 どちらのアプリケーションも、サーバー認証を要求する暗号群を使用するように構成されています。 アプリケーション B のプライベートキーストアには公開鍵 - 非公開鍵のペア、アプリケーション A のトラストキーストアにはアプリケーション B の公開鍵が格納されていなければなりません。 アプリケーション A からアプリケーション B への接続を試みると、アプリケーション B はアプリケーション A に公開鍵を送信します。アプリケーション A は、この鍵と、トラストキーストア内の鍵を照合します。
アプリケーション B がクライアント認証を要求する場合、アプリケーション A のプライベートキーストアには公開鍵 - 非公開鍵のペア、アプリケーション B のトラストキーストアにはアプリケーション A の公開鍵が格納されていなければなりません。 アプリケーション A によって認証されたあと、アプリケーション B はアプリケーション A の公開鍵とトラストキーストア内の公開鍵を照合できます。
トラストキーストアの操作にパスワードを設定した場合、このパスワードを使って、キーストアの整合性のチェックが行われます。 このパスワードでは、トラストキーストアの更新を防ぐことはできますが、トラストキーストア内へのアクセスを禁止することはできません。 トラストキーストアの内容に変更を加えたい場合は、パスワードを入力する必要があります。
プライベートキーストアの操作にパスワードを設定した場合、このパスワードを使って、キーストアの整合性のチェック、キーストアの内容の更新の禁止、非公開鍵のアクセスの暗号化と保護が行われます。
crkeys スクリプトは、両方のキーストアに同一のパスワードが指定されているかどうかの確認に使用されます。 証明書をインポートして、初めてトラストストアを作成するとき、このトラストストアには、crkeys スクリプトにより、プライベートストアと同じパスワードが設定されます (プライベートストアにパスワードが設定されている場合)。 同様に、初めてプライベートストアを作成するときも、crkeys により、プライベートストアにトラストストアと同じパスワードが設定されます (トラストストアにパスワードが設定されている場合)。
crkeys スクリプトを使って、アプリケーションの起動時にキーストアのパスワードプロンプトを表示し、パスワードを検証する場合は、-vpass オプションを指定します。 キーストアが存在する場合、crkeys スクリプトは、 キーストアのパスワードを求めるプロンプトを表示し、入力されたパスワードを照合します。 照合の結果、正しいパスワードであることが確認されると、標準出力にパスワードが表示されます。このパスワードは、その後、アプリケーションに渡されます。
N1 Service Provisioning System 4.1 上の SSL 実装には、次の制限があります。
自己署名付き証明書以外はサポートされない。 トラストキーストアには自己署名付き証明書しか格納されない。 CA 署名付き証明書は使用できない
トラストキーストアとプライベートキーストアに同一のパスワードを設定する必要がある。 また、プライベートキーストア内の各キーにストアと同一のパスワードを設定する必要がある。 この制限は、キーを作成するのに使用された crkeys スクリプトによって実行される
パスワードは端末にエコーされる。 POSIX プラットフォーム上でこの制限を克服するには、端末エコーを無効にし、パスワードプロンプトを表示する起動スクリプトを作成する
CLI クライアントアプリケーションのクライアント認証を有効にしても、この設定は、セキュリティの制限上サポートされない。 CLI クライアントアプリケーションは、キーストアパスワードの入力を求めるプロンプトを表示しない。 作成されたキーストアは、CLI クライアントのプロパティファイル内になければならない。
N1 Service Provisioning System 4.1 は、接続する側と接続される側で同一のトラストキーストアを使用する。 よって、たとえば Master Server が Remote Agent に接続し、この Remote Agent の公開鍵を信頼する場合は、たとえ Remote Agent に欠陥が生じても、CLI クライアントがクライアント認証を使用する設定になっているならば、この Remote Agent の鍵を使って、Master Server に対して CLI クライアントの認証を行うことができる。
CLI クライアントのクライアント認証はサポートされていない。よって、CLI クライアントはトラストストアしか持たない。 パスワードの使用には、トラストストアが改ざんされていないことを確認できるという利点がある。 パスワードはプロパティファイル内に指定できるが、CLI クライアントの実行のたびにユーザーにパスワードの入力を求めるほうが、セキュリティ効果が高い
SSH 接続の場合、リモートアプリケーション、Local Distributor、Remote Agent は自動的に起動する。 これらのアプリケーションを起動するキーストアパスワードの入力プロンプトは表示されない。 ただし、アプリケーションの初期化時にキーストアを使用した場合、プロパティファイルにキーストアパスワードを指定する必要がある
SSH を使って Master Server に接続するようにCLI クライアントを構成した場合、CLI クライアントは、Master Server にソケットを使って接続する SshProxy アプリケーションを利用して Master Server に接続する。 SshProxy は SSL を介して Master Server に接続できるが、この構成はサポートされていない