ITPub博客

首页 > 数据库 > 国内数据库 > 南大通用GBase 8s SSL 安全配置与故障诊断-1

南大通用GBase 8s SSL 安全配置与故障诊断-1

原创 国内数据库 作者:DMD_202007 时间:2021-03-22 15:54:06 0 删除 编辑

南大通用GBase 8s SSL 安全配置与故障诊断-1

GSK SSL 配置

Secure Sockets Layer (SSL) 协议是一种加密协议,可为网络上的数据通信提供隐私和安全保障。它使用加密提供可靠的端到端、安全且经过验证的 TCP/IP 连接。 SSL 使用数字证书为加密、服务器验证以及客户机验证(可选)提供密钥交换服务。

数字证书

数字证书可用于唯一标识某个实体。从本质上说,它们是受信任方发布的电子 ID 卡。数字证书有两种用途:建立所有者的身份,以及让所有者公钥可用。数字证书由受信任机构(认证机构或 CA )发布,并且限制了使用期限。当它到达有效期后,必须更换数字证书。

数字证书包含关于证书所有者的身份以及认证机构的信息,包括:

·        所有者的可辨别名称

·        所有者的公钥

·        数字证书的发布日期

·        数字证书的失效日期

·        发布机构的名称(即发布 CA 的名称)

·        发布机构的数字签名

GSK 如何请求数字证书

需要数字证书才能运行 SSL 。要获取数字证书,使用 iKeyman (或 GSKCapiCmd )生成一个请求并将请求提交给某 CA 。 CA 将验证你的身份并发送一个数字证书给您。数字证书存储在密钥数据库中(也称作密钥库)。我们来看看如何使用 GSKCapiCmd 创建证书请求:

1.     使用  gsk7capicmd   命令生成证书请求,如清单 1 所示:

清单 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 中的命令应该可列出之前创建的标签:

清单 2. 列出证书请求

b.      

gsk7capicmd -certreq -list -db demo.kdb -pw snoopy

c.      查看证书请求文件的内容:

清单 3. 查看请求的内容

d.      

gsk7capicmd -certreq -details -db demo.kdb -pw snoopy -label demolabel

e.      

4.     将新创建的文件发送给认证机构 (CA) 。

通常需要两到三周时间才能从从知名 CA 获得证书。在等待证书发布的同时,您可以创建一个自签名的数字证书来测试客户机与服务器之间的 SSL 会话。自签名的数字证书包含所有者的名称、所有者的公钥以及所有者自己的针对这些字段的签名。自签名数字证书用于测试目的,或者在您自己充当私有 Web 网络的 CA 时使用。

回页首

SSL 的工作原理

SSL 将使用对称密钥(加密密钥)算法对在客户机与服务器之间传递的数据进行加密。对称密钥(公钥)算法用于交换在对称算法中使用的加密密钥,以及用于数字签名。对称算法将使用服务器的数字证书中的公钥。借助服务器的数字证书,客户机还可以验证服务器的身份。

在 SSL 会话初期,会话双方将执行一次 SSL 握手。此次握手将生成会话的加密参数。关于 SSL 握手处理过程的简要概述如下图所示。

图 1. SSL 握手

南大通用GBase 8s SSL 安全配置与故障诊断-1

GSK SSL 配置

Secure Sockets Layer (SSL) 协议是一种加密协议,可为网络上的数据通信提供隐私和安全保障。它使用加密提供可靠的端到端、安全且经过验证的 TCP/IP 连接。 SSL 使用数字证书为加密、服务器验证以及客户机验证(可选)提供密钥交换服务。

数字证书

数字证书可用于唯一标识某个实体。从本质上说,它们是受信任方发布的电子 ID 卡。数字证书有两种用途:建立所有者的身份,以及让所有者公钥可用。数字证书由受信任机构(认证机构或 CA )发布,并且限制了使用期限。当它到达有效期后,必须更换数字证书。

数字证书包含关于证书所有者的身份以及认证机构的信息,包括:

·        所有者的可辨别名称

·        所有者的公钥

·        数字证书的发布日期

·        数字证书的失效日期

·        发布机构的名称(即发布 CA 的名称)

·        发布机构的数字签名

GSK 如何请求数字证书

需要数字证书才能运行 SSL 。要获取数字证书,使用 iKeyman (或 GSKCapiCmd )生成一个请求并将请求提交给某 CA 。 CA 将验证你的身份并发送一个数字证书给您。数字证书存储在密钥数据库中(也称作密钥库)。我们来看看如何使用 GSKCapiCmd 创建证书请求:

1.     使用  gsk7capicmd   命令生成证书请求,如清单 1 所示:

清单 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 中的命令应该可列出之前创建的标签:

清单 2. 列出证书请求

b.      

gsk7capicmd -certreq -list -db demo.kdb -pw snoopy

c.      查看证书请求文件的内容:

清单 3. 查看请求的内容

d.      

gsk7capicmd -certreq -details -db demo.kdb -pw snoopy -label demolabel

e.      

4.     将新创建的文件发送给认证机构 (CA) 。

通常需要两到三周时间才能从从知名 CA 获得证书。在等待证书发布的同时,您可以创建一个自签名的数字证书来测试客户机与服务器之间的 SSL 会话。自签名的数字证书包含所有者的名称、所有者的公钥以及所有者自己的针对这些字段的签名。自签名数字证书用于测试目的,或者在您自己充当私有 Web 网络的 CA 时使用。

回页首

SSL 的工作原理

