DB2 Version 10.1 for Linux, UNIX, and Windows

DB2 インスタンスの Secure Sockets Layer (SSL) サポートの構成

DB2® データベース・システムは、SSL をサポートしています。したがって、SSL をサポートする DB2 クライアント・アプリケーションは、SSL ソケットを使用して DB2 データベースに接続できます。CLI、CLP、および .Net Data Provider クライアント・アプリケーション、および IBM® Data Server Driver for JDBC and SQLJ (タイプ 4 の接続) を使用するアプリケーションは、SSL をサポートします。

始める前に

SSL サポートを構成する前に、以下のステップを実行します。

このタスクについて

SSL 通信は、常に FIPS モードになります。

DB2 Connect™ の SSL サポート
中間サーバー・コンピューターで DB2 Connect for System i®、DB2 Connect for System z®、または DB2 Enterprise Server Edition を使用して、DB2 クライアントをホストまたは System i のデータベースに接続する場合、以下のいずれかの構成で SSL 接続がサポートされます。
  • クライアントと DB2 Connect サーバー間
  • DB2 Connect サーバーとサーバー間
  • クライアントと DB2 Connect サーバーおよび DB2 Connect サーバーとサーバーの両方の間
注: SSL サポートが構成内のすべてのパスで使用可能になるためには、各クライアントまたはサーバーが SSL サポートの要件をすべて満たしている必要があります。例えば、DB2 Connect 接続コンセントレーターがオンになっている場合、DB2 Connect サーバーへのインバウンド要求は SSL を使用できません。ただし、ターゲット・サーバーへのアウトバウンド要求は、SSL を使用できます。
高可用性災害時リカバリー (HADR) システムの SSL サポート
SSL はクライアントと HADR 1 次サーバー間でサポートされています。SSL を使用して HADR 1 次サーバーに接続しているクライアントは、SSL を使用して HADR スタンバイ・データベースにリルートできます。ただし、SSL は HADR 1 次サーバーとスタンバイ・サーバー間ではサポートされていません。
GSKit ツールの資料: GSKCapiCmd
GSKit ツール GSKCapiCmd についての詳細は、「GSKCapiCmd User's Guide」を参照してください。これは、ftp://ftp.software.ibm.com/software/webserver/appserv/library/v80/GSK_CapiCmd_UserGuide.pdfから入手できます。
SSL サポートの構成
SSL サポートを構成するには、まず、鍵データベースを作成してデジタル証明書を管理します。これらの証明書および暗号鍵は、SSL 接続を確立するのに使用します。次に、DB2 インスタンスの所有者は、SSL サポートの DB2 インスタンスを構成する必要があります。

