Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

Caché での SSL/TLS の使用法

この章では、SSL (Secure Sockets Layer) とその後継の TLS (Transport Layer Security) を使用した Caché の使用法について説明します。Caché は、次のような接続を保護するために、SSL/TLS の使用をサポートしています。

  • Caché スーパーサーバと対話するさまざまなクライアント・アプリケーションからの接続。これには、Caché シャドウの宛先から Caché シャドウのソースへの接続が含まれます。

  • Telnet サーバと対話する Telnet クライアントからの接続。

  • Caché インスタンスがクライアントまたはサーバである (または、Caché インスタンスが両端にある) TCP 接続と共に使用するための接続。

Important:

ODBC、スタジオ、または InterSystems Telnet クライアントで SSL/TLS を使用する場合は、インターシステムズのサポート窓口Opens in a new tabまでお問い合わせください。

Caché がサーバとして機能する場合、接続を受け入れて SSL の使用を確立します。Caché がクライアントとして機能する場合は、SSL を使用する必要のあるサーバに接続できます。どのような場合でも、いわゆる SSL/TLS 構成が使用されます。この構成によって、SSL/TLS 接続の一部としての Caché インスタンスの各種特性が指定されます。

この章には、以下のセクションが含まれます。

SSL/TLS について

SSL/TLS では複数のエンティティ・ペア間における通信が強力に保護されます。これによって、認証、データ整合性保護、およびデータ暗号化が可能です。

SSL は Netscape で 1990 年代半ばに開発されました。現在も使用されているバージョン 3.0 は、1996 年にリリースされました。TLS は SSL 3.0 の標準化として開発され、バージョン 1.0 は 1999 年にリリースされました。TLS の現在のバージョンは、1.2 です。Caché でサポートされているバージョンの SSL/TLS の中で、使用可能な最新バージョンを使用することをお勧めします。

SSL/TLS 接続が 2 つのエンティティ間において確立されるプロセスは、SSL/TLS ハンドシェイクとして知られ、クライアント/サーバのモデルを使用します。クライアントとサーバの要件に従い、ハンドシェイクの完了は以下を意味します。

  • クライアントがサーバを認証した。

  • サーバがクライアントを認証した (クライアントとサーバの両方が互いを認証した場合、これは相互認証として知られています)。

  • クライアントとサーバはセッション・キーについて合意した (セッション・キーは、対称鍵アルゴリズムで使用するためのキーで、これによってエンティティではそれ以降の通信でデータを保護できます)。

  • それ以降の通信は暗号化できる。

  • それ以降の通信の整合性は検証できる。

クライアントとサーバの暗号化スウィートでは、これらの処理がハンドシェイクの一部としてどのように行われるか、またこれらの処理が保護された接続に対してどのようにサポートされるかが指定されます。特に、通信相手の暗号化スウィートでは、サポートしている機能とアルゴリズムが指定されます。クライアントが使用可能な暗号化セットを提案し、提案された中からサーバが 1 つを選択します (クライアントとサーバとの間で共通の暗号化がないと、ハンドシェイクは失敗します)。

ハンドシェイクを行うには、SSL/TLS は一般的に公開鍵暗号化を使用します (ただし、Diffie-Hellman プロトコルなどの他の方法も使用できます)。公開鍵暗号化では、それぞれの通信相手 (クライアントまたはサーバ) には公開鍵と秘密鍵があります。秘密鍵は機密の値で、公開鍵は幅広く公開される値です。一般的に、公開鍵は証明書にカプセル化されます。この証明書には、名前、組織、場所、発行者の妥当性などの所有者の識別情報も格納されます。Caché では、SSL/TLS 構成 (詳細は、“構成について” のセクションを参照) により、証明書ファイル、秘密鍵ファイル、暗号スウィートのオプション・セットなど、SSL/TLS 関連値の名前付きセットが指定されます。

成功すると、ハンドシェイクではセッション・キーが作成され、以降の通信を保護するために使用されます。

Caché とアプリケーションは SSL/TLS とのさまざまな相互作用を必要としますが、一般的にエンド・ユーザにはそのような直接の相互作用がありません。例えば、ブラウザでは SSL/TLS を使用して、指定された Web サイトと安全な接続を確立します。その際、サイト (この場合、サーバ) が自らをブラウザに認証する (ブラウザのユーザにはこれはわかりません) 必要があります。ブラウザに表示される鍵アイコンは、SSL/TLS により接続が保護されていることを示すためのものです。

構成について

Caché では複数の構成をサポートできます。それぞれの構成が、SSL/TLS 関連値の名前付きセットを指定します。既存の構成はすべて起動時に有効になります。管理ポータルで新しい構成を作成すると、その構成は保存時に有効になります。SSL/TLS 構成を管理するページは、[SSL/TLS 構成] ページ ([システム管理][セキュリティ][SSL/TLS 構成]) です。

このセクションでは、以下のトピックについて説明します。

SSL/TLS 構成の作成または編集

SSL/TLS 構成を作成または編集するページは、[SSL/TLS 構成] ページ ([システム管理][セキュリティ][SSL/TLS 構成]) です。新しい構成を作成するには、[新規構成の作成] をクリックして [新規 SSL/TLS 構成] ページを表示します。既存の構成を編集するには、その構成の名前の右側にある [編集] をクリックします ([ミラー用構成の作成] をクリックすることで、ミラー・メンバの新しい構成セットも作成できます。ミラーリングおよび SSL/TLS の詳細は、“ミラーリングで SSL/TLS を使用するための Caché の構成” を参照してください)。

