GSK SSL 配置
Secure Sockets Layer (SSL) 协议是一种加密协议,可为网络上的数据通信提供隐私和安全保障。它使用加密提供可靠的端到端、安全且经过验证的 TCP/IP 连接。 SSL 使用数字证书为加密、服务器验证以及客户机验证(可选)提供密钥交换服务。
数字证书可用于唯一标识某个实体。从本质上说,它们是受信任方发布的电子 ID 卡。数字证书有两种用途:建立所有者的身份,以及让所有者公钥可用。数字证书由受信任机构(认证机构或 CA )发布,并且限制了使用期限。当它到达有效期后,必须更换数字证书。
数字证书包含关于证书所有者的身份以及认证机构的信息,包括:
· 所有者的可辨别名称
· 所有者的公钥
· 数字证书的发布日期
· 数字证书的失效日期
· 发布机构的名称(即发布 CA 的名称)
· 发布机构的数字签名
需要数字证书才能运行 SSL 。要获取数字证书,使用 iKeyman (或 GSKCapiCmd )生成一个请求并将请求提交给某 CA 。 CA 将验证你的身份并发送一个数字证书给您。数字证书存储在密钥数据库中(也称作密钥库)。我们来看看如何使用 GSKCapiCmd 创建证书请求:
1. 使用 gsk7capicmd 命令生成证书请求,如清单 1 所示:
gsk7capicmd -certreq -create -db demo.kdb -pw snoopy -label demolabel
-dn "CN=lenexa,C=US" -file demo.cert
2.
· demo.kdb 是创建证书请求的密钥数据库(或密钥库)的名称
· snoopy 是密钥数据库的密码
· demolabel 是密钥数据库中的证书的唯一名称
· demo.cert 是将用于存放证书请求的文件
有关创建密钥数据库的详细步骤以及命令行选项的完整列表,请参阅 GSKCapiCmd 用户指南。
3. 确认证书请求已成功创建:
a. 确保密钥数据库记录了请求。清单 2 中的命令应该可列出之前创建的标签:
b.
gsk7capicmd -certreq -list -db demo.kdb -pw snoopy
c. 查看证书请求文件的内容:
d.
gsk7capicmd -certreq -details -db demo.kdb -pw snoopy -label demolabel
e.
4. 将新创建的文件发送给认证机构 (CA) 。
通常需要两到三周时间才能从从知名 CA 获得证书。在等待证书发布的同时,您可以创建一个自签名的数字证书来测试客户机与服务器之间的 SSL 会话。自签名的数字证书包含所有者的名称、所有者的公钥以及所有者自己的针对这些字段的签名。自签名数字证书用于测试目的,或者在您自己充当私有 Web 网络的 CA 时使用。
SSL 将使用对称密钥(加密密钥)算法对在客户机与服务器之间传递的数据进行加密。对称密钥(公钥)算法用于交换在对称算法中使用的加密密钥,以及用于数字签名。对称算法将使用服务器的数字证书中的公钥。借助服务器的数字证书,客户机还可以验证服务器的身份。
在 SSL 会话初期,会话双方将执行一次 SSL 握手。此次握手将生成会话的加密参数。关于 SSL 握手处理过程的简要概述如下图所示。
GSK SSL 配置
Secure Sockets Layer (SSL) 协议是一种加密协议,可为网络上的数据通信提供隐私和安全保障。它使用加密提供可靠的端到端、安全且经过验证的 TCP/IP 连接。 SSL 使用数字证书为加密、服务器验证以及客户机验证(可选)提供密钥交换服务。
数字证书可用于唯一标识某个实体。从本质上说,它们是受信任方发布的电子 ID 卡。数字证书有两种用途:建立所有者的身份,以及让所有者公钥可用。数字证书由受信任机构(认证机构或 CA )发布,并且限制了使用期限。当它到达有效期后,必须更换数字证书。
数字证书包含关于证书所有者的身份以及认证机构的信息,包括:
· 所有者的可辨别名称
· 所有者的公钥
· 数字证书的发布日期
· 数字证书的失效日期
· 发布机构的名称(即发布 CA 的名称)
· 发布机构的数字签名
需要数字证书才能运行 SSL 。要获取数字证书,使用 iKeyman (或 GSKCapiCmd )生成一个请求并将请求提交给某 CA 。 CA 将验证你的身份并发送一个数字证书给您。数字证书存储在密钥数据库中(也称作密钥库)。我们来看看如何使用 GSKCapiCmd 创建证书请求:
1. 使用 gsk7capicmd 命令生成证书请求,如清单 1 所示:
gsk7capicmd -certreq -create -db demo.kdb -pw snoopy -label demolabel
-dn "CN=lenexa,C=US" -file demo.cert
2.
· demo.kdb 是创建证书请求的密钥数据库(或密钥库)的名称
· snoopy 是密钥数据库的密码
· demolabel 是密钥数据库中的证书的唯一名称
· demo.cert 是将用于存放证书请求的文件
有关创建密钥数据库的详细步骤以及命令行选项的完整列表,请参阅 GSKCapiCmd 用户指南。
3. 确认证书请求已成功创建:
a. 确保密钥数据库记录了请求。清单 2 中的命令应该可列出之前创建的标签:
b.
gsk7capicmd -certreq -list -db demo.kdb -pw snoopy
c. 查看证书请求文件的内容:
d.
gsk7capicmd -certreq -details -db demo.kdb -pw snoopy -label demolabel
e.
4. 将新创建的文件发送给认证机构 (CA) 。
通常需要两到三周时间才能从从知名 CA 获得证书。在等待证书发布的同时,您可以创建一个自签名的数字证书来测试客户机与服务器之间的 SSL 会话。自签名的数字证书包含所有者的名称、所有者的公钥以及所有者自己的针对这些字段的签名。自签名数字证书用于测试目的,或者在您自己充当私有 Web 网络的 CA 时使用。
SSL 将使用对称密钥(加密密钥)算法对在客户机与服务器之间传递的数据进行加密。对称密钥(公钥)算法用于交换在对称算法中使用的加密密钥,以及用于数字签名。对称算法将使用服务器的数字证书中的公钥。借助服务器的数字证书,客户机还可以验证服务器的身份。
在 SSL 会话初期,会话双方将执行一次 SSL 握手。此次握手将生成会话的加密参数。关于 SSL 握手处理过程的简要概述如下图所示。