手順

  1. 鍵データベースを作成し、デジタル証明書をセットアップします。
    1. GSKCapiCmd ツールを使用して、鍵データベースを作成します。 これは、Certificate Management System (CMS) タイプの鍵データベースでなければなりません。 GSKCapiCmd は非 Java ベースのコマンド行ツールで、このツールを使用するためにシステムに Java™ がインストールされている必要はありません。

      GSKCapiCmd User's Guide」に説明されているとおり、gskcapicmd コマンドを使用して、GSKCapiCmd を呼び出します。このコマンドのパスは Linux および UNIX プラットフォームでは sqllib/gskit/bin で、32 ビットと 64 ビットの Windows プラットフォームではどちらも C:¥Program Files¥IBM¥GSK8¥bin です。 (64 ビット・プラットフォームでは、32 ビット GSKit 実行可能ファイルおよびライブラリーもあります。この場合、このコマンドのパスは C:¥Program Files (x86)¥IBM¥GSK8¥bin です。)Windows プラットフォームの場合は、PATH に適切な GSKit ライブラリー・パスが必ず含まれるようにしてください。UNIX プラットフォームまたは Linux プラットフォームの場合は、LIBPATH、SHLIB_PATH、または LD_LIBRARY_PATH に適切なライブラリー・パス (sqllib/lib64/gskit など) が必ず含まれるようにしてください。

      例えば、以下のコマンドを使用すると、mydbserver.kdb という鍵データベースと、mydbserver.sth という stash ファイルが作成されます。
      gsk8capicmd_64 -keydb -create -db "mydbserver.kdb" -pw "myServerPassw0rdpw0" 
            -stash
      -stash オプションは、鍵データベースと同じパスに、ファイル拡張子 .sth で、stash ファイルを作成します。インスタンスの始動時に、GSKit は stash ファイルを使用して、鍵データベースへのパスワードを取得します。
      注: この stash ファイルには強力なファイル・システム保護を使用する必要があります。デフォルトでは、インスタンス所有者のみがこのファイルへのアクセス権限 (読み取りアクセス権限と書き込みアクセス権限の両方) を持っています。

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

    2. サーバーの証明書を鍵データベースに追加します。サーバーは、SSL ハンドシェーク中にこの証明書をクライアントに送信して、サーバーのための認証を提供します。 証明書を取得するために、GSKCapiCmd を使用して新規認証要求を作成して、署名されるようにそれを CA にサブミットするか、テスト目的で自己署名証明書を作成できます。
      例えば、myselfsigned というラベルを持つ自己署名証明書を作成するには、以下の例に示されているように GSKCapiCmd コマンドを使用します。
      gsk8capicmd_64 -cert -create -db "mydbserver.kdb" -pw "myServerPassw0rdpw0" 
              -label "myselfsigned" -dn "CN=myhost.mycompany.com,O=myOrganization,
              OU=myOrganizationUnit,L=myLocation,ST=ON,C=CA"
    3. DB2 サーバーとの SSL 接続を確立するクライアントを実行しているコンピューターに証明書を配布できるように、作成したばかりの証明書をファイルに抽出します。
      例えば、以下の GSKCapiCmd コマンドは、mydbserver.arm というファイルに証明書を抽出します。
      gsk8capicmd_64 -cert -extract -db "mydbserver.kdb" -pw "myServerPassw0rdpw0" 
             -label "myselfsigned" -target "mydbserver.arm" -format ascii -fips
  2. SSL をサポートするように DB2 サーバーをセットアップするには、DB2 インスタンス所有者としてログインし、以下の構成パラメーターおよび DB2COMM レジストリー変数を設定します。
    1. ssl_svr_keydb 構成パラメーターを鍵データベース・ファイルの絶対パスに設定します。 例えば、以下のようにします。
      db2 update dbm cfg using SSL_SVR_KEYDB 
               /home/test/sqllib/security/keystore/key.kdb
      ssl_svr_keydb が NULL (未設定) の場合、SSL サポートは使用できません。
    2. ssl_svr_stash 構成パラメーターを stash ファイルの絶対パスに設定します。 例えば、以下のようにします。
      db2 update dbm cfg using SSL_SVR_STASH 
              /home/test/sqllib/security/keystore/mydbserver.sth
      ssl_svr_stash が NULL (未設定) の場合、SSL サポートは使用できません。
    3. ssl_svr_label 構成パラメーターをサーバーのデジタル証明書のラベル (ステップ 1 で追加した) に設定します。 ssl_svr_label が設定されていない場合、鍵データベースのデフォルトの証明書が使用されます。鍵データベースにデフォルトの証明書がない場合、SSL は使用できません。 例えば、以下のようにします。db2 update dbm cfg using SSL_SVR_LABEL myselfsigned ここで、myselfsigned はサンプル・ラベルです。
    4. ssl_svcename 構成パラメーターを、DB2 データベース・システムが SSL 接続を listen するポートに設定します。 TCP/IP と SSL の両方が使用可能である (DB2COMM レジストリー変数が 'TCPIP, SSL' に設定されている) 場合、ssl_svcenamesvcename が設定されているポートとは異なるポートに設定する必要があります。svcename 構成パラメーターは、DB2 データベース・システムが TCP/IP 接続を listen するポートを設定します。ssl_svcenamesvcename と同じポートに設定する場合、TCP/IP も SSL も使用できません。 ssl_svcename が NULL (未設定) の場合、SSL サポートは使用できません。
      注: HADR 環境では、1 次データベース・システムまたはスタンバイ・データベース・システムの hadr_local_svc を、ssl_svcename に設定したのと同じ値に設定しないでください。また、hadr_local_svcsvcename、または svcename プラス 1 と同じ値に設定しないでください。
      注: DB2COMM レジストリー変数が 'TCPIP,SSL' に設定されているとき、例えば、svcename 構成パラメーターが NULL に設定されているために、TCPIP サポートが適切に使用できない場合、エラー SQL5043N が戻され、SSL サポートは使用できません。
    5. (オプション) サーバーがどの暗号スイートを使用できるかを指定するには、ssl_cipherspecs 構成パラメーターを設定します。 ssl_cipherspecs を NULL (未設定) のままにしておくと、GSKit はクライアントとサーバーの両方によってサポートされる、使用可能な最も強力な暗号スイートを選出できます。 どの暗号スイートが使用可能であるかについての詳細は、サポートされる暗号スイートを参照してください。
    6. DB2COMM レジストリー変数に値 SSL を追加します。 例えば、以下のようにします。
      db2set -i db2inst1 DB2COMM=SSL
      db2inst1 は、DB2 インスタンス名です。 データベース・マネージャーは、同時に複数のプロトコルをサポートできます。例えば、通信プロトコルとして TCP/IP と SSL の両方を有効にするには、以下のようにします。
      db2set -i db2inst1 DB2COMM=SSL,TCPIP
    7. DB2 インスタンスを再始動します。 例えば、以下のようにします。
      db2stop
      db2start

