在使用金鑰儲存庫的非 Java Db2 用戶端中配置 TLS 支援

您可以配置 Db2 資料庫用戶端 (例如 CLI、CLP 及 .Net Data Provider 用戶端) ,以支援傳輸層安全 (TLS) 與 Db2 伺服器進行通訊。

關於此作業

此作業顯示如何僅使用簽署憑證在非 Java Db2® 用戶端中配置 TLS 支援。 如需如何僅使用憑證檔來配置 TLS 支援的相關資訊,請參閱 使用憑證檔在非 Java Db2 用戶端中配置 TLS 支援

程序

  1. 取得 Db2 伺服器的簽署憑證:
    • 如果伺服器憑證是自簽憑證,請取得 擷取以配送至用戶端的憑證。
    • 如果伺服器憑證由 3rd 憑證管理中心 (CA) 簽署,請取得 CA 的主要憑證。 這可以透過詢問 CA 來完成,且通常在簽署伺服器憑證時提供。
      附註: 針對 CA 簽章伺服器憑證配置 TLS 支援時,必須在用戶端上使用主要憑證。
  2. 在可使用 gsk8capicmd_64 的電腦上,從伺服器憑證建立金鑰儲存庫。
    這可以在伺服器電腦上完成,也可以在 GSKit 與用戶端分開安裝的用戶端電腦上完成。 如需相關資訊,請參閱 Global Security Kit 安裝簡介
    gsk8capicmd_64 -keydb -create -db "client.p12" -pw "myClientPassw0rdpw0" -stash 
    其中 -stash 會在金鑰資料庫的相同路徑中建立一個隱藏檔,副檔名為 .sth。 在連接時,GSKit 會使用隱藏檔來取得金鑰資料庫的密碼。
  3. 將憑證新增至用戶端金鑰儲存庫:
    gsk8capicmd_64 -cert -add -db "client.p12" -stashed -label "myServerCert" -file "server.pem" -format ascii
  4. 將金鑰資料庫和隱藏檔複製到用戶端電腦。
    請確定用戶端具有適當的檔案許可權,可同時讀取金鑰資料庫和隱藏檔。 若要配置用戶端應用程式,請設定適當的連線字串或配置參數,如適用於您用戶端的範例所示。

範例

範例 1: 使用 Db2 型錄從 CLP 或內嵌式 SQL 應用程式連接至資料庫:
首先,將節點及資料庫編目,以便用戶端應用程式可以建立與它們的 TLS 連線:
catalog TCPIP NODE mynode  REMOTE  127.0.0.1  SERVER 50001  SECURITY SSL 
catalog DATABASE sample  AS myssldb  AT NODE mynode
接下來,使用 ssl_clnt_keydbssl_clnt_stash 配置參數來指定用戶端金鑰資料庫和隱藏檔。 您將 ssl_clnt_keydb 配置參數設為金鑰資料庫檔的完整路徑 (.p12) ,並將 ssl_clnt_stash 配置參數設為隱藏檔的完整路徑:
db2 update dbm cfg using SSL_CLNT_KEYDB /home/db2inst1/client.p12 SSL_CLNT_STASH /home/db2inst1/client.sth

如果 ssl_clnt_keydbssl_clnt_stash 配置參數是空值 (取消設定) ,連線會失敗並傳回錯誤 SQL10013N ,記號為 GSKit 錯誤 :GSKit_return_code。

從 CLP 用戶端連接至伺服器:
db2 connect to myssldb user user1 using password
您也可以使用下列陳述式,從內嵌式 SQL 應用程式進行連接:
Strcpy(dbAlias,"myssldb"); EXEC SQL CONNECT TO :dbAlias USER :user USING :pswd; 

範例 2: 使用連線字串從 CLI/ODBC 應用程式連接至資料庫:

使用包含 SECURITY=SSLSSLClientKeystoredbSSLClientStash 關鍵字的連線字串來呼叫 SQLDriverConnect 函數 t。 例如:
"Database=sampledb; Protocol=tcpip; Hostname= myhost; Servicename=50001; 
Security=ssl; SSLClientKeystoredb=/home/db2inst1/client.p12;
SSLClientKeystash=/home/db2inst1/client.sth;"

範例 3: 使用 db2cli.ini 配置檔,從 CLI/ODBC 應用程式連接至資料庫:

使用 db2cli.ini 檔案來設定所需的連線參數:
[sampledb]
Database=sampledb
Protocol=tcpip
Hostname=myhost
Servicename=50001
Security=ssl
SSLClientKeystoredb=/home/db2inst1/client.p12
SSLClientKeystash=/home/db2inst1/client.sth

範例 4: 使用 SQLDriverConnect 函數 (CLI) 從 CLI/ODBC 應用程式連接至資料庫:

使用 FileDSN CLI/ODBC 關鍵字,以識別從中建置連線字串以連接至 Db2 伺服器的 DSN 檔案。 您可以在 SQLDriverConnect 函數的連線字串中指定 FileDSN 的值。

下列範例顯示如何寫入 DSN 檔案:
[ODBC]
DRIVER=IBM DB2 ODBC DRIVER – DB2COPY1
UID=user1
AUTHENTICATION=SERVER
PORT=50001
HOSTNAME=myhost
PROTOCOL=TCPIP
DATABASE=SAMPLEDB
SECURITY=SSL 
SSLClientKeystoredb=/home/db2inst1/client.p12
SSLClientKeystash=/home/db2inst1/client.sth

範例 5: 使用 db2dsdriver.cfg 配置檔從 CLI/ODBC 應用程式或內嵌式 SQL 應用程式連接至資料庫。

如果您是執行 Db2 11.5.7 或更新版本,則可以在 db2dsdriver.cfg 配置檔中包括 SSLServerCertificate 關鍵字,以從內嵌式 SQL 應用程式進行連接。

下列範例顯示如何撰寫 db2dsdriver.cfg 配置檔:
<dsn alias="sample" host="myhost.ibm.com" name="sample" port="50001">
   <parameter name="SSLClientKeystoredb" value="/home/db2inst1/client.p12"/>
   <parameter name="SSLClientKeystash" value="/home/db2inst1/client.sth"/>
   <parameter name="SecurityTransportMode" value="SSL"/>
</dsn>