现在,我们介绍如何通过 “ 自签名证书 ” 来配置 IDS 使用 SSL :
1. 设置 ONCONFIG :
a.
根据需要配置服务器名称和服务器别名。举例来说,配置
lenexa_on
使用普通
TCP
、配置
menlo_on
使用
SSL
并配置
portland_on
使用
DRDA
客户机的
SSL
:
b.
DBSERVERNAME lenexa_on
DBSERVERALIASES menlo_on,portland_on
c.
SSL
加密和加密操作将针对
Encrypt VP
执行。根据系统的负载,使用
VPCLASS
配置参数配置
Encrypt VP
(如清单
5
所示)。如果未配置
VPCLASS
,则
IDS
会默认启动一个
Encrypt VP
。
d.
VPCLASS encrypt,num=3
e.
根据系统的负载,使用
NETTYPE
配置参数配置
SSL
连接的轮询线程(如清单
6
所示)。如果未配置轮询线程,则
IDS
将启动一个轮询线程。
NETTYPEf.
NETTYPE socssl,3,50,NET
g. 为密钥库中的数字证书配置标签。如果未配置标签,则服务器会使用为 SSL 通信使用密钥库中的默认标签。
h.
SSL_KEYSTORE_LABEL ssltestlabel
2. 配置或创建 $GBASEDBTDIR/etc/conssl.cfg 文件。
只有 dbacces 这样的 SQLI 客户机才需要此文件,其中包含客户机密钥库的完全限定文件名和客户机存储文件的完全限定文件名。
3.
SSL_KEYSTORE_FILE /u/keystores/clientdb.kdb
SSL_KEYSTORE_STH /u/keystores/clikeydb.sth
4.
如果不存在 conssl.cfg 或者未配置上述任何参数,则客户机密钥库和存储文件默认为 $GBASEDBTDIR/etc/client.kdb 和 $GBASEDBTDIR/etc/client.sth 。
5. 设置 sqlhosts 。
根据当前的示例, sqlhosts 将提供关于 lenexa_on 、 menlo_on 和 portland_on 的条目。 drsocssl 将用于支持与 DRDA 客户机通信,并且 onsocssl/olsocssl 将用于支持与 SQLI 客户机以及 ISTAR 、 HDR 、 ER 和 SDS/RSS 中的服务器之间的 SSL 通信。
6.
lenexa_on onsoctcp pinchy lenexa_serv
menlo_on onsocssl pinchy menlo_serv
portland_on drsocssl pinchy portland_serv
7.
如果 conssl.cfg 不存在或者未配置上述任何参数,则客户机密钥库和存储文件默认将为: $GBASEDBTDIR/etc/client.kdb 和 $GBASEDBTDIR/etc/client.sth 。
8. 创建服务器密钥库。 服务器密钥库和服务器存储文件的位置和名称是预定义的:
$GBASEDBTDIR/ssl/servername.kdb
$GBASEDBTDIR/ssl/servername.sth
9.
其中, servername 是 DBSERVERNAME 配置参数的值。
10.
清单 11 显示了使用非 Java 命令行工具创建密钥库和自签名测试证书的命令 (gsk7capicmd/gsk7capicmd_64 ):
11.
gsk7capicmd -keydb -create -db lenexa_on.kdb -pw snoopy -type cms -stash
gsk7capicmd -cert -create -db lenexa_on.kdb -pw snoopy -label ssltestlabel
-dn "CN=lenexa,C=US" -size 1024 -default_cert yes
a. 将证书导出为 ASCII 文件(用于导入到客户机密钥库中)。清单 12 显示了实现此操作的命令:
b.
gsk7capicmd -cert -extract -db lenexa_on.kdb -format ascii -label ssltestlabel
-pw snoopy -target ssltestlabel.cert
c. 更改密钥库的权限。
d. 将文件存储到 600/GBASEDBT:gbasedbt 。
1. 创建客户机密钥库。
清单 13 显示了使用非 Java 命令行工具创建密钥库并导入服务器证书的命令 (gsk7capicmd/gsk7capicmd_64 ):
2.
gsk7capicmd -keydb -create -db clikeydb.kdb -pw snoopy -type cms -stash
gsk7capicmd -cert -add -db clikeydb.kdb -pw snoopy -label ssltestlabel
-file ssltestlabel.cert -format ascii
3.
a. 更改密钥库权限。
b. 将文件存储到 664/gbasedbt:gbasedbt 。(在包含 CSDK 或 I-Connect 的 GBASEDBTDIR 中,您应该有公共读取权限;如果 GBASEDBTDIR 只包含 IDS ,那么您可以使用 600 或者 640 权限。)
1. 初始化服务器:
a. 将服务器和客户机密钥库移至指定位置(如之前步骤所述)。
b. 初始化服务器。客户机与服务器之间的所有通信都将使用 SSL 协议进行加密。
官网:
现在,我们介绍如何通过 “ 自签名证书 ” 来配置 IDS 使用 SSL :
1. 设置 ONCONFIG :
a.
根据需要配置服务器名称和服务器别名。举例来说,配置
lenexa_on
使用普通
TCP
、配置
menlo_on
使用
SSL
并配置
portland_on
使用
DRDA
客户机的
SSL
:
b.
DBSERVERNAME lenexa_on
DBSERVERALIASES menlo_on,portland_on
c.
SSL
加密和加密操作将针对
Encrypt VP
执行。根据系统的负载,使用
VPCLASS
配置参数配置
Encrypt VP
(如清单
5
所示)。如果未配置
VPCLASS
,则
IDS
会默认启动一个
Encrypt VP
。
d.
VPCLASS encrypt,num=3
e.
根据系统的负载,使用
NETTYPE
配置参数配置
SSL
连接的轮询线程(如清单
6
所示)。如果未配置轮询线程,则
IDS
将启动一个轮询线程。
NETTYPEf.
NETTYPE socssl,3,50,NET
g. 为密钥库中的数字证书配置标签。如果未配置标签,则服务器会使用为 SSL 通信使用密钥库中的默认标签。
h.
SSL_KEYSTORE_LABEL ssltestlabel
2. 配置或创建 $GBASEDBTDIR/etc/conssl.cfg 文件。
只有 dbacces 这样的 SQLI 客户机才需要此文件,其中包含客户机密钥库的完全限定文件名和客户机存储文件的完全限定文件名。
3.
SSL_KEYSTORE_FILE /u/keystores/clientdb.kdb
SSL_KEYSTORE_STH /u/keystores/clikeydb.sth
4.
如果不存在 conssl.cfg 或者未配置上述任何参数,则客户机密钥库和存储文件默认为 $GBASEDBTDIR/etc/client.kdb 和 $GBASEDBTDIR/etc/client.sth 。
5. 设置 sqlhosts 。
根据当前的示例, sqlhosts 将提供关于 lenexa_on 、 menlo_on 和 portland_on 的条目。 drsocssl 将用于支持与 DRDA 客户机通信,并且 onsocssl/olsocssl 将用于支持与 SQLI 客户机以及 ISTAR 、 HDR 、 ER 和 SDS/RSS 中的服务器之间的 SSL 通信。
6.
lenexa_on onsoctcp pinchy lenexa_serv
menlo_on onsocssl pinchy menlo_serv
portland_on drsocssl pinchy portland_serv
7.
如果 conssl.cfg 不存在或者未配置上述任何参数,则客户机密钥库和存储文件默认将为: $GBASEDBTDIR/etc/client.kdb 和 $GBASEDBTDIR/etc/client.sth 。
8. 创建服务器密钥库。 服务器密钥库和服务器存储文件的位置和名称是预定义的:
$GBASEDBTDIR/ssl/servername.kdb
$GBASEDBTDIR/ssl/servername.sth
9.
其中, servername 是 DBSERVERNAME 配置参数的值。
10.
清单 11 显示了使用非 Java 命令行工具创建密钥库和自签名测试证书的命令 (gsk7capicmd/gsk7capicmd_64 ):
11.
gsk7capicmd -keydb -create -db lenexa_on.kdb -pw snoopy -type cms -stash
gsk7capicmd -cert -create -db lenexa_on.kdb -pw snoopy -label ssltestlabel
-dn "CN=lenexa,C=US" -size 1024 -default_cert yes
a. 将证书导出为 ASCII 文件(用于导入到客户机密钥库中)。清单 12 显示了实现此操作的命令:
b.
gsk7capicmd -cert -extract -db lenexa_on.kdb -format ascii -label ssltestlabel
-pw snoopy -target ssltestlabel.cert
c. 更改密钥库的权限。
d. 将文件存储到 600/GBASEDBT:gbasedbt 。
1. 创建客户机密钥库。
清单 13 显示了使用非 Java 命令行工具创建密钥库并导入服务器证书的命令 (gsk7capicmd/gsk7capicmd_64 ):
2.
gsk7capicmd -keydb -create -db clikeydb.kdb -pw snoopy -type cms -stash
gsk7capicmd -cert -add -db clikeydb.kdb -pw snoopy -label ssltestlabel
-file ssltestlabel.cert -format ascii
3.
a. 更改密钥库权限。
b. 将文件存储到 664/gbasedbt:gbasedbt 。(在包含 CSDK 或 I-Connect 的 GBASEDBTDIR 中,您应该有公共读取权限;如果 GBASEDBTDIR 只包含 IDS ,那么您可以使用 600 或者 640 权限。)
1. 初始化服务器:
a. 将服务器和客户机密钥库移至指定位置(如之前步骤所述)。
b. 初始化服务器。客户机与服务器之间的所有通信都将使用 SSL 协议进行加密。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69980677/viewspace-2764235/ ,如需转载,请注明出处,否则将追究法律责任。