在 Db2 实例中配置 TLS 支持
Db2 数据库系统支持 TLS (传输层安全性),这意味着同时支持 TLS 的 Db2 客户机应用程序可以使用 TLS 套接字连接到 Db2 数据库。 CLI , CLP 和 .Net Data Provider 客户机应用程序以及使用 IBM® Data Server Driver for JDBC and SQLJ (类型 4 连接) 的应用程序支持 TLS。
准备工作
此过程帮助您配置客户机应用程序以使用 TLS与 Db2 进行通信。
在配置 TLS 支持之前,请完成以下先决条件步骤:- 确保未激活连接集中器。 当连接集中器正在运行时,未在 Db2 实例中启用 TLS 支持。
通过运行 GET DATABASE MANAGER CONFIGURATION 命令来确定是否激活连接集中器。 如果将配置参数 max_connections 的值设置为大于 max_coordagents 的值,那么会激活连接集中器。
关于本任务
TLS 通信始终处于 FIPS 方式。
- Db2 Connect 的 TLS 支持
- 如果要在中间服务器计算机上使用 Db2 Connect for System i ® , Db2 Connect for System z ® 或 Db2 Enterprise Server Edition 将 Db2 客户机连接到主机或 System i 数据库,请在以下任何配置中提供 TLS 支持:
- 在客户机与 DB2 Connect 服务器之间
- 在 DB2 Connect 服务器与服务器之间
- 同时在客户机与 DB2 Connect 服务器之间以及 DB2 Connect 服务器与服务器之间
注: 要在配置中的所有路径上启用 TLS 支持,每个客户机或服务器都必须满足 TLS 支持的所有需求。 例如,如果开启了 Db2 Connect 连接集中器,那么针对 Db2 Connect 服务器的入站请求无法使用 TLS。 但是,目标服务器的出站请求可以使用 TLS。
过程
- 将 ssl_svr_keydb 配置参数设置为密钥库的标准路径 (请参阅 使用 GSKit 创建密钥库)。例如,
db2 update dbm cfg using SSL_SVR_KEYDB /home/test/sqllib/security/keystore/key.kdb如果 ssl_svr_keydb 为空 (未设置) ,那么不会启用 TLS 支持。
- 将 ssl_svr_stash 配置参数设置为隐藏文件的标准路径。例如,
db2 update dbm cfg using SSL_SVR_STASH /home/test/sqllib/security/keystore/mydbserver.sth如果 ssl_svr_stash 为空 (未设置) ,那么不会启用 TLS 支持。
- 将 ssl_svr_label 配置参数设置为服务器的数字证书的标签。 如果未设置 ssl_svr_label,那么会使用密钥数据库中的缺省证书。 如果密钥数据库中没有缺省证书,那么不会启用 TLS 。
例如
db2 update dbm cfg using SSL_SVR_LABEL myselfsigned,其中 myselfsigned 是样本标签。 - 将 ssl_svcename 配置参数设置为 Db2 数据库系统应该侦听 TLS 连接的端口。
如果同时启用了 TCP/IP 和 TLS ( DB2COMM 注册表变量设置为 "TCPIP , SSL") ,那么必须将 ssl_svcename 设置为与设置 svcename 的端口不同的端口。 svcename 配置参数设置 DB2 数据库系统进行侦听以获取 TCP/IP 连接的端口。 如果将 ssl_svcename 设置为与 svcename相同的端口,那么不会启用 TCP/IP 或 TLS 。
如果 ssl_svcename 为空 (未设置) ,那么不会启用 TLS 支持。注: 为避免与 HTTPS 发生潜在冲突,请勿将端口 443 用于 ssl_svcename。注: 在 HADR 环境中,请勿将主数据库系统或备用数据库系统上的 hadr_local_svc 设置为与为 ssl_svcename设置的值相同的值。 另外,请不要将 hadr_local_svc 设置为 svcename 的值或 svcename 的值加一。注: 当 DB2COMM 注册表变量设置为 "TCPIP , SSL" 并且未正确启用 TCPIP 支持时,将返回错误 SQL5043N ,并且不会启用 TLS 支持。 例如,如果 svcename 配置参数设置为 null,那么表明 TCP/IP 未正确启用。 - (可选)如果要指定服务器可以使用哪些密码套件,那么设置 ssl_cipherspecs 配置参数。
如果将 ssl_cipherspecs 保留为 null(未设置),那么 GSKit 可使用同时受客户机和服务器支持的最强可用密码套件。 有关可用的密码套件的信息,请参阅 支持的密码套件 。
- 将值 TLS 添加到 DB2COMM 注册表变量。例如,
其中 db2inst1 是 DB2 实例名称。db2set -i db2inst1 DB2COMM=SSL数据库管理器可以同时支持多个协议。 例如,要同时启用 TCP/IP 和 TLS 通信协议:db2set -i db2inst1 DB2COMM=SSL,TCPIP - 重新启动 Db2 实例。例如,
db2stop db2start