使用密钥库在非 Java Db2 客户机中配置 TLS 支持

您可以配置 Db2 数据库客户机 (例如 CLI , CLP 和 .Net 数据提供程序客户机) ,以支持传输层安全性 (TLS) 与 Db2 服务器进行通信。

关于本任务

此任务向您展示如何仅使用签名证书在非 Java Db2 客户端中配置 TLS 支持。 有关如何仅使用证书文件配置 TLS 支持的信息,请参阅 使用证书文件在非 Java Db2 客户机中配置 TLS 支持

过程

  1. 获取 Db2 服务器的签名证书:
    • 如果服务器证书是自签名证书,请获取 抽取以分发到客户机的证书。
    • 如果服务器证书由第三方证书颁发机构(CA)签署,请获取 CA 的根证书。 这可以通过询问 CA 来完成,并且通常在签署服务器证书时提供。
      注: 为 CA 签名的服务器证书配置 TLS 支持时,必须在客户机上使用根证书。
  2. gsk8capicmd_64 可用的计算机上,从服务器证书创建密钥库。
    可以在服务器计算机上执行此操作,也可以在独立于客户机安装了 IBM Global Security Kit (GSKit) 的客户端计算机上执行此操作。 有关更多信息,请参阅 Global Security Kit 安装简介
    gsk8capicmd_64 -keydb -create -db "client.p12" -pw "myClientPassw0rdpw0" -stash 
    其中 -stash 在与密钥数据库相同的路径上创建文件扩展名为 .sth的隐藏文件。 在连接时, IBM Global Security Kit (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 ,带有令牌 IBM Global Security Kit (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 关键字来标识 DSN 文件,根据该文件构建连接字符串以连接到 Db2 服务器。 在 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>