SSL/TLS 構成を作成または編集する場合、以下のフィールドを使用できます。

  • [構成名] — 構成を識別するための文字列。構成名には、すべての英数字、および “|” 文字以外の句読点を使用できます。Caché スーパーサーバの構成を作成する場合、その構成名は必ず %SuperServer にします。このトピックの詳細は、“SSL/TLS を使用するための Caché スーパーサーバの構成” を参照してください。

  • [説明] — 任意のテキスト。

  • [有効] — キーの有効化の際にこの構成を利用可能とするかどうかの指定。

  • [タイプ] — この構成の使用目的。[クライアント] または [サーバ] を選択します。既定値は [クライアント] です。クライアントはプロトコルの使用を開始し、サーバは最初の要求に応答します (Caché スーパーサーバではサーバ構成が使用されます。シャドウの宛先など、SSL/TLS クライアントではクライアント構成が使用されます)。このフィールドに選択する値は、以下によって決まります。

    • 次のフィールドが、[サーバ証明書認証] フィールドと [クライアント証明書認証] フィールドのどちらであるか。クライアント用の構成の場合、次のフィールドは [サーバ証明書認証] になります。このフィールドでは、クライアントの接続先サーバの証明書に求められる可能性のある認証を指定します。サーバ用の構成の場合、次のフィールドは [クライアント証明書認証] になります。このフィールドでは、サーバへの接続を試行するクライアントの証明書に求められる可能性のある認証を指定します。

    • [信頼された証明書機関の証明書を含むファイル] フィールドの動作。

  • [サーバ証明書認証] または [クライアント証明書認証] — 構成で接続相手の認証が必要かどうかを指定します。

    クライアント用の構成では、[サーバ証明書認証] を指定する必要があり、以下の使用可能な値がサポートされています。

    • [なし] — どのような状況でも続行します。

    • [必要] — 証明書の認証が成功する場合にのみ続行します。

    サーバ用の構成では、[クライアント証明書認証] を指定する必要があり、以下の使用可能な値がサポートされています。

    • [なし] — サーバ側でクライアント証明書を要求せず、また必要としないことを示します。

    • [要求] — 証明書を提供する (または提供しない) クライアントを許可します。クライアントが証明書を提供しない場合、認証は続行します。クライアントが証明書を提供して認証に失敗すると、認証が失敗します。

    • [必要] — クライアントが証明書を提供する必要があることを示します。認証は証明書の認証によって決まります。

  • [信頼された認証機関の証明書を含むファイル] — この構成が信頼する 1 つまたは複数の認証機関 (CA) の X.509 証明書 (PEM 形式) が含まれているファイルのパスと名前。構成では、信頼された CA の証明書を使用して、接続相手の証明書を検証します。一般に、プロダクション・システムは、公的に利用可能な証明書を持つ商用認証機関からの証明書を使用します。

    このフィールドについては、以下の点に注意してください。

    • ファイルのパスは、絶対パスとして指定することも、<install-dir>/mgr/ ディレクトリが基準になる相対パスとして指定することもできます。

    • [クライアント証明書認証] の値が [なし] のサーバ構成の場合、このフィールドは使用できません (相手認証が存在しないため)。

    • Windows 証明書エクスポート・ウィザードからの証明書は、既定の DER でエンコードされたバイナリ X.509 でなく、Base 64 でエンコードされた X.509 形式であることが必要です。

    • ミラーリングでは、独自の証明書を検証するために十分な情報も構成に含まれている必要があります。

    これらの証明書を使用する方法は、“必須証明書チェーンの確立” のセクションを参照してください。このような証明書のファイル名と、証明書チェーンの確認方法については、OpenSSLOpens in a new tab のドキュメントで verifyOpens in a new tab コマンドを参照してください。

  • [このクライアントの認証情報] または [このサーバの認証情報] — ローカル構成の X.509 証明書および秘密鍵がファイルとして必要な場合に、これらを格納したファイル名。

    • [このクライアントの証明書を含むファイル] または [このサーバの証明書を含むファイル] — この構成独自の X.509 証明書の場所 (PEM 形式)。これは、絶対パスと相対パスのいずれかとして指定できます。証明書チェーンも含めることができます。これを認証に使用する方法については、“必須証明書チェーンの確立” のセクションを参照してください。(Windows 証明書エクスポート・ウィザードからの証明書は、既定の DER でエンコードされたバイナリ X.509 でなく、Base 64 でエンコードされた X.509 形式である必要があります。)

    • [関連づけられた秘密鍵を含むファイル] — 構成の秘密鍵ファイルを格納する場所。絶対パスまたは相対パスで指定します。

    • [秘密鍵タイプ] — 秘密鍵の生成に使用するアルゴリズム。有効なオプションは、[DSA] (Digital Signature Algorithm)、およびアルゴリズム開発者の名前から名付けられた [RSA] (Rivest、Shamir、Adleman) です。

    • [秘密鍵パスワード] — 構成の秘密鍵を暗号化および解読するための任意のパスワード。

      Note:

      秘密鍵がパスワードで保護されていて、ここに値を入力しない場合、Caché は、秘密鍵および証明書の公開鍵が相互に対応することを確認できません。この結果、対応しない鍵が鍵のペアとして保存される可能性が生じます。

    • [秘密鍵パスワード (確認)] — 入力したパスワードが目的の文字列であることを確認するために、パスワードを再度入力します。

  • [暗号方式設定]

    • [プロトコル] — 構成で有効と判断される通信プロトコル。SSLv3、TLSv1.0、TLSv1.1、TLSv1.2 の中から 1 つ以上を選択します。既定で有効化されているプロトコルは、TLSv1.1、および TLSv1.2 です。

      Note:

      TLSv1.1 または TLSv1.2 のみを使用することをお勧めします。SSLv3 またはそれ以前のバージョンは使用しないことをお勧めします。

    • [有効な暗号化スウィート] — クライアントとサーバ間の通信の保護に使用される暗号スウィート・セット。このトピックに関する詳細は、“暗号スウィート構文の有効化” を参照してください。

Note:

構成がクライアントであるのかサーバであるのか、および目的の機能により、必須フィールドは異なります。SSL 構成によっては必要ではないフィールドもあります。

構成の作成プロセスまたは編集プロセスを完了するには、このページの上部に表示される以下のボタンを使用します。

  • [保存] — 構成を保存および有効にして、ダイアログを閉じます。既存の構成の変更や作成する構成を保存します。

  • [キャンセル] — 既存の構成の変更や作成する構成を保存せずにダイアログを閉じます。

  • [テスト] — 有効な構成情報であるかどうかを確認します。構成の役割がクライアントの場合、このボタンを選択するとサーバ (URL でなく、ホスト名) やポート番号のプロンプトも表示されます。Caché ではそのサーバとのテスト接続を確立しようとします(サーバ構成の作成時、このボタンは使用できません)。

    Note:

    構成にエラーがない場合でも、[テスト] ボタンで、すべての TLS サーバに正常に接続できないことがあります。これは、接続テストでは、TLS ハンドシェイクに続いて HTTP 要求を実行するためです。サーバがハンドシェイク前に StartTLS メッセージ (LDAP、SMTP、FTPS、または別のプロトコルでの使用など) を要求する場合、サーバへの実際の SSL/TLS 接続は成功しても、テストは失敗します。

証明書に必要な情報

クライアントがサーバを認証する場合、クライアントには、サーバ独自の証明書から、サーバの信頼された CA 証明書まで、これらの間にあるものすべてを含む完全な証明書チェーンが必要です。

サーバ SSL 構成を設定するときに、サーバの信頼された CA 証明書がルート証明書ではない場合、問題があります。認証を適切に機能させるために、クライアントでは、サーバの個人証明書から信頼された自己署名 CA 証明書への証明書チェーンを構成するすべての証明書へのアクセスを必要とします。このチェーンはサーバの証明書ファイル (ハンドシェイク時に送信されたもの) とクライアントの信頼された CA 証明書ファイルの組み合わせから得られます。信頼された自己署名ルート CA 証明書はクライアントの CA 証明書ファイルに入っている必要があります。また、サーバの個人証明書はサーバの証明書ファイルの先頭エントリでなければなりません。その他の証明書は、これらの 2 つの場所に分けることができます。クライアントがサーバに対して認証を実行するときには、同じ制約が逆に適用されます。

証明書の形式に関しては、Windows 証明書エクスポート・ウィザードからの証明書は、既定の DER でエンコードされたバイナリ X.509 でなく、Base 64 でエンコードされた X.509 形式である必要があります。

暗号スウィート構文の有効化

構成は、有効な暗号スウィートを使用する接続のみを許可します。有効な暗号スウィートを指定するには、以下のいずれかを実行します。

  • 各暗号スウィートの名前を使用して暗号スウィートのリストを作成します。

  • OpenSSL 構文を使用して、暗号スウィートの有効および無効を指定します。

暗号スウィートの名前のリストと有効な暗号スウィートを指定する構文については、openssl.org の "ciphers(1) のマニュアル・ページOpens in a new tab" に説明があります。この構文を使用すれば、構成に対してさまざまな機能やアルゴリズムを使用する場合の必要事項や禁止事項のガイドラインを指定できます。

Caché 構成での暗号スウィートの既定値は、ALL:!aNULL:!eNULL:!EXP:!SSLv2 です。これは、コロンで区切られた文で以下のグループに分けられます。

  • ALL — eNULL 暗号以外のすべての暗号スウィートを含めます。

  • !aNULL — 認証を提供しない暗号を除外します。

  • !eNULL — 暗号化を提供しない暗号を除外します。

  • !EXP — エクスポート承認済みアルゴリズム (40 ビットおよび 56 ビット) を除外します。

  • !SSLv2 — SSL v2.0 暗号スウィートを除外します。

SSL/TLS を使用する Caché クライアント・アプリケーションに関するメモ

一部の動作については、Caché スーパーサーバと対話するクライアント・アプリケーションのサポートに Caché インスタンスを使用できます。例えば、シャドウ接続の保護に SSL/TLS を使用する場合、シャドウの宛先の役割を果たす Caché インスタンスは SSL/TLS クライアントになります。

SSL/TLS を使用して Caché スーパーサーバと対話するクライアント・アプリケーションを使用する場合は、構成について、次の点に特に注意してください。

  • [構成名] — クライアントの名前には制限はありませんが、接続を構成するためにはこの情報は必須です。

  • [タイプ] — インスタンスは SSL/TLS クライアントと共にサービスを提供するので、[タイプ] には [クライアント] を指定する必要があります。

  • [暗号スウィート] — 指定された暗号スウィートは、サーバにより要求または指定されたものと一致する必要があります。

また、“必須証明書チェーンの確立” のセクションで説明しているように、クライアントとサーバは互いの証明書チェーンを検証できるように構成することも必要です。

構成の削除

SSL/TLS 構成を削除するページは、[SSL/TLS 構成] ページ ([システム管理][セキュリティ][SSL/TLS 構成]) です。構成を削除するには、構成名の右側にある [削除] をクリックします。ポータルからアクションの確認が求められます。

予約構成名

