1 次 HADR サーバーとスタンバイ HADR サーバーの間の通信のための TLS の構成

IBM® Db2® pureScale®を使用しない環境では、HADR 1 次サーバーとスタンバイ・サーバーの間で SSL がサポートされます。

始める前に

すべてのインスタンスでの TLS の構成

HADR 1 次とスタンバイの間のトランザクション・ログの伝送に TLS を使用するには、HADR 環境のすべてのインスタンスで TLS (Transport Layer Security) を構成する必要があります。 手順は、 Db2 インスタンスでの TLS サポートの構成で説明されている手順と似ています。 特に、 TLS 鍵データベースおよび証明書をセットアップする手順は、すべてのインスタンスに対して実行する必要があります。 自己署名証明書を使用して HADR 環境を構成する手順については、次のセクションで取り上げます。

HADR 用に TLS を実装する際の考慮事項:
  1. 共有鍵データベースを介して TLS を実装することができます。 例えば、すべてのインスタンス上で SSL_SVR_KEYDB 構成パラメーターと SSL_SVR_STASH 構成パラメーターに共有場所を設定します。 共有鍵データベースを介して TLS を実装する場合は、Single Point of Failure を回避するために、共有鍵データベース自体も高可用性を備えていることが重要です。
  2. また、別々の鍵データベースを介して各インスタンスに TLS を実装することもできます。 これを行うには、各インスタンスで同じコマンド・セットを実行して TLS 鍵データベースと証明書をセットアップするか、最初のインスタンスで TLS 鍵データベースと証明書を作成してからそれらを他のインスタンスにコピーします。
  3. 各インスタンスで TLS を別個の鍵データベースとして実装する場合は、 Db2でこれらの証明書を使用する前に、すべてのインスタンスで鍵データベースに対するすべての証明書更新を完了しておくことが重要です。

アクティブ化された接続コンセントレーターは、HADR 通信での TLS の使用を禁止しません。

TLS サポートを構成する前に、HADR 構成の各 1 次およびスタンバイで以下のステップを実行します。

IBM Global Security Kit (GSKit) ライブラリーへのパスが、 Linux® および UNIX オペレーティング・システムの LIBPATHSHLIB_PATH、または LD_LIBRARY_PATH 環境変数に指定されていることを確認します。 GSKit は、Db2 データベース・サーバー製品をインストールするときに自動的に組み込まれます。

UNIX および Linux オペレーティング・システムの場合、GSKit ライブラリーは sqllib/lib/gskitにあります。 Linux プラットフォームでは、GSKit は Db2 のインストール時にローカルにインストールされます。 GSKit ライブラリーは sqllib/lib/gskit または sqllib/lib64/gskit にあります。 インスタンスを始動するために GSKit の別のコピーをグローバルな場所にインストールする必要はありません。 GSKit のグローバル・コピーが存在する場合は、グローバルな GSKit のバージョンがローカルの GSKit のバージョンと同じになるようにしてください。

GSKit ツール GSKCapiCmdについて詳しくは、「 GSKCapiCmd User Guide」を参照してください。

このタスクについて

TLS サポートの構成
TLS サポートを構成するための一般的なステップは、以下のとおりです。
  1. デジタル証明書を管理するための鍵データベースを 1 次インスタンスと各スタンバイ・インスタンスに作成します。 これらの証明書と暗号鍵は、 TLS 接続を確立するために使用されます。
  2. TLS サポート用に Db2 インスタンスを構成します。 この手順は、Db2 インスタンス所有者が実行します。
  3. TLS を使用する特定のデータベースに対して TLS を構成します。

手順のセクションで、1 次 HADR サーバーとスタンバイ HADR サーバーの間の通信のためのこの構成プロセスについて詳述します。


の制約事項

表 1. HADR 1 次サーバーとスタンバイ・サーバーの間の TLS サポート:
プラットフォーム サポートが開始された Db2 バージョン
Linux on AMD64 および Intel EM64T 11.1.1.1
その他のすべてのプラットフォーム 11.1.3.3

プロシージャー

  1. 1 次インスタンスとスタンバイ・インスタンス上で、鍵データベースを作成し、デジタル証明書をセットアップします。
    1. gskcapicmd コマンドを使用して、鍵データベースを作成します。 鍵データベースは、証明書管理システム (CMS) タイプ (拡張機能 .kdb) または Public-Key Cryptography Standards #12 (PKCS12) タイプ (拡張機能 .p12)) でなければなりません。 GSKCapiCmd は、非 Java™ ベースのコマンド行ツールであり、このツールを使用するためにシステムに Java をインストールする必要はありません。

      gskcapicmd コマンドについては、「GSKCapiCmd User's Guide」で説明されています。 Linux および UNIX オペレーティング・システムでは、このコマンドのパスは sqllib/gskit/bin です。 Linux および UNIX では、 LIBPATHSHLIB_PATH、または LD_LIBRARY_PATH 環境変数に適切な GSKit ライブラリー・パス ( sqllib/lib64/gskitなど) が含まれていることを確認してください。

      例えば、以下のコマンドは、 myprimary.kdb という名前の鍵データベースと、 myprimary.sthという名前の stash ファイルを作成します。

      gsk8capicmd_64 -keydb -create -db "primary.kdb" -pw "myPrimaryPassw0rdpw0" -stash

      -stash オプションを使用すると、鍵データベースと同じパスに、ファイル拡張子 .sthを持つ stash ファイルが作成されます。 インスタンスの始動時に、GSKit は stash ファイルを使用して、鍵データベースへのパスワードを取得します。

      鍵データベースを作成するとき、Verisign などのいくつかの認証局 (CA) から自動的に署名者証明書が取り込まれます。

      注: stash ファイルには強力なファイル・システム保護を使用する必要があります。 デフォルトでは、インスタンス所有者のみがこのファイルへの読み取りと書き込みのアクセス権限を持ちます。 このファイルはユーザーによって管理されるファイルであるため、Db2 sqllib ディレクトリーに格納されません。 各インスタンスのホーム・ディレクトリーの下に、鍵データベースと stash ファイルを格納するための鍵ストア・ディレクトリーを作成します。 以下に例を示します。
      mkdir /home/test/keystore
    2. 1 次インスタンスの証明書を鍵データベースに追加します。 スタンバイ・インスタンスは、スタンバイ・インスタンスの認証を提供するために、 TLS ハンドシェーク中にこの証明書を 1 次インスタンスに送信します。 証明書を取得するには、gskcapicmd コマンドを使用して新しい証明書要求を作成し、CA に送信して署名を受けるか、あるいは自己署名証明書を作成します。 自己署名証明書の例を以下に示します。

      myPrimarysigned というラベルの自己署名証明書を作成する場合、次の gskcapicmd を使用します。

      gsk8capicmd_64 -cert -create -db "primary.kdb" -pw "myPrimaryPassw0rdpw0" -label "myPrimarysigned" 
         -dn "CN=myhost.mycompany.com,O=myOrganization,OU=myOrganizationUnit,L=myLocation,ST=ON,C=CA"

      CA 署名証明書を使用するには、 Db2 インスタンスでの Secure Sockets Layer (TLS) サポートの構成の説明に従って、CA 署名証明書を取得する必要があります。

    3. 作成した証明書をファイルに抽出し、各スタンバイ・インスタンスに配布できるようにします。

      例えば、以下の gskcapicmd コマンドは、primary.arm というファイルに証明書を抽出します。

      gsk8capicmd_64 -cert -extract -db "primary.kdb" -pw "myPrimaryPassw0rdpw0" -label "myPrimarysigned" 
         -target "primary.arm" -format ascii 
    4. スタンバイ・データベースごとに、ステップ 1.a から 1.c を繰り返します。

      スタンバイ側に keydb を作成するには、以下のようにします。

      gsk8capicmd_64 -keydb -create -db "standby1.kdb" -pw "myStandby1Passw0rdpw0" -stash

      次のように、スタンバイで証明書を作成します。

      gsk8capicmd_64 -cert -create -db "standby1.kdb" -pw "myStandby1Passw0rdpw0" -label "myStandby1signed" 
         -dn "CN=myhost.mycompany.com,O=myOrganization,OU=myOrganizationUnit,L=myLocation,ST=ON,C=CA"

      スタンバイ証明書を standby1.armというファイルに抽出します。

      gsk8capicmd_64 -cert -extract -db "standby1.kdb" -pw "myStandby1Passw0rdpw0" -label "myStandby1signed" 
         -target "standby1.arm" -format ascii 
  2. すべての 1 次インスタンスとスタンバイ・インスタンスの鍵データベースに、1 次とスタンバイの証明書を追加します。
    1. 1 次インスタンスの証明書が含まれているファイルをスタンバイ・インスタンスに FTP 転送します。 このファイルは、前の手順で primary.arm というファイルに抽出したものです。 また、スタンバイ・インスタンスの証明書 standby1.arm が含まれているファイルを 1 次インスタンスに FTP 転送します。 これらのファイルを、各インスタンスの鍵データベースを作成したディレクトリーに配置します。
    2. 1 次インスタンスの証明書をスタンバイの鍵データベースに追加します。

      例えば、以下の gsk8capicmd コマンドを使用すると、primary.arm ファイルの証明書が standby1.kdb という鍵データベースにインポートされます。

      gsk8capicmd_64 -cert -add -db "standby1.kdb" -pw "myStandby1Passw0rdpw0" -label "myPrimarysigned" 
         -file "primary.arm" -format ascii 
    3. 1 次インスタンスで、スタンバイの証明書を 1 次の鍵データベースに追加します。

      例えば、以下の gsk8capicmd コマンドは、証明書を standby1.arm ファイルから primary.kdbという鍵データベースにインポートします。

      gsk8capicmd_64 -cert -add -db "primary.kdb" -pw "myPrimaryPassw0rdpw0" -label "myStandby1signed" 
         -file "standby1.arm" -format ascii 
    4. 複数のスタンバイ・データベースが存在する場合は、ステップ 2.a から 2.cで説明されているように、HADR 構成の各インスタンスの証明書を各インスタンスの鍵データベースにインポートする必要があります。
  3. TLS サポート用に Db2 インスタンスをセットアップします。
    Db2 インスタンスを TLS サポート用にセットアップするには、 Db2 インスタンス所有者としてログインし、以下の構成パラメーターを設定します。 この手順は、1 次 Db2 インスタンスとすべてのスタンバイ・データベースで実行する必要があります。
    1. ssl_svr_keydb 構成パラメーターを、インスタンス上の鍵データベース・ファイルの完全修飾パスに設定します。 例えば、1 次インスタンスの場合は、次のようにします。
      db2 update dbm cfg using SSL_SVR_KEYDB /home/test/keystore/primary.kdb

      スタンバイ・インスタンスの場合は、次のようにします。

      db2 update dbm cfg using SSL_SVR_KEYDB /home/test/keystore/standby1.kdb

      HADR 構成のいずれかのインスタンスで ssl_svr_keydb がヌル (設定解除) の場合、 TLS サポートは失敗します。

      このパスは、1 次と各スタンバイで同じである必要はありません。

    2. ssl_svr_stash 構成パラメーターを stash ファイルの完全修飾パスに設定します。 例えば、1 次インスタンスの場合は、次のようにします。
      db2 update dbm cfg using SSL_SVR_STASH /home/test/keystore/primary.sth

      スタンバイ・インスタンスの場合は、次のようにします。

      db2 update dbm cfg using SSL_SVR_STASH /home/test/keystore/standby1.sth

      HADR 構成のいずれかのインスタンスで ssl_svr_stash がヌル (設定解除) の場合、 TLS サポートは失敗します。

      このパスは、1 次と各スタンバイで同じである必要はありません。

    3. 各 1 次およびスタンバイ Db2 インスタンスを再始動します。
      db2stop
      db2start
  4. 1 次データベースとスタンバイ・データベースごとに TLS 通信を有効にします。

    1 次データベースおよび各スタンバイ・データベースで、 hadr_ssl_label データベース構成パラメーターを、ステップ 1 および 2で追加したデジタル証明書のラベルに設定します。 例えば、1 次データベースの場合は、次のようにします。

    db2 update db cfg for db2db using HADR_SSL_LABEL myPrimarysigned

    ここで、 db2db はデータベース名、 myPrimarysigned はステップ 1で作成したラベルです。

    2 次データベースの場合は、次のようにします。

    db2 update db cfg for db2db using HADR_SSL_LABEL myStandby1signed

    1 つの 1 次またはスタンバイに対して hadr_ssl_label を設定する場合は、構成内のすべての 1 次データベースとスタンバイ・データベースに対して設定する必要があります。 hadr_ssl_label がすべてのデータベースに対して設定されていない場合、1 次データベースとスタンバイ・データベースの間の一部の HADR 接続が失敗します。

    ラベルは、1 次と各スタンバイで同じである必要はありません。

    hadr_ssl_label が設定されている場合は、 ssl_svr_keydbssl_svr_stash の両方を設定する必要があります。 設定しないと、HADR を開始できないか、1 次データベースとスタンバイ・データベースの間の一部の HADR 接続が失敗します。