SSL 将使用对称密钥(加密密钥)算法对在客户机与服务器之间传递的数据进行加密。对称密钥(公钥)算法用于交换在对称算法中使用的加密密钥,以及用于数字签名。对称算法将使用服务器的数字证书中的公钥。借助服务器的数字证书,客户机还可以验证服务器的身份。

在 SSL 会话初期,会话双方将执行一次 SSL 握手。此次握手将生成会话的加密参数。关于 SSL 握手处理过程的简要概述如下图所示。

图 1. SSL 握手



配置 IDS 使用GSK SSL 的步骤

现在,我们介绍如何通过 “ 自签名证书 ” 来配置 IDS 使用 SSL :

1.     设置 ONCONFIG :

a.     根据需要配置服务器名称和服务器别名。举例来说,配置   lenexa_on   使用普通 TCP 、配置   menlo_on   使用 SSL 并配置   portland_on 使用 DRDA 客户机的 SSL :

清单 4. 设置 DBSERVERNAME 和 DBSERVERALIASES

b.      

DBSERVERNAME lenexa_on

DBSERVERALIASES menlo_on,portland_on

c.      SSL 加密和加密操作将针对 Encrypt VP 执行。根据系统的负载,使用   VPCLASS   配置参数配置 Encrypt VP (如清单 5 所示)。如果未配置   VPCLASS ,则 IDS 会默认启动一个 Encrypt VP 。

清单 5. 设置 VPCLASS

d.      

VPCLASS encrypt,num=3

e.     根据系统的负载,使用   NETTYPE   配置参数配置 SSL 连接的轮询线程(如清单 6 所示)。如果未配置轮询线程,则 IDS 将启动一个轮询线程。

清单 6. 设置  NETTYPE

f.        

NETTYPE socssl,3,50,NET

g.     为密钥库中的数字证书配置标签。如果未配置标签,则服务器会使用为 SSL 通信使用密钥库中的默认标签。

清单 7. 为服务器的数字证书配置标签

h.      

SSL_KEYSTORE_LABEL ssltestlabel

2.     配置或创建 $GBASEDBTDIR/etc/conssl.cfg 文件。

只有 dbacces 这样的 SQLI 客户机才需要此文件,其中包含客户机密钥库的完全限定文件名和客户机存储文件的完全限定文件名。

3.      

清单 8. 配置 CONSSL.cfg 文件
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.      

清单 9. 配置 sqlhosts 文件
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.     创建服务器密钥库。 服务器密钥库和服务器存储文件的位置和名称是预定义的:

清单 10. 服务器密钥库和存储文件的名称
$GBASEDBTDIR/ssl/servername.kdb

$GBASEDBTDIR/ssl/servername.sth

9.      

其中, servername   是  DBSERVERNAME   配置参数的值。

10.  

清单 11 显示了使用非 Java 命令行工具创建密钥库和自签名测试证书的命令 (gsk7capicmd/gsk7capicmd_64 ):

11.  

清单 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 显示了实现此操作的命令:

清单 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.      

清单 13. 用于创建客户机密钥库并导入服务器证书的命令
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 使用GSK SSL 的步骤

现在,我们介绍如何通过 “ 自签名证书 ” 来配置 IDS 使用 SSL :

1.     设置 ONCONFIG :

a.     根据需要配置服务器名称和服务器别名。举例来说,配置   lenexa_on   使用普通 TCP 、配置   menlo_on   使用 SSL 并配置   portland_on 使用 DRDA 客户机的 SSL :

清单 4. 设置 DBSERVERNAME 和 DBSERVERALIASES

b.      

DBSERVERNAME lenexa_on

DBSERVERALIASES menlo_on,portland_on

c.      SSL 加密和加密操作将针对 Encrypt VP 执行。根据系统的负载,使用   VPCLASS   配置参数配置 Encrypt VP (如清单 5 所示)。如果未配置   VPCLASS ,则 IDS 会默认启动一个 Encrypt VP 。

清单 5. 设置 VPCLASS

d.      

VPCLASS encrypt,num=3

e.     根据系统的负载,使用   NETTYPE   配置参数配置 SSL 连接的轮询线程(如清单 6 所示)。如果未配置轮询线程,则 IDS 将启动一个轮询线程。

清单 6. 设置  NETTYPE

f.        

NETTYPE socssl,3,50,NET

g.     为密钥库中的数字证书配置标签。如果未配置标签,则服务器会使用为 SSL 通信使用密钥库中的默认标签。

清单 7. 为服务器的数字证书配置标签

h.      

SSL_KEYSTORE_LABEL ssltestlabel

2.     配置或创建 $GBASEDBTDIR/etc/conssl.cfg 文件。

只有 dbacces 这样的 SQLI 客户机才需要此文件,其中包含客户机密钥库的完全限定文件名和客户机存储文件的完全限定文件名。

3.      

清单 8. 配置 CONSSL.cfg 文件
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.      

清单 9. 配置 sqlhosts 文件
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.     创建服务器密钥库。 服务器密钥库和服务器存储文件的位置和名称是预定义的:

清单 10. 服务器密钥库和存储文件的名称
$GBASEDBTDIR/ssl/servername.kdb

$GBASEDBTDIR/ssl/servername.sth

9.      

其中, servername   是  DBSERVERNAME   配置参数的值。

10.  

清单 11 显示了使用非 Java 命令行工具创建密钥库和自签名测试证书的命令 (gsk7capicmd/gsk7capicmd_64 ):

11.  

清单 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 显示了实现此操作的命令:

清单 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.      

清单 13. 用于创建客户机密钥库并导入服务器证书的命令
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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-07-31

  • 博文量
    36
  • 访问量
    31948