Caché では、特定の機能で使用するために、いくつかの SSL/TLS 構成名が予約されています。このような機能を使用するときには、この予約構成名を使用する必要があります。予約構成名は以下のとおりです。

  • %MirrorClient — SSL/TLS クライアントとして動作する場合のミラー・メンバ用。 ミラーリングおよび SSL/TLS の詳細は、“ミラーリングで SSL/TLS を使用するための Caché の構成” を参照してください。

  • %MirrorServer — SSL/TLS サーバとして動作する場合のミラー・メンバ用。ミラーリングおよび SSL/TLS の詳細は、“ミラーリングで SSL/TLS を使用するための Caché の構成” を参照してください。

  • %SuperServer — 他の Caché コンポーネントからの接続を受け入れる場合の Caché スーパーサーバ用。SSL/TLS を使用するようにスーパーサーバを構成する場合の詳細は、次のセクションを参照してください。

  • %TELNET/SSL — SSL/TLS で保護された接続を受け入れる場合の Windows Telnet サーバ用。ミラーリングおよび Telnet の詳細は、“SSL/TLS に対する Caché Telnet サーバの構成” を参照してください。

Important:

SSL/TLS が正しく機能するようにするには、ここに表示されているとおりに、大文字と小文字を正確に区別して各構成名を使用する必要があります。

SSL/TLS を使用するための Caché スーパーサーバの構成

複数の Caché のコンポーネント間の通信に SSL/TLS を使用するには、SSL/TLS を使用するように Caché スーパーサーバを構成します。そのための手順は以下のとおりです。

  1. 管理ポータルのホーム・ページで、[SSL/TLS 構成] ページ ([システム管理][セキュリティ][SSL/TLS 構成]) に移動します。

  2. [SSL/TLS 構成] ページで [新規構成の作成] を選択して、[新規 SSL/TLS 構成] ページを表示します。

  3. [新規 SSL/TLS 構成] ページで %SuperServer という構成名の SSL/TLS サーバ構成を作成します (構成名の大文字と小文字は、ここに指定したとおりのものを使用します)。SSL/TLS 構成の作成の詳細は、“SSL/TLS 構成の作成または編集” のセクションを参照してください。

  4. [システムワイドセキュリティパラメータ] ページ ([システム管理][セキュリティ][システム・セキュリティ][システムワイドセキュリティパラメータ]) の [スーパーサーバSSL/TLSサポート] フィールドで、[有効] を選択します。これは、スーパーサーバが SSL/TLS で保護された接続をサポートする (ただし、必須ではない) ことを表します。

    Note:

    SSL/TLS で保護された接続を要求するようにスーパーサーバを構成する場合、まず SSL/TLS を有効にするように指定します。

  5. 必要に応じて、SSL/TLS を使用するようにクライアントを設定します (次のセクションを参照)。

SSL/TLS を使用するための Caché Telnet サービスの構成

Caché Telnet サービス (%Service_Telnet) は、SSL/TLS で保護された接続をサポートします。Telnet サービスでの SSL/TLS の使用を確立するための手順は以下のとおりです。

  1. SSL/TLS に対する Caché Telnet サーバの構成

  2. SSL/TLS に対する Telnet クライアントの構成

SSL/TLS に対する Caché Telnet サーバの構成

SSL/TLS を使用するために Caché Telnet サーバを構成するための手順は以下のとおりです。

  1. Caché サーバに関連付けられた %SuperServer SSL/TLS 構成が存在しない場合、“SSL/TLS 構成の作成または編集” の説明に従い、構成を作成してください。

  2. 管理ポータルのホーム・ページで、[SSL/TLS 構成] ページ ([システム管理][セキュリティ][SSL/TLS 構成]) に移動します。

  3. [SSL/TLS 構成] ページで [新規構成の作成] を選択して、[新規 SSL/TLS 構成] ページを表示します。

  4. [新規 SSL/TLS 構成] ページで、%TELNET/SSL という構成名の SSL/TLS 構成を作成します。

  5. [システムワイドセキュリティパラメータ] ページ ([システム管理][セキュリティ][システム・セキュリティ][システムワイドセキュリティパラメータ]) の [スーパーサーバSSL/TLSサポート] フィールドで、[有効] を選択します。これは、Telnet サーバが SSL/TLS で保護された接続をサポートする (ただし、必須ではない) ことを表します。

    Note:

    SSL/TLS で保護された接続を要求するようにスーパーサーバを構成する場合でも、まず SSL/TLS を有効にするように指定します。

  6. Telnet サービス、%Service_Telnet が有効化されていることを確認します。以下はその方法です。

    1. [サービス] ページ ([システム管理][セキュリティ][サービス]) の [%Service_Telnet] をクリックすると、その Telnet サービスの [サービス編集] ページが表示されます。

    2. [サービス編集] ページで、[サービス有効] チェック・ボックスがまだチェックされていない場合は、チェックを付けます。

    3. [保存] をクリックして設定を保存し、[サービス] ページに戻ります。

SSL/TLS に対する Telnet クライアントの構成

Caché は、サードパーティの Telnet クライアントからの SSL/TLS 接続を受け入れます。Telnet クライアントとサーバを構成するために必要な作業や推奨される操作は、選択した暗号スウィートによって大きく異なります。

Important:

InterSystems Telnet クライアントで SSL/TLS を使用する場合、インターシステムズのサポート窓口Opens in a new tabまでお問い合わせください。

次のガイドラインを目安にしてください。

  • Telnet クライアントからサーバ認証が要求された場合、サーバは証明書を提供する必要があります。また、クライアントはサーバの証明書チェーンにアクセスできなければなりません。

  • Caché Telnet サーバからクライアント認証が要求された場合、クライアントは証明書を提供する必要があります。また、サーバはクライアントの証明書チェーンにアクセスできなければなりません。

  • Caché Telnet サーバからクライアント認証が要求された場合、クライアントは証明書と証明書チェーンを認証機関 (CA) に提供することもできます。クライアントが証明書を提供しなかった場合、認証は成功します。クライアントが不正な証明書、または証明書チェーンを提供した場合、認証は失敗します。

証明書や証明書チェーンが認証に使用される方法については、“必須証明書チェーンの確立” のセクションを参照してください。

Caché との通信に SSL/TLS を使用するための .NET クライアントの構成

.NET クライアント・アプリケーションで Caché と通信するときに SSL/TLS が使用されるようにこのアプリケーションを構成する方法について説明します。この通信はスーパーサーバ経由で行われるので、このスーパーサーバが SSL/TLS を使用するように設定する必要があります。一般的な構成の作成または編集のプロセスについては、“SSL/TLS 構成の作成または編集” に説明があります。SSL/TLS を使用するためのスーパーサーバの設定のプロセスについては、“SSL/TLS を使用するための Caché スーパーサーバの構成” に具体的な説明があります。

SSL/TLS を使用する .NET 接続を確立するプロセスは以下のとおりです。

  1. サーバ証明書を検証するための関連する CA 証明書がインストールされていることを確認します。これらの場所は、現在のユーザの証明書ストア (Certificates – Current User\Trusted Root Certification Authorities) です。

  2. "Caché Managed Provider for .NET の使用法" の “Caché データベースへの接続” の章にある “接続の作成” のセクションの説明に従い、接続文字列の形式に基づいてサーバへの接続を確立します。サーバ、ポート、およびネームスペースの名前と値のペアのほか、SSL キーワードを追加してその値を true に指定します。例えば、SSL/TLS による保護を使用する接続を以下のような形式の接続文字列とします。

    CacheConnect.ConnectionString = 
        "Server=localhost; Port=1972; Namespace=SAMPLES; SSL=true;"
        + "Password=SYS; User ID=_SYSTEM;";
    
    

    SSL キーワードに true を指定すると、SSL/TLS でクライアント・サーバ接続を保護できます。この場合は、.NET クライアントに対して Caché サーバが認証され、必要に応じてそのサーバに対してクライアントが認証されます。安全な接続が確立されると、Caché サーバではユーザ ID とパスワードのキーワードを使用して、.NET クライアントから接続するユーザの ID を認証します (相互認証に関しては、接続文字列では何も指定していません。接続文字列では、クライアント認証を要求または必要とするサーバを指定しているにすぎません)。

Caché との通信に SSL/TLS を使用するための Java クライアントの構成

Java クライアント・アプリケーションで Caché と通信するときに SSL/TLS が使用されるようにこのアプリケーションを構成する方法について説明します。この通信はスーパーサーバ経由で行われるため、このスーパーサーバが SSL/TLS を使用するように設定する必要があります。詳細は、“SSL/TLS を使用するための Caché スーパーサーバの構成” で説明しています。Java クライアントは、JDBC またはオブジェクトのバインディングを使用して実装できます。

SSL/TLS を Caché で使用するように Java クライアントのアプリケーションを構成する手順は以下のとおりです。

  1. クライアントでキーストアまたはトラストストアが必要であるかどうかを判断します。これは Caché サーバでクライアント認証を要求するかまたは必須とするか、サーバ認証が必須であるか、暗号スウィートが使用されているかどうかなど、いくつかの要因によって変わります。詳細については、“キーストアおよびトラストストアが必要かどうかの判断” を参照してください。

  2. これらの機能を提供するためのプロパティを持つ構成ファイルを作成します。詳細は、“クライアント構成の生成” を参照してください。

  3. クライアント・アプリケーションのコードで、必要に応じて、クライアント構成の名前を指定します。名前を指定しなかった場合は、既定の構成情報が使用されます。詳細は、“クライアント構成の使用の指定” を参照してください。

キーストアおよびトラストストアが必要かどうかの判断

キーストアは、クライアントの秘密鍵、公開鍵証明書、および認証機関 (CA) 情報のリポジトリの役割を果たします。この情報は、(1) Caché サーバによりクライアント認証が要求される場合、または (2) 使用している暗号スウィートによりクライアント・キーのペアが要求される場合に必要です。

  • Caché サーバがクライアント認証を必要としているかどうかは、その Caché インスタンスの “%SuperServer” SSL/TLS 構成に対する [SSL/TLS 構成を編集] ページの [相手証明書認証レベル] フィールドに指定されている値によって判断されます。このフィールドの値が [必要] の場合、クライアントには証明書が必要です。[要求] の場合、サーバにより証明書があるかどうかがチェックされます。

  • クライアントとサーバは使用する暗号スウィートについて合意します。この暗号スウィートにより、クライアント証明書、キーのペア、またはこの両方が存在するかどうかが判断されます。有効化されたサーバの暗号スウィートは、その Caché インスタンスの “%SuperServer” SSL/TLS 構成に対する [SSL/TLS 構成を編集] ページの [有効な暗号化スイート] フィールドに指定されている値によって決定されます。クライアントで使用できる暗号スウィートは、使用している Java のバージョンによって異なります。

クライアントが秘密鍵と証明書を持っている場合、これらはクライアントのキーストアに格納されています。このキーストアには、クライアントのルート CA 証明書とすべての中間 CA 証明書を保存できます。クライアントがサーバを認証するには、このサーバのルート CA 証明書と中間 CA 証明書が必要になります。これらは、クライアントのトラストストアに格納するか、またはクライアント証明書情報と共にキーストアに格納することができます。キーストアとトラストストアの詳細は、"Java Secure Socket Extension (JSSE) リファレンスガイドOpens in a new tab" の “キーストアとトラストストア” のセクションを参照してください。

クライアント構成の生成

Java クライアントの動作は、その構成で指定されているプロパティの値により異なります。 この構成ではこれらの値を “構成ファイル” というファイルから取得します。具体的な値は、構成ファイルの既定値またはその構成固有の値のいずれかです。以下のセクションでは、構成ファイルの機能について説明します。

構成ファイル、構成、プロパティ、値、および既定

各構成ファイルでは、1 つ以上の構成で使用するプロパティの値を指定します。このファイルには、名前と値のペアの形式で、既定値と構成固有の値の両方が記述されています。一般的にこのペアでは、バージョン管理していないプロパティの名前に対しては既定値を指定し、バージョン管理しているプロパティの名前に対しては構成固有の値を指定します。

構成ファイルに記述されている構成定義が 1 つのみの場合、構成側ではバージョン管理していないプロパティを使用できます。ただし、関連付けられた name プロパティを持つことはできません。名前付き構成を使用しない場合は、名前を指定せずに構成を呼び出します (“クライアント構成の使用の指定” および “名前なしでの構成の指定” を参照)。

構成ファイルに複数の構成がある場合は、構成のバージョン番号 n を付加して name.n の形式とした name プロパティを指定することで各構成を定義します。構成のその他のプロパティ名では、name プロパティと同じバージョン番号が使用されます。したがって、名前の形式は propertyname.n となります。ここで、propertyname にはプロパティの名前、n には構成の番号が入ります。

構成ファイル内の定義では、大文字と小文字は区別されます。スペースは自由に使用できます。また、プロパティ定義の順番も自由です。

すべての構成で使用されるプロパティの既定値を指定するには、バージョン管理されていないプロパティ名とその値を次の形式で指定します。

propertyName = propertyValue

例えば、keyStoreType プロパティの既定値を pkcs12 に指定するには、以下の形式とします。

keyStoreType = pkcs12

このプロパティの既定値より優先する値を使用するには、次のようにバージョン管理しているプロパティ名を指定します。

keyStoreType.1 = jceks

1 つの構成ファイルに複数の構成定義がある場合は、そのバージョン番号順に構成を使用する必要があります。クライアント・アプリケーション・コードで参照する構成番号が連続していない場合はエラーになります。例えば、ある構成ファイルにバージョン管理された 3 つの name プロパティ、name.1name.2、および name.4 があるとします。この場合、name.4 プロパティに関連付けられている構成は作成されず、このプロパティへの参照は失敗し、エラーが表示されます。

Java クライアントの構成プロパティ

以下のようなプロパティがあります。

  • cipherSuites — 暗号スウィートを、使用の優先順にコンマで区切って並べたリスト。使用可能な暗号スウィートは、使用しているマシン上の JRE (Java Runtime Environment) によって異なります。(省略可)

  • debug — デバッグ情報を Java system.err ファイルに記録するかどうかを表します。このプロパティには true または false を指定できます (既定値は false)。このプロパティの設定は、例外処理に影響を与えません。(省略可)

  • keyRecoveryPassword — クライアントの秘密鍵へのアクセスに使用されるパスワード。これは秘密鍵のペアと同時に作成されたものです。(秘密鍵がパスワードで保護されていて、アプリケーション・コードが入力パラメータとして秘密鍵に渡されない場合に必須)

  • keyStore — クライアントの秘密鍵と証明書情報を格納するためのファイル。また、キーストアには、一般にトラストストアに関連付けられるコンテンツも格納できます。(省略可)

  • keyStorePassword — キーストアにアクセスするためのパスワード。(キーストアの作成時にパスワードを指定した場合には必須)

  • keyStoreType — キーストア・ファイルの形式が指定されている場合はその形式。(省略可)

    サポートされる形式は以下のとおりです。

    • jks — Java KeyStore。Java 独自の形式です。(既定)

    • jceks — Java Cryptography Extension KeyStore 形式。

    • pkcs12 — Public Key Certificate Standard #12 形式。

  • logFile — Java がエラーの記録に使用するファイル。(省略可)

  • name — バージョン管理している Java クライアント構成の識別子(各 name プロパティはバージョン管理する必要があります。バージョン管理していない name プロパティは意味がなく、無視されます)。

    構成ファイルで指定している構成が 1 つのみで、バージョン管理していないプロパティ名のみを使用している場合、name プロパティは必要ありません (“クライアント構成の使用の指定” を参照)。1 つの構成ファイルで複数の構成を指定する方法についての詳細は、“構成ファイル、構成、プロパティ、値、および既定” のセクションを参照してください。(省略可)

  • protocol — (必須) 接続に使用される SSL または TLS プロトコル。指定されるオプションおよびプロトコルは以下のとおりです。

    • SSL — SSL のいずれかのバージョン。

    • SSLv3 — SSL バージョン 3。

    • TLS — TLS のいずれかのバージョン。(既定)

    • TLSv1 — TLS バージョン 1 (SSL バージョン 3.1 に相当)。

    • TLSv1.1 — TLS バージョン 1.1 (SSL バージョン 3.2 に相当)。

  • trustStore — サーバのルート CA 証明書を格納するためのファイル。このファイルには、中間 CA の証明書も保持できます(この情報はキーストアに格納することもできます)。(省略可)

  • trustStorePassword — トラストストアにアクセスするためのパスワード。(キーストアの作成時にパスワードを指定した場合には必須)

  • trustStoreType — トラストストア・ファイルの形式が指定されている場合はその形式。(省略可)

    サポートされる形式は以下のとおりです。

    • jks — Java KeyStore。Java 独自の形式です。(既定)

    • jceks — Java Cryptography Extension KeyStore 形式。

    • pkcs12 — Public Key Certificate Standard #12 形式。

構成ファイルのサンプル

ここでは、Java クライアントで使用できる構成ファイルの例を示します。

debug = true
protocol = SSLv3
cipherSuites = SSL_RSA_WITH_RC4_128_MD5
keyStoreType = JKS
trustStore = ca.ts
trustStoreType = JKS

name.1 = CacheJavaClient1
keyStore.1 = cjc1.ks
keyStorePassword.1 = cjc1kspw123&XtraChar$
trustStore.1 = cjc1.ts
trustStorePassword.1 = cjc1tspw[+0therNo|sechars]

name.2 = CacheJavaClient2
keyStore.2 = cjc2.ks
keyStoreType.2 = pkcs12

name.3 = CacheJavaClient3
debug.3 = false
cipherSuites.3 = TLS_RSA_WITH_AES_128_CBC_SHA

構成ファイルの名前付け

構成ファイルは、SSLConfig.properties という名前で保存するか、Java 環境変数 com.intersys.SSL.ConfigFile の値をファイルの名前に設定します。コードは、現在の作業ディレクトリにあるファイルをチェックします。

クライアント構成の使用の指定

定義された構成は、サーバへの接続時にクライアント・アプリケーション・コードによって呼び出されます。これは、DriverManager オブジェクトもしくはCacheDataSource オブジェクトの呼び出しで行うことができます。

DriverManager オブジェクトの使用法

DriverManager では、以下の手順を実行します。

  1. Java Properties オブジェクトを作成します。

  2. このオブジェクトの各種プロパティに値を設定します。

  3. クライアントから Caché サーバへの接続のために、このオブジェクトを Java Connection オブジェクトに渡します。

接続で使用する情報を指定するには、まず構成ファイルから Properties オブジェクトを作成し、これに特定のプロパティの値を設定します。この処理を行うコードを最も簡単な形式で表すと、以下のようになります。

java.util.Properties prop = new java.util.Properties();
prop.put("connection security level", "10");
prop.put("SSL configuration name",configName);
prop.put("key recovery password",keyPassword);

各項目の内容は次のとおりです。

  • 接続のセキュリティ・レベル 10 は、クライアントが SSL/TLS を使用して接続を保護しようとしていることを表します。

  • configName は、Java クライアント構成の名前を値とする変数です。構成ファイルでは既定値のみを指定し、これらの既定値を 1 つの構成でのみ使用する場合は、この行を記述しないでください。詳細は、次の “名前なしでの構成の指定” のセクションを参照してください。

  • keyPassword は、キーストアからクライアントの秘密鍵を抽出するために必要なパスワードです。

Properties オブジェクトが存在し、これに値が指定されると、最後の手順として Caché Java クライアントから Caché サーバへの接続にこのオブジェクトが渡されます。これは、DriverManager.getConnection メソッドへの呼び出しによって行われます。これを呼び出すための形式は次のとおりです。

Connection conn = DriverManager.getConnection(CacheServerAddress, prop);

ここで、CacheServerAddress は Caché サーバのアドレスを表す文字列、prop はこの文字列に渡される Properties オブジェクトです。

この呼び出しに成功すると、SSL/TLS で保護された接続が確立されます。通常、このセクションで説明したような呼び出しを含むアプリケーション・コードには、正常終了を確認するためのさまざまなチェック機構や、あらゆるエラーに対する保護が含まれます。Caché Java バインディングの使用に関する詳細は、"Caché での Java の使用法" を参照してください。

CacheDataSource オブジェクトの使用法

CacheDataSource オブジェクトを使用する際は、オブジェクトを作成し、そのメソッドを呼び出して関連値を設定し、接続を確立します。メソッドは以下のとおりです。

  • setConnectionSecurityLevel — このメソッドは単一の引数 (接続のセキュリティ・レベル 10) を取ります。これは、クライアントが SSL/TLS を使用して接続を保護しようとしていることを表します。

  • setSSLConfigurationName — このメソッドは単一の引数 (Java クライアント構成の名前を値とする変数) を取ります。構成ファイルでは既定値のみを指定し、これらの既定値を 1 つの構成でのみ使用する場合は、この行を記述しないでください。詳細は、次の “名前なしでの構成の指定” のセクションを参照してください。

  • setKeyRecoveryPassword — このメソッドは単一の引数 (キーストアからクライアントの秘密鍵を抽出するために必要なパスワード) を取ります。

この処理を行うコードを最も簡単な形式で表すと、以下のようになります。

try{
   CacheDataSource ds = new CacheDataSource();
   
   ds.setURL("jdbc:Cache://127.0.0.1:1972/Samples");
   ds.setConnectionSecurityLevel(10);
   ds.setSSLConfigurationName(configName);
   ds.setKeyRecoveryPassword(keyPassword);

   Connection dbconnection = ds.getConnection();
}

プロパティの取得および設定のためのメソッドの全リストについては、"JDBC での Caché の使用法" の “Caché JDBC 準拠” の章、“CacheDataSource” のセクションを参照してください。com.intersys.jdbc.CacheDataSource の JavaDoc は <install-dir>/dev/java/doc/index.html の下にあります。

名前なしでの構成の指定

構成ファイルに記述されている構成定義が 1 つのみの場合、構成側ではバージョン管理していないプロパティを使用できます。ただし、関連付けられた name プロパティを持つことはできません。

DriverManager オブジェクトを扱う場合、Properties オブジェクトでは構成ファイルにある既定値のみを使用します。このオブジェクトを作成するコードは、“SSL 構成名” キーの値を指定する呼び出しがないという点で通常のオブジェクト作成コードとは異なります。

java.util.Properties prop = new java.util.Properties();
prop.put("connection security level", "10");
prop.put("key recovery password",keyPassword);

CacheDataSource オブジェクトを扱う場合、名前のない構成を指定するには、単に setSSLConfigurationName の呼び出しを行わないようにします。

ミラーリングで SSL/TLS を使用するための Caché の構成

このセクションでは、以下のトピックについて説明します。

Caché によるミラーリングのサポートに関する概要は、"Caché 高可用性ガイド" の “ミラーリング” の章を参照してください。

ミラーリングおよび SSL/TLS について

ミラー内でセキュリティを実現するために、SSL/TLS を使用するようにミラーのノードを構成できます。こうすると、1 つのノードから別のノードへの認証と、ノード間での暗号化された通信の両方が提供されます。フェイルオーバー・メンバの間で (および非同期メンバに対して) は、機密性の高いデータが受け渡しされるため、通信を暗号化して、ネットワークでデータが盗難も改ざんもされないようにすることをお勧めします。また、フェイルオーバー・メンバには、別の Caché システムに対してアクション (ジャーナル・ファイルの情報の要求や Caché の強制終了など) を実行するように ISCAgent に要求する機能があるため、ミラーのフェイルオーバー・メンバ (および対応する ISCAgent プロセス) の間でこのような通信を保護することは重要です。

Note:

フェイルオーバー・メンバがデータベース (またはジャーナル) の暗号化を使用している場合は、フェイルオーバー・メンバ間および任意の非同期メンバとの通信に SSL/TLS が必要です (特に、Caché は、どちらかのメンバが暗号化キーを有効化しているかどうかをチェックします。有効化している場合、インスタンスではユーザがミラーリングで SSL/TLS を有効化する必要があります)。データベース暗号化およびジャーナル・ファイル暗号化の詳細は、“マネージド・キー暗号化” の章を参照してください。

(フェイルオーバー・メンバとして、または非同期メンバとして) ミラーリングに参加し、かつ SSL/TLS を使用するためには、インスタンスに 2 つの Caché SSL/TLS 構成 (サーバ・タイプとクライアント・タイプ) が必要です。またこれらの構成それぞれに、信頼された認証機関によって発行された X.509 SSL/TLS 証明書が必要です。この証明書には、証明書の共通名 (CN) コンポーネントに一意の識別子 (例えば、インスタンスの完全修飾ドメイン名 (FQDN) とメンバの Caché ノード名の組み合わせ) が含まれている必要があります。これは、CN が証明書の識別名 (DN) のフィールドであり、一意の CN を作成すると、証明書の DN がメンバを一意に識別できるようになるためです。インスタンスのミラーリング構成を作成するには、次のセクションにある以下の手順を実行します。

SSL/TLS が有効になっている場合は、以下のアクションが行われます。

  1. サーバ認証 : クライアントがサーバに接続すると、サーバが自らを認証することが要求されます。この認証は、サーバの証明書の DN が、クライアントのミラー構成で構成されたシステムの DN と一致することを確認します。一致しない場合、クライアントは接続を切断します。

  2. クライアント認証 : サーバがクライアントからの接続を受け入れると、クライアントが自らを認証することが要求されます。この認証も、クライアントの DN が、サーバのミラー構成で構成されたシステムの DN と一致することを確認します。ここでも、一致しない場合、サーバは接続を切断します。

  3. 暗号化 : SSL プロトコルは、サーバの証明書を自動的に使用して、クライアントとサーバの間に暗号化されたチャンネルを確立し、このチャンネルを通過するデータがあればすべて暗号化され、保護されるようにします。

ミラーでは SSL/TLS を使用することを強くお勧めします。

SSL/TLS で非同期メンバを構成する場合の注意事項

ミラーで SSL/TLS を使用する場合は、そのミラーの SSL/TLS を有効化して各メンバの構成を作成 (後続のセクションを参照) するだけでなく、第 2 のフェイルオーバー・メンバまたは非同期メンバの構成時に特別な手順を実行する必要があります。詳細は、"Caché 高可用性ガイド" の “ミラーリング” の章にある “第 2 のフェイルオーバー・メンバまたは非同期メンバを承認する (SSL/TLS のみ)” を参照してください。具体的には、フェイルオーバー・メンバごとに、[ミラー・モニタ] ページで、[メンバの X.509 証明書に DN としてリストされている ID] フィールドに DN (識別名) を入力する必要があります。DN の値は、非同期メンバの [非同期として参加] ページ ([システム管理][構成][ミラー設定][非同期として参加]) の [X.509 識別名] フィールドからコピーできます(Caché は、非同期メンバの証明書の情報に基づいて [X.509 識別名] フィールドに生成します)。

ミラーで SSL/TLS を無効にする場合の注意事項

既存のミラーで SSL/TLS を無効にするには、プライマリ・メンバで無効にします。

Important:

ミラーリングでは SSL/TLS を使用することを強くお勧めします。ミラーで SSL/TLS を無効にしないことを強くお勧めします。

ミラー用 SSL/TLS 構成の作成および編集

SSL/TLS をミラーで使用するには、(フェイルオーバーまたは非同期の) 各メンバは、%MirrorClient および %MirrorServer と呼ばれる SSL/TLS 構成のペアを使用します。ポータルでは、これらの構成の作成および編集が可能です。

Note:

これらの構成は、ミラーで SSL/TLS が有効になっているときに、各メンバ上に既に存在している必要があります。

ミラー・メンバ用 SSL/TLS 構成の作成

この構成を作成する手順は以下のとおりです。

  1. Caché のインスタンスのミラーリングがまだ有効になっていない場合は有効にします。そのためには、%Service_Mirror サービスの [サービス編集] ページを使用し、このページで [サービス有効] チェック・ボックスにチェックを付けます。このページには、以下の 2 つのパスのいずれかから移動できます。

    • [ミラー設定] ページ ([システム管理][構成][ミラー設定]) で、[ミラーサービスを有効にする] を選択する。

    • [サービス] ページ ([システム管理][セキュリティ][サービス]) で、[%Service_Mirror] を選択する。

  2. [ミラー用 SSL/TLS 構成の作成] ページに移動します。移動するには、[SSL/TLS 構成] ページ ([システム管理][セキュリティ][SSL/TLS 構成]) で [ミラー用構成の作成] をクリックするか、または [ミラーの作成] ページ ([システム管理][構成][ミラー設定][ミラーの作成]) で [SSL/TLS の設定] をクリックします。

  3. [ミラー用 SSL/TLS 構成の作成] ページ ([システム管理][セキュリティ][SSL/TLS 構成][ミラー用 SSL/TLS 構成の作成]) で、フォームのフィールドにすべて入力します。このページのフィールドは、[新規 SSL/TLS 構成] ページのフィールドに似ています (“SSL/TLS 構成の作成または編集” のセクションを参照)。このページは、ミラーリングが自動的に有効になるサーバ構成とクライアント構成 (%MirrorClient と %MirrorServer) の両方を作成するため、[構成名][説明][有効] のいずれのフィールドもありません。また、秘密鍵パスワードに関しては、このページでパスワードの入力または置き換え ([新規パスワード入力])、パスワードを使用しないことの指定 ([パスワードクリア])、あるいは既存のパスワードをそのまま使用すること ([そのままにする]) の指定を行えます。

    両方の構成で同じ X.509 証明書が必要なため、このフォームの入力が完了すると両方の構成が同時に保存されます。このページのフィールドは以下のとおりです。

    • [信頼された証明書機関 X.509 証明書を含むファイル]

      Note:

      このファイルには、他のミラー・メンバに属する X.509 証明書の検証に使用できる証明書が含まれている必要があります。ファイルに複数の証明書が含まれている場合は、それらの証明書を正しい順序で (現在のインスタンスの証明書が最初になるように) 並べる必要があります。詳細は、"必須証明書チェーンの確立" を参照してください。

    • [この構成のX.509 証明書を含むファイル]

      Note:
      • 証明書の識別名 (DN) は証明書のサブジェクト・フィールドに表示する必要があります。

      • 使用する証明書に鍵用途か拡張鍵用途のエクステンションがある場合、次のセクションの “ミラー・メンバの証明書に関する特別な考慮事項” を参照してください。

    • [関連づけられた秘密鍵を含むファイル:]

    • [秘密鍵タイプ]

    • [パスワード]

      [そのままにする] を選択した場合、証明書に関連付けられた秘密鍵の新規パスワードの入力および確認を行うための 2 つの追加フィールドがページに表示されます。

    • [プロトコル]

    • [有効な暗号化スウィート]

    フォームの入力が完了したら [保存] をクリックします。

ミラー・メンバの構成に関する概要は、"Caché 高可用性ガイド" の “ミラーリング” の章にある “ミラーの作成” のセクションを参照してください。

ミラー・メンバ用 SSL/TLS 構成の編集

メンバの %MirrorClient 構成と %MirrorServer 構成の作成が済んでいる場合、それらの構成は [ミラー用 SSL/TLS 構成の編集] ページ ([システム管理][セキュリティ] > [SSL/TLS 構成][ミラー用構成の編集] をクリック) で編集できます。このページには、前のセクションで説明した [ミラー用 SSL/TLS 構成の作成] ページと同じフィールドが表示されます。

ミラー・メンバの証明書に関する特別な考慮事項

SSL/TLS をミラーリングで使用する場合、%MirrorClient と %MirrorServer の構成では、同じ証明書と秘密鍵を使用する必要があります。したがって、両方の構成で使用されている証明書は、サーバ証明書としてもクライアント証明書としても使用可能である必要があります。

SSL/TLS のクライアントまたはサーバに固有の証明書エクステンションがあります。ミラーリングで使用されている証明書は、両方 (クライアントおよびサーバとして) の使用が可能である必要があるため、これらエクステンションのいずれかが証明書にある場合、クライアントとサーバの両方のエクステンションが必要になります。例えば、これは鍵用途および拡張鍵用途エクステンションで当てはまります。鍵用途エクステンションがある場合、以下の両方を指定する必要があります。

  • デジタル・シグニチャの鍵用途 (クライアント用)

  • 鍵暗号化の鍵用途 (サーバ用)

同様に、拡張鍵用途エクステンションがある場合、以下の両方を指定する必要があります。

  • クライアント認証の鍵用途

  • サーバ認証の鍵用途

両方のエクステンションがある場合、それぞれが両方の値を指定する必要があります。もちろん、エクステンションがどちらもない場合も有効です。

証明書で 1 つの値のみ (クライアントまたはサーバ) を指定した場合、ミラーリングの SSL/TLS 接続は、以下のようなエラーにより失敗します。

error:14094413:SSL routines:SSL3_READ_BYTES:sslv3 alert unsupported certificate

このエラーを解消する方法は、証明書の入手方法によって次のように異なります。

  • 自己署名証明書を使用している場合、これらの条件に従った (OpenSSL ライブラリなどによる) 新しい証明書を作成します。

  • 商用認証機関ツール (Microsoft Certificate Services など) を使用している場合、これらの条件に従った新しい証明書を作成し、このツールを使用して証明書署名要求 (CSR) に署名します。

  • 証明書を商用認証機関 (VeriSign など) から購入した場合、証明書がこれらの条件に従うことの要求を CSR と共に含めます。

TCP デバイスを使用して SSL/TLS を使用するための Caché の構成

ここでは、Caché TCP 接続を使用して SSL/TLS を使用する方法について説明します。手順は以下のとおりです。

  1. 必要な特性を指定する SSL/TLS 構成を作成します。

  2. TCP 接続を開きます。または、TCP 接続を受け入れるソケットを開きます。

  3. SSL/TLS を使用して接続を保護します。これは、接続やソケットを開くとき、またはその後で実行できます。

Caché SSL/TLS 機能の呼び出し方法は、Caché をクライアントまたはサーバとして使用しているか、最初に保護された TCP 接続を構築しているか、あるいは既存の接続に SSL/TLS を追加しているかによって異なります。

この章では、以下の項目について説明します。

TCP 接続で SSL/TLS を使用するためのクライアントの構成

クライアントからの安全な接続を確立するには、以下のいずれかを実行します。

クライアントから SSL/TLS で保護された TCP 接続を開く

このシナリオでは、Caché はクライアントの一部であり、TCP 接続は最初から SSL/TLS を使用します。  以下はその方法です。

  1. 使用する構成が利用できることを確認します。Caché を最後に起動したときよりも前に構成が作成された場合、その構成は有効化されて使用できる状態です。それ以外の場合は、新しい構成を作成したり、既存の構成を編集したりできます

  2. SSL/TLS を使用して TCP 接続を開きます

クライアントとして機能する Caché は、クライアント・アプリケーションを介してサーバに接続します。この接続では指定した構成を使用して、SSL 関連の動作を決定します。

SSL/TLS を使用した TCP 接続を開く

ここでは、SSL/TLS を使用する指定の接続を開き、特定のマシンやポート番号と通信します。以下はその方法です。

  1. 接続しているデバイスを以下のように指定します。

     Set MyConn = "|TCP|1000"

    TCP の文字列は、これが TCP デバイスであることを指定しています。TCP 接続の開始の詳細は、"Caché 入出力デバイス・ガイド" の "TCP クライアント/サーバ通信" の章にある "TCP デバイスの OPEN コマンド" のセクションを参照してください。

  2. 接続を開き、/SSL または /TLS のいずれかのパラメータで、SSL の使用を指定します。

     OPEN MyConn:(SvrID:1000:/SSL="MyCfg")

    各項目の内容は次のとおりです。

    • MyConn は以前指定されたデバイスです。

    • SvrID は、解決可能な DNS 名または IP アドレスの文字列です。

    • MyCfg は、保存 (および有効化された) SSL/TLS 構成です。

    この呼び出しでは、SSL を使用してポート 1000 のループバック・プロセッサ (つまり、ローカル・マシン) への TCP 接続を開きます。MyCfg 構成で指定した特性に従い、SSL が使用されます。

    オプションとして、プライベート・キー・ファイルのパスワードを以下のように含めることができます。

     OPEN MyConn:(SvrID:1000:/SSL="MyCfg|MyPrivateKeyFilePassword")
    

    ここでは、すべての引数が示されており、MyPrivateKeyFilePassword が実際のパスワードになります。

    Important:

    SSL/TLS を使用している TCP 接続を開くときにパスワードを含める機能は、リアルタイム・インタラクティブを使用する場合にのみ有効です。保護していない秘密鍵パスワードを永続的に保存することは絶対に避けてください。そのようなパスワードを保存する必要がある場合は、Security.SSLConfigsOpens in a new tab クラスの PrivateKeyPassword プロパティを使用します。

    TCP デバイスを開く処理の詳細は、"Caché 入出力デバイス・ガイド" の "TCP クライアント/サーバ通信" の章にある "TCP デバイスの OPEN コマンド・キーワードと USE コマンド・キーワード" を参照してください。

接続を一度確立すると、他の TCP 接続と同様に使用できます。

既存の TCP 接続への SSL/TLS の追加

このシナリオでは、TCP 接続が既に確立されていると仮定します。以下はその方法です。

  1. 使用する構成が利用できることを確認します。Caché を最後に起動したときよりも前に構成が作成された場合、その構成は有効化されて使用できる状態です。それ以外の場合は、新しい構成を作成したり、既存の構成を編集したりできます

  2. SSL/TLS を使用して既存の TCP 接続を保護します

SSL/TLS を使用した既存の TCP 接続の保護

ここでは、特定のマシンやポート番号への既存の接続に SSL/TLS を追加します。以下はその方法です。

  1. 接続しているデバイスの名前を決定します。例えば、以下のコードを使用して接続が確立されているとします。

     SET MyConn="|TCP|1000"
     OPEN MyConn:("localhost":1000)
    

    TCP の文字列は、これが TCP デバイスであることを指定しています。TCP 接続の開始の詳細は、"Caché 入出力デバイス・ガイド" の "TCP クライアント/サーバ通信" の章にある "TCP デバイスの OPEN コマンド" のセクションを参照してください。

  2. /SSL または /TLS のいずれかのパラメータで、SSL の使用を以下のように指定します。

     USE MyConn:(::/TLS="MyCfg")
    

    各項目の内容は次のとおりです。

    • MyConn は以前指定されたデバイスです。

    • MyCfg は、SSL/TLS 構成です。

    オプションとして、プライベート・キー・ファイルのパスワードを以下のように含めることができます。

     USE MyConn:(::/TLS="MyCfg|MyPrivateKeyFilePassword")
    

    ここでは、すべての引数が示されており、MyPrivateKeyFilePassword が実際のパスワードになります。

    Important:

    SSL/TLS を使用している既存の TCP 接続を開くときにパスワードを含める機能は、リアルタイムのインタラクティブを使用する場合にのみ有効です。保護していない秘密鍵パスワードを永続的に保存することは絶対に避けてください。そのようなパスワードを保存する必要がある場合は、Security.SSLConfigsOpens in a new tab クラスの PrivateKeyPassword プロパティを使用します。

    TCP デバイスを開く処理の詳細は、"Caché 入出力デバイス・ガイド" の "TCP クライアント/サーバ通信" の章にある "TCP デバイスの OPEN コマンド・キーワードと USE コマンド・キーワード" を参照してください。

接続に SSL/TLS セキュリティを追加しても、以前と同様にその接続を使用できます。

TCP ソケットを使用して SSL/TLS を使用するためのサーバの構成

クライアントからの安全な接続を必要とするソケットを有効にするには、以下のいずれかを実行します。

  • この接続には SSL または TLS が必要であることを指定して TCP ソケットを開きます。

  • 既存のソケットで SSL または TLS を使用する要件を設定します。

SSL/TLS で保護されたソケットの構築

このシナリオでは、Caché はサーバとして動作して、TCP ソケットは最初から SSL/TLS を使用します。  以下はその方法です。

  1. 使用する構成が利用できることを確認します。Caché を最後に起動したときよりも前に構成が作成された場合、その構成は有効化されて使用できる状態です。それ以外の場合は、新しい構成を作成したり、既存の構成を編集したりできます

  2. SSL/TLS の使用が必要な TCP ソケットを開きます。

このソケットでは、ソケットと接続するクライアントの SSL/TLS を使用する必要があります。クライアントがサーバへの接続を試行すると、サーバでは SSL/TLS を使用する接続をネゴシエートしようとします。これが成功すれば、接続を正常に使用でき、ネゴシエートされたアルゴリズムで通信が保護されます。失敗すると、クライアントで接続を使用できません。

SSL/TLS が必要な TCP ソケットを開く