以下の例は、証明書を表示する方法を示しています。 この例では、以下のコマンドによって作成される自己署名証明書を使用します。
gsk8capicmd_64 -cert -create -db "mydbserver.kdb" -pw "mydbserverpw0" 
  -label "myselfsigned" -dn "CN=myhost.mycompany.com,O=myOrganization,
        OU=myOrganizationUnit,L=myLocation,ST=ON,C=CA"
証明書を表示するために、以下のコマンドを発行します。
gsk8capicmd_64 -cert -details -db "mydbserver.kdb" -pw "mydbserverpw0" 
  -label "myselfsigned"
以下のように出力が表示されます。
label : myselfsigned
key size : 1024
version : X509 V3
serial : 96c2db8fa769a09d
issue:CN=myhost.mycompany.com,O=myOrganization,OU=myOrganizationUnit,
   L=myLocation,ST=ON,C=CA
subject:CN=myhost.mycompany.com,O=myOrganization,OU=myOrganizationUnit,
   L=myLocation,ST=ON,C=CA
not before : Tuesday, 24 February 2009 17:11:50 PM
not after : Thursday, 25 February 2010 17:11:50 PM
public Key   
    30 81 9F 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01
    05 00 03 81 8D 00 30 81 89 02 81 81 00 B6 B8 DC
    79 69 62 C9 A5 C1 5C 38 31 53 AB 27 BE 63 C0 DB
    DE C6 BC 2E A4 0D 37 45 95 22 0E 83 32 FE 67 A9
    2F D7 51 FF 40 A3 76 68 B9 E3 34 CB 7D 4A D8 38
    CA B1 6B 32 66 74 8F E2 B8 DA 8F D0 F3 62 04 BE
    C4 FE 80 2A D0 FF 27 72 37 9A 36 1D DB D3 A1 33
    A1 A6 48 33 E9 64 B9 9B 6B DB 08 60 7D 5E 0E 20
    0A 26 AA 62 3A DF D3 78 56 DC 15 DE 9F 0B 91 DD
    3B 1B 2B E2 82 FA 24 FF 81 A3 F7 3F C1 02 03 01
    00 01
public key type : RSA : 1.2.840.113549.1.1.1
finger print : SHA1 :    
    2D C1 93 F8 AC A0 8F E2 C2 05 D8 23 D7 5D 87 E6
    82 3C 47 EC