SSL/TLS が必要なソケットを開くには、以下の手順を実行します。

  1. 以下のように、接続を受け入れるデバイスを指定します。

     SET MySocket = "|TCP|1000"

    TCP の文字列は、これが TCP デバイスであることを指定しています。TCP 接続の開始の詳細は、"Caché 入出力デバイス・ガイド" の "TCP クライアント/サーバ通信" の章にある "TCP デバイスの OPEN コマンド" のセクションを参照してください。

  2. 接続を開く、/SSL または /TLS のいずれかのパラメータで、SSL の使用を指定します。

     OPEN MySocket:(:1000:/TLS="MyCfg")

    オプションとして、プライベート・キー・ファイルのパスワードを以下のように含めることができます。

     OPEN MySocket:(:1000:/TLS="MyCfg|MyPrivateKeyFilePassword")
    

    この呼び出しでは、TLS を使用してポート 1000 の TCP ソケットを開きます。TCP デバイスを開く処理の詳細は、"Caché 入出力デバイス・ガイド" の "TCP クライアント/サーバ通信" の章にある "TCP デバイスの OPEN コマンド・キーワードと USE コマンド・キーワード" を参照してください。

    Important:

    SSL/TLS を使用している TCP 接続を開くときにパスワードを含める機能は、リアルタイム・インタラクティブを使用する場合にのみ有効です。保護していない秘密鍵パスワードを永続的に保存することは絶対に避けてください。そのようなパスワードを保存する必要がある場合は、Security.SSLConfigsOpens in a new tab クラスの PrivateKeyPassword プロパティを使用します。

既存のソケットへの SSL/TLS の追加

このシナリオでは、TCP ソケットへの接続が既に確立されていると仮定します。以下はその方法です。

  1. 使用する構成が利用できることを確認します。Caché を最後に起動したときよりも前に構成が作成された場合、その構成は有効化されて使用できる状態です。それ以外の場合は、新しい構成を作成したり、既存の構成を編集したりできます

  2. SSL/TLS を使用して、ソケットへの既存の TCP 接続を保護します

SSL/TLS を使用したソケットへの既存の TCP 接続の保護

ここでは、特定のマシンやポート番号のソケットへの既存の接続に SSL/TLS を追加します。以下はその方法です。

  1. ソケットが開いているデバイスの名前を判断します。例えば、以下のコードを使用して接続が確立されているとします。

     SET MySocket = "|TCP|1000"
     OPEN MySocket:(:1000)
    

    TCP の文字列は、これが TCP デバイスであることを指定しています。TCP 接続の開始の詳細は、"Caché 入出力デバイス・ガイド" の "TCP クライアント/サーバ通信" の章にある "TCP デバイスの OPEN コマンド" のセクションを参照してください。

  2. /SSL または /TLS のいずれかのパラメータで、SSL の使用を以下のように指定します。

     USE MySocket:(::/SSL="MyCfg")
    

    各項目の内容は次のとおりです。

    • MySocket は以前指定されたデバイスです。

    • MyCfg は、SSL/TLS 構成です。

    オプションとして、プライベート・キー・ファイルのパスワードを以下のように含めることができます。

     USE MySocket:(::/SSL="MyCfg|MyPrivateKeyFilePassword")
    

    TCP デバイスを開く処理の詳細は、"Caché 入出力デバイス・ガイド" の “TCP クライアント/サーバ通信” の章にある “TCP デバイスの OPEN コマンド・キーワードと USE コマンド・キーワード” を参照してください。

    Important:

    SSL/TLS を使用している既存の TCP 接続を開くときにパスワードを含める機能は、リアルタイム・インタラクティブを使用する場合にのみ有効です。保護していない秘密鍵パスワードを永続的に保存することは絶対に避けてください。そのようなパスワードを保存する必要がある場合は、Security.SSLConfigsOpens in a new tab クラスの PrivateKeyPassword プロパティを使用します。

ソケットに SSL/TLS セキュリティを追加しても、以前と同様にソケットへの接続を使用できます。

SSL/TLS を使用して Caché に接続するための CSP ゲートウェイの構成

SSL/TLS を使用して、CSP ゲートウェイと Caché サーバの間に暗号化されたセキュア・チャネルを設定できます。これには、SSL/TLS 証明書、およびゲートウェイを表す秘密鍵が必要です。その後、ゲートウェイは Caché サーバ (専用の証明書および秘密鍵を所有) との暗号化された接続を確立できるので、すべての情報はこの接続を通じて伝送されます。

Note:

CSP ゲートウェイおよび Caché サーバの間の Kerberos で保護された接続設定に関する詳細は、“認証” の章の “CSP ゲートウェイと Caché 間での Kerberos で保護された接続の設定” のセクションを参照してください。

以下はその方法です。

  1. Caché サーバに関連付けられた %SuperServer SSL/TLS 構成が存在しない場合、“SSL/TLS 構成の作成または編集” の説明に従い、構成を作成してください。

  2. [スーパーサーバSSL/TLSサポート] を選択するには、ポータルの [システムワイドセキュリティパラメータ] ページ ([システム管理][セキュリティ][システム・セキュリティ][システムワイドセキュリティパラメータ]) で、[有効] ([必須]ではない) を選択します。

  3. CSP ゲートウェイの [サーバ接続] ページ ([システム管理][構成][CSPゲートウェイ管理]) に移動します。

  4. そのページの [構成] で、[サーバ接続] を選択します。

  5. 次に、[サーバ編集] を選択して、[実行] をクリックします。CSP ゲートウェイの構成ページが表示されます。

  6. このページで、SSL/TLS 使用のための CSP ゲートウェイを構成します。具体的には、[接続セキュリティレベル] フィールドで [SSL] を選択します。

    また、[SSLプロトコル][SSLキータイプ][相手証明書認証の要求][SSL証明書ファイル][SSL証明書キーファイル][SSL CA認証ファイル]、および [SSL秘密鍵パスワード] フィールドの値の指定が必要です。このページのフィールドの詳細は、"CSP ゲートウェイ構成ガイド" の “CSP ゲートウェイの動作と構成” の章の “サーバ・アクセスの構成” を参照してください。

必須証明書チェーンの確立

証明書と鍵を使用する暗号スウィートを使用して接続を正常に確立するには、クライアントは、サーバ独自の証明書から、中間証明書 (もしあれば) を含め、信頼された認証機関 (CA) の発行する自己署名証明書までのサーバの証明書チェーンを検証できなければなりません。サーバがクライアント・ユーザを認証している場合、このサーバは、クライアント・ユーザ独自の証明書から、中間証明書 (もしあれば) を含め、信頼された CA の自己署名証明書までのクライアント・ユーザの証明書チェーンも検証できなければなりません。

認証は双方向で行うこともできるので、証明書チェーンに対する要件は、クライアントとサーバではなく、検証を行うエンティティ (認証を要求する側) と検証されるエンティティ (認証される側) を対象にしています。

認証を可能にするには、以下の条件を満たす必要があります。

  • 検証を行うエンティティは、検証されるエンティティ独自の証明書から信頼された CA の自己署名ルート証明書までの証明書チェーンを構成するすべての証明書へのアクセス権が必要です。このチェーンに含まれる証明書は、検証されるエンティティの証明書ファイル (ハンドシェイク・プロトコルの一部として送信されたもの) と検証を行うエンティティの信頼された CA 証明書ファイルの組み合わせから取得されます。

  • 検証を行うエンティティの CA 証明書ファイルには、信頼された CA の自己署名ルート証明書が必要です。

  • 検証されるエンティティ独自の証明書は、証明書ファイルの先頭エントリでなければなりません。

  • すべての中間 CA 証明書が必要です。

  • 証明書チェーンに含まれる証明書は、検証されるエンティティの証明書ファイルと、検証を行うエンティティの信頼された CA 証明書ファイルに分けることができます。ただし、以下の例で説明するように、各部分は連続する部分証明書チェーンでなければなりません。

以下が存在すると仮定します。

  • “ICA1” という認証機関により署名された証明書を持つ検証されるエンティティ (“VE”)。

  • 認証機関 “ICA2” により署名された “ICA1” の証明書、および “RootCA” により署名された “ICA2” の証明書。

  • 自己署名ルート証明書を持つ信頼された CA (“RootCA”)。

これらの証明書を、検証されるエンティティと検証を行うエンティティに正しく分類すると、以下のようになります。

証明書の有効な分類方法
検証されるエンティティの証明書ファイルに含まれる証明書 検証を行うエンティティの信頼された CA 証明書ファイルに含まれる証明書
VE ICA1、ICA2、RootCA
VE、ICA1 ICA2、RootCA
VE、ICA1、ICA2 RootCA

ただし、検証されるエンティティの証明書ファイルに VE と ICA2 を、検証を行うエンティティの信頼された CA 証明書ファイルに ICA1 と RootCert を分類することは有効ではありません

FeedbackOpens in a new tab