signature algorithm : SHA1WithRSASignature : 1.2.840.113549.1.1.5
value   
    0E 80 24 98 F6 6E 89 43 76 57 76 7F 82 95 18 6A
    43 A5 81 EC F4 82 1F 1F F2 3F E5 61 67 48 C0 59
    94 17 8E 8F DE 4F 7C 35 0C 5D A7 98 73 2A 34 7D
    1E BA 53 78 A5 E4 31 45 D1 08 86 BE 5E 57 C6 9D
    B5 E7 A7 01 3F 54 01 5E 8F 8B 2F 66 19 24 1E A4
    94 58 B0 D4 40 95 AB 98 C2 EF 1C 5C 4A 29 48 EC
    8C C0 A2 B1 AC 2A E9 3C 14 E5 77 B2 A6 55 A8 21
    CB 59 81 86 79 F0 46 35 F8 FC 99 2D EC D4 B9 EB
Trusted : enabled
サーバー用に (自己署名証明書ではなく) CA 署名付き証明書を取得するには、 証明書署名要求を生成し、 VeriSign のような既知の CA に費用を支払い、証明書に署名してもらいます。 署名付き証明書が送り返されたら、 サーバーの鍵データベース内に受け取ります。以下の例は、証明書を要求して受け取る方法を示しています。 ここでは、 試用版の証明書を使用します。
  1. まず、mydbserver.kdb 用の証明書署名要求 (Certificate Signing Request (CSR)) を作成します。 以下のコマンドによって、指定された鍵データベース内に、新規の RSA 公開鍵/秘密鍵ペアおよび PKCS10 認証要求が 作成されます。CMS 鍵データベースの場合、 認証要求情報は「.rdb」拡張子のファイルに保管されます。 -file オプションで指定するファイルは、 CA に送信する必要のあるファイルです。
    gsk8capicmd_64 -certreq -create -db "mydbserver.kdb" -pw "mydbserverpw0" 
       -label "mycert" -dn "CN=myhost.mycompany.com,
        O=myOrganization,OU=myOrganizationUnit,L=myLocation,ST=ON,C=CA", 
       -file "mycertRequestNew"
    以下のコマンドは、 データベース・サーバー用の認証要求の詳細情報をリストします。
    gsk8capicmd_64 -certreq -details -showOID -db "mydbserver.kdb" 
       -pw "mydbserverpw0" -label "mycert"
    以下のように出力が表示されます。
    label : mycert
    key size : 1024
    subject :    Common Name (CN):
        Type : 2.5.4.3
        Value: myhost.mycompany.com
       Organization (O):
        Type : 2.5.4.10
        Value: myOrganization
       Organizational Unit (OU):
        Type : 2.5.4.11
        Value: myOrganizationUnit
       Locality (L):
        Type : 2.5.6.3 
        Value: myLocation
       State (ST):
        Type : ?
        Value: Ontario
       Country or region (C):
        Type : 2.5.4.6
        Value: CA
    public Key   
        30 81 9F 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01
        05 00 03 81 8D 00 30 81 89 02 81 81 00 9C B4 62
        3C 89 02 4E B0 D8 EA 0B B8 CC 70 63 4A 59 1F 0F
        FD 98 9A 1A 39 94 E3 43 C1 63 7A CD 21 47 57 D9
        86 6F 11 B8 91 08 AC E3 E2 21 32 FE 43 1F 07 C9
        F5 40 6B 3E 4D 56 35 05 62 D6 78 0B E3 97 28 F7
        27 31 A4 05 BE F2 3A 44 6B D8 D1 FF 1E DA 59 63
        E6 49 52 39 45 9C 1E 8E CC DA A1 D9 0F 3A 96 09
        66 5C 89 23 2E EE 31 65 8D 87 8E B9 61 C6 69 BC
        A5 DB EB 03 16 E6 33 85 14 68 BC DD F1 02 03 01
        00 01
    finger print : 
    e0dcde10ded3a46a53c0190e84cc994e
    5d7e4bad
    attributes
    signature algorithm1.2.840.113549.1.1.5
    value   
        4F 06 B4 E3 1F 00 B4 81 90 CC A2 99 4A 02 68 D0
        84 B5 7F 33 0B F0 04 D5 7D 4C 5C CB 5C D3 37 77
        E2 6D 10 17 50 19 D0 7F 61 C7 C8 54 7B DB CD 6F
        47 9F 7E 7E 5A CC 64 20 85 95 A8 5E C7 7D FB F4
        8A 7F 4B 74 6F 0A C6 EF 09 E7 0A 15 17 CC 1D D2
        5D ED 02 A1 BE 1D FC F2 65 EB 0D E2 93 BC 88 4C
        4C 73 76 16 9F 1B 12 3B 7A 01 CF E0 63 97 E8 38
        02 FB 47 EE F2 17 54 66 4D F7 7F 9E 13 DA 76 A2
    認証要求ファイルを表示するには、 次のようにします。
    $ cat mycertRequestNew
    
    -----BEGIN NEW CERTIFICATE REQUEST-----
    MIIBrjCCARcCAQAwbjELMAkGA1UEBhMCQ0ExEDAOBgNVBAgTB09udGFyaW8xEDAO
    BgNVBAcTB01hcmtoYW0xDDAKBgNVBAoTA0lCTTEMMAoGA1UECxMDREIyMR8wHQYD
    VQQDExZnaWxlcmEudG9yb2xhYi5pYm0uY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GN
    ADCBiQKBgQCctGI8iQJOsNjqC7jMcGNKWR8P/ZiaGjmU40PBY3rNIUdX2YZvEbiR
    CKzj4iEy/kMfB8n1QGs+TVY1BWLWeAvjlyj3JzGkBb7yOkRr2NH/HtpZY+ZJUjlF
    nB6OzNqh2Q86lglmXIkjLu4xZY2Hjrlhxmm8pdvrAxbmM4UUaLzd8QIDAQABoAAw
    DQYJKoZIhvcNAQEFBQADgYEATwa04x8AtIGQzKKZSgJo0IS1fzML8ATVfUxcy1zT
    N3fibRAXUBnQf2HHyFR7281vR59+flrMZCCFlahex3379Ip/S3RvCsbvCecKFRfM
    HdJd7QKhvh388mXrDeKTvIhMTHN2Fp8bEjt6Ac/gY5foOAL7R+7yF1RmTfd/nhPa
    dqI=
    -----END NEW CERTIFICATE REQUEST-----
    認証要求を削除する必要がある場合は、 以下のようなコマンドを使用します。
    gsk8capicmd_64 -certreq -delete -db "mydbserver.kdb" -pw "mydbserverpw0" 
       -label "mycert"
  2. 次に、VeriSign の Web サイトを開き登録を行うと、要求ファイルをカット・アンド・ペーストして要求を送信するように 求められます。試用版の場合、 署名付き証明書を含む E メールが受信されます。 E メールには、試用版ルート CA 証明書および試用版中間 CA 証明書をダウンロードするためのリンクも 含まれています。ノートパッドまたは vi を使用して 3 つの 証明書をすべてファイルに保存します。
    • RootCert.arm
    • IntermediateCert.arm
    • MyCertificate.arm
    これら 3 つは信頼のチェーンでつながっています。
    以下のコマンドで、試用版のルート CA 証明書を mydbserver.kdb に 追加します。
    gsk8capicmd_64 -cert -add -db "mydbserver.kdb" -pw "mydbserverpw0" 
       -label "trialRootCACert"  -file RootCert.arm -format ascii
    以下のコマンドで、試用版の中間 CA 証明書を mydbserver.kdb に 追加します。
    gsk8capicmd_64 -cert -add -db "mydbserver.kdb" -pw "mydbserverpw0" 
       -label "trialIntermediateCACert" -file IntermediateCert.arm -format ascii
    以下のコマンドで、試用版の証明書を mydbserver.kdb 内に 受け取ります。
    $ cat SSLCertificate.cer2
                                                                                              
    -----BEGIN CERTIFICATE-----
    MIIFVjCCBD6gAwIBAgIQdOydrySM+J4uUPNzbPHhVjANBgkqhkiG9w0BAQUFADCB
    yzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTAwLgYDVQQL
    EydGb3IgVGVzdCBQdXJwb3NlcyBPbmx5LiAgTm8gYXNzdXJhbmNlcy4xQjBABgNV
    BAsTOVRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vY3Bz
    L3Rlc3RjYSAoYykwNTEtMCsGA1UEAxMkVmVyaVNpZ24gVHJpYWwgU2VjdXJlIFNl
    cnZlciBUZXN0IENBMB4XDTA5MDIyMzAwMDAwMFoXDTA5MDMwOTIzNTk1OVowgaox
    CzAJBgNVBAYTAkNBMRAwDgYDVQQIEwdPbnRhcmlvMRAwDgYDVQQHFAdNYXJraGFt
    MQwwCgYDVQQKFANJQk0xDDAKBgNVBAsUA0RCMjE6MDgGA1UECxQxVGVybXMgb2Yg
    dXNlIGF0IHd3dy52ZXJpc2lnbi5jb20vY3BzL3Rlc3RjYSAoYykwNTEfMB0GA1UE
    AxQWZ2lsZXJhLnRvcm9sYWIuaWJtLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
    gYkCgYEAnLRiPIkCTrDY6gu4zHBjSlkfD/2Ymho5lONDwWN6zSFHV9mGbxG4kQis
    4+IhMv5DHwfJ9UBrPk1WNQVi1ngL45co9ycxpAW+8jpEa9jR/x7aWWPmSVI5RZwe
    jszaodkPOpYJZlyJIy7uMWWNh465YcZpvKXb6wMW5jOFFGi83fECAwEAAaOCAdcw
    ggHTMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMEMGA1UdHwQ8MDowOKA2oDSGMmh0
    dHA6Ly9TVlJTZWN1cmUtY3JsLnZlcmlzaWduLmNvbS9TVlJUcmlhbDIwMDUuY3Js
    MEoGA1UdIARDMEEwPwYKYIZIAYb4RQEHFTAxMC8GCCsGAQUFBwIBFiNodHRwczov
    L3d3dy52ZXJpc2lnbi5jb20vY3BzL3Rlc3RjYTAdBgNVHSUEFjAUBggrBgEFBQcD
    AQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUZiKOgeAxWd0qf6tGxTYCBnAnh1oweAYI
    KwYBBQUHAQEEbDBqMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC52ZXJpc2lnbi5j
    b20wQgYIKwYBBQUHMAKGNmh0dHA6Ly9TVlJTZWN1cmUtYWlhLnZlcmlzaWduLmNv
    bS9TVlJUcmlhbDIwMDUtYWlhLmNlcjBuBggrBgEFBQcBDARiMGChXqBcMFowWDBW
    FglpbWFnZS9naWYwITAfMAcGBSsOAwIaBBRLa7kolgYMu9BSOJsprEsHiyEFGDAm
    FiRodHRwOi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvMS5naWYwDQYJKoZIhvcN
    AQEFBQADggEBAKs1YpIeOAL6mTryIXpYfokkzRdwP5ooDutHhVbRYcPwq9ynOrHM
    3gZolv8th5PpSkZAGTPr3HJZG6HnxRiQjPT88PAADR3SEzVMzQEESHfYToF1qBPZ
    svigphI9eIHcg5IWwv7dyuXtkFGbTCqcvEqJiT3UHhubgMfoTuTGayhNoGt75FGU
    h4kSJz3af6MNuGmQLs4wzJTepU7srlhGV1C1ujTCydax2BiWfWwO4YaFcckvHxbR
    6I7vVj1PTC2RO8n5qcWJYmGU0PG3d58hJETD4E8tAReh21ShBWDgn4+e0k1XtQ8K
    lB66QpsFYGTLtGyd/4w4BAgq/QLmcs+mpjc=
    -----END CERTIFICATE-----
    
    gsk8capicmd_64 -cert -receive -file MyCertificate.arm -db "mydbserver.kdb" 
       -pw "mydbserverp -format ascii 
    以下のコマンドで、mydbserver.kdb 内の すべての証明書をリストします。
    gsk8capicmd_64 -cert -list all -db "mydbserver.kdb" -pw "mydbserverpw0"
    
    certificates found
    * default, - personal, ! trusted
    -!      mycert
    !       trialIntermediateCACert
    !       trialRootCACert
    -!      myselfsigned
    db2 update dbm cfg using SSL_SVR_LABEL mycert  
注: