内容


集成 TXSeries 和 CICS Transaction Server 时的安全架构

第 3 部分,使用 IP/SSL 连接配置集中式安全性

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 集成 TXSeries 和 CICS Transaction Server 时的安全架构

敬请期待该系列的后续内容。

此内容是该系列的一部分:集成 TXSeries 和 CICS Transaction Server 时的安全架构

敬请期待该系列的后续内容。

简介

本文是系列文章集成 TXSeries 和 CICS Transaction Server 时的安全架构考虑 的第 3 部分。在 第 1 部分,我们讨论了常规的安全概念和一些客户部署方案。第 2 部分 提供了在具有 IP 连接的集成的 CICS TS 和 TXSeries 系统上配置集中式安全环境的详细步骤。

本文重点介绍第 1 部分描述的部署解决方案的配置步骤,解释了在使用安全套接字层(SSL)的 internet 协议(IP)连接之上,在集成、集中的安全环境中设置 CICS TS 与 TXSeries 之间的安全性所需的配置步骤。

这些步骤有助于系统开发人员更好地理解概念以及建立架构的方式。

图 1. 在使用 SSL 的 IP 连接之上的集成与集中式安全环境中的 CICS TS 和 TXSeries
图表显示了银行分行与总行之间的集中式安全性
图表显示了银行分行与总行之间的集中式安全性

图 1 中的架构提供了一个面向 CICS TS 与 TXSeries 集成的安全设置示例,使用了经 SSL 加密的 IPIC(IP 连接)。

要为图 1 中的安全架构进行配置,需要完成以下基本步骤,这在本文将详细进行介绍:

  1. 建立 IPIC/SSL 连接
  2. 设置绑定安全性
  3. 设置链接安全性
  4. 设置 IPIC 用户安全性
  5. 确保通信安全

建立 CICS TS 与 TXSeries 之间的 IPIC/SSL 连接

CICS TS 和 TXSeries 可以使用 Secure Sockets Layer (SSL) 或 Transport Layer Security (TLS) 安全协议来支持安全的 TCP/IP 连接。TXSeries 使用 GSKit 提供安全的 TCP/IP 连接。您需要在希望启用安全 TCP/IP 连接的系统上安装 GSKit。

要启用 SSL,除了在 CICS TS 和 TXSeries 中建立 IPIC 连接所需的基本属性之外(见第 2 部分),还需要在 CICS TS 的 IPCONN 定义和 TCPIPSERVICE 定义,以及 TXSeries 的 Listener Definition(LD)中设置更多属性。

要从服务器对客户端进行身份验证,需要创建一个 keyring 和证书。

keyring 包括:

  • 公用密钥和专用密钥
  • 服务器证书
  • 服务器证书的签名证书
  • 属于客户端的任何客户端证书的签名证书,CICS 可使用客户端身份验证与该证书通信。

证书可以是自签名证书或是由 VeriSign® 之类受信任的第三方颁发机构发行的证书。在 CICS 中,您可以使用 RACF 创建 keyring 和签署人权威证书。在 TXSeries 中,可以使用由 GSKit 提供的 ikeyman 工具来创建 keyring 和自签名证书。

在 TXSeries 中建立经 SSL 加密的 IP 连接

  1. 使用由 GSKit 提供的 ikeyman GUI 工具或 gsk7capicmd 命令行工具创建 keyring 文件(test.kdb),如清单 1 所示。创建 keyring 时,该工具会要求输入文件密码。您也可以为密码创建一个隐藏(stash)文件。
    清单 1. keyring 文件的创建
    gsk7capicmd -keydb -create -db /tmp/test.kdb -pw test1
  2. 使用清单 2 中的命令在 test.kdb keyring 文件中创建自签名文件。当客户端位于组织内部时,通常使用自签名证书进行测试。如果客户端位于组织外部,则需使用来自外部证书授权机构的证书。
    清单 2. 自签名证书的创建
    gsk7capicmd -cert -create -db /tmp/test.kdb -pw test1
    -x509version 3   -label txsa -dn "CN=hosta,O=ibm,C=IN"
  3. 使用清单 3 中的属性更新 TXSeries Region(TXSA)中的 LD stanza 条目。 参见清单 4 中的命令。
    清单 3. TXSA 中的更新后 LD stanza 条目的属性
    SSLKeyFile=/tmp/test.kdb
    SSLKeyPassword=test1 
    SSLAuthentication=Yes 
    SSLCipherspecs=“05040A6264030609020100”
    清单 4. 更新 stanza 条目
    cicsupdate -c ld -r TXSA TSA SSLKeyFile="/tmp/test.kdb"
    SSLKeyPassword="test1" SSLAuthentication=yes
    SSLCipherspecs="05040A6264030609020100"

在 CICS TS 中建立经 SSL 加密的 IP 连接

  1. 在 RACF 中设置正确的授权以允许 CICS 区域用户 ID CICSUSER(在我们的场景中使用 CICSUSER 作为 CICS 区域 CICSB 用户 ID)来创建 key ring,创建签名证书(证书权威颁发的证书),并向 key ring 添加证书。清单 5 提供了用于 CICSUSER 授权的命令。
    清单 5. 在 RACF 中设置授权
    PERMIT IRR.DIGTCERT.* CLASS(FACILITY) 
        ID(CICSUSER) ACCESS(READ)   
    PERMIT IRR.DIGTCERT.CONNECT CLASS(FACILITY) 
        ID(CICSUSER) ACCESS(UPDATE)  (for self) 
    PERMIT IRR.DIGTCERT.CONNECT CLASS(FACILITY) 
        ID(CICSUSER) ACCESS(CONTROL)  (for another user) 
    PERMIT IRR.DIGTCERT.GENCERT CLASS(FACILITY) 
        ID(CICSUSER) ACCESS(CONTROL)
  2. 使用清单 6 中的命令,在名为 ringcicsb 的 RACF 数据库中创建 keyring。
    清单 6. 在 RACF 中创建 keyring
    RACDCERT ID(CICSUSER) ADDRING(ringcicsb)
    RACDCERT ID(CICSUSER) CONNECT
    (RING(ringcicsb) LABEL('cicsb test cert') )
  3. 使用清单 7 中的命令创建证书并将其添加到 keyring 中。我们假设签名证书(cert)已在 RACF 中被创建。
    清单 7. 创建证书并将其添加到 keyring 中
    RACDCERT ID(CICSUSER) GENCERT SUBJECTSDN(CN('hostb')
    T('hostb test cert') OU('ISL') O('IBM') C ('US')) NOTBEFORE(DATE(start)
    TIME(00:00:00)) NOTAFTER (DATE(finish)
    TIME(23:59:59)) SIGNWITH (CERTAUTH LABEL('cert'))
    WITHLABEL('cicsb test cert')  SIZE (1024)
  4. 确保 CICS 区域可以访问 z/OS® 系统的 SIEALNKE SSL 库。您可以使用 STEPLIBJOBLIB 语句,或使用系统链接库。
  5. KEYRING 系统初始化参数中指定已创建的 key ring(ringcicsb)的名称。
  6. 使用清单 9 中的命令,用清单 8 中的属性更新 TCPIPSERVICE 定义。
    清单 8. TCPIPSERVICE 定义属性
    SSL(YES) 
    CERTIFICATE('cicsb test cert')
    CIPHERS
    ('050435363738392F303132330A1613100D0915120F0C03060201')
    清单 9. 更新 TCPIPSERVICE 定义的命令
    CEDA ALTER TCPIPSERVICE(TSB) GROUP(TEST) SSL(YES)		 
    CERTIFICATE('cicsb test cert') CIPHERS 
    ('050435363738392F303132330A1613100D0915120F0C03060201')
  7. 使用清单 11 中的命令,通过清单 10 中的属性更新 IPCONN 定义。
    清单 10. IPCONN 定义属性
    SSL(YES)
    CIPHERS ('050435363738392F303132330A1613100D0915120F0C03060201')
    清单 11. 更新 IPCONN 定义的命令
    CEDA ALTER IPCONN(TSA) GROUP(TEST) SSL(YES) CIPHERS	
    ('050435363738392F303132330A1613100D0915120F0C03060201')

对于本文中的示例配置,我们使用了 TXSeries 中的自签名证书。您需要从 TXSeries keyring 文件(test.kdb)导出该证书并将其导入 CICSB CICS 区域 keyring 文件(ringcicsb)中。

而且,由于我们使用的是由 RACF 创建的签署人权威证书,因此需要从 RACF 导出该证书,然后将其作为受信任证书导入 TXSA TXSeries 区域 keyring 文件(test.kdb)中。

图 2 使用一个示例显示了 hosta.example.com 上的 TXSeries 区域 TXSAhostb.example.com 上的 CICS TS 区域 CICSB 之间经 SSL 加密的 IPIC 连接。

图 2. 在 CICS TS 与 TXSeries 之间配置经 SSL 加密的 IP 连接
图表显示了包含 TXSeries 区域的 hosta.example.com 和包含 CICSB 区域的 hostb.example.com,分别通过 Ports A 和 B 相连。
图表显示了包含 TXSeries 区域的 hosta.example.com 和包含 CICSB 区域的 hostb.example.com,分别通过 Ports A 和 B 相连。

测试经 SSL 加密的 IPIC 连接

  1. 在 TXSeries 区域 TXSA 添加 Program Definition (PD) 条目(比如 PROG)和 Transaction definition (TD) 条目(比如 TRAN)。由 TD 条目(TRAN)中提到的事务调用的程序应向 CICSB CICS TS 区域发送 DPL 请求。
  2. 重新启动 TXSA TXSeries 区域。
  3. 将程序(比如 TEST)的 Program 定义添加到 CICS TS 的 CICSB 中,将从 TXSeries 中调用该定义。
  4. 使用 CEDA INSTALL 命令在 CICSB CICS 区域安装 TCPIPSERVICE, IPCONNProgram 定义。
  5. 将事务(TRAN)从 TXSA TXSeries 区域触发到 CICSB CICS TS 区域。

在下一节中,我们将通过刚才建立的经 SSL 加密的 TCP/IP 安全连接构建绑定安全性。

在 CICS TS 与 TXSeries 区域之间设置绑定安全性

当从远程系统接收或向远程系统发送建立连接的请求时可以应用安全检查。该检查称作绑定时安全(bind-time security),它可以阻止未授权系统连接 CICS 或 TXSeries 系统。

每个 CICS 系统使用 IPCONN 传输数据到伙伴系统,并将 TCPIPSERVICE 作为接收器使用。在 TXSeries 中,IPIC 侦听器充当接收器。启动通信的 CICS 或 TXSeries 区域充当客户端,远程系统相当于服务器。

IPIC 通过 SSL 客户端证书的交换来支持绑定安全性。

在 TXSeries 区域建立绑定安全性

  1. 使用清单 12 中的命令创建或获取客户端证书并将其添加到 keyring 文件(test.kdb)中。
    清单 12. 客户端证书的创建
    gsk7capicmd -cert -create -db /tmp/test.kdb -pw test1   			
    x509version 3   -label clientc -dn "CN=client,O=ibm,C=IN"
  2. 使用清单 14 中的命令,通过清单 13 中的属性更新 Listener Definition 条目 TSA。
    清单 13. LD 条目 TSA 的属性
    SSL=CLIENT
    SSLCipherspecs=“05040A6264030609020100” 
    SSLCertificate=<name of the client certificate>
    清单 14. 更新 LD 条目的命令
    cicsupdate -c ld -r TXSA TSA SSLCertificate="clientc”
    SSLAuthentication=client
    SSLCipherspecs="05040A6264030609020100"

在 CICS 区域建立绑定安全性

  1. CICSB CICS 区域,将 SEC 系统初始化参数设定为 YES
  2. 使用清单 15 中的命令创建或获取客户端证书,然后将其添加到 keyring 文件(ringcicsb)中。
    清单 15. 创建一个客户端证书
    RACDCERT ID(CICSUSER) GENCERT 
    SUBJECTSDN(CN('clientb') 
    T ('hostb client cert') OU('ISL') O ('IBM') C ('US')) 
    NOTBEFORE(DATE(start) TIME(00:00:00))
    NOTAFTER (DATE(finish) TIME(23:59:59)) SIGNWITH (CERTAUTH 
    LABEL('cert')) WITHLABEL('cicsb client cert')  SIZE (1024)
    RACDCERT ID(CICSUSER) CONNECT( RING(ringcicsb) 
    LABEL('cicsb client cert') )
  3. 使用清单 17 中的命令在 CICSB 区域的 TSAIPCONN 中更新清单 16 中的属性。
    清单 16. TSA IPCONN 定义的属性
    SSL(YES). 
    CIPHERS('050435363738392F303132330A1613100D0915120F0C03060201') 
    CERTIFICATE(' cicsb client cert')
    清单 17. 更新 TSA IPCONN 定义的命令
    CEDA ALTER IPCONN(TSA) GROUP(TEST) SSL(YES) 
    CERTIFICATE('cicsb client cert') CIPHERS
    ('050435363738392F303132330A1613100D0915120F0C03060201')

    在获取 IPCONN 后的 SSL 握手(handshake)期间,已命名的证书作为客户端证书使用。

  4. 使用清单 19 中的命令,在 CICSB 区域的 TSB TCPIPSERVICE 上更新清单 18 中的属性。
    清单 18. TSB TCPIPSERVICE 的属性
    PROTOCOL(IPIC). 
    SSL(CLIENTAUTH) 
    CIPHERS('050435363738392F303132330A1613100D0915120F0C03060201'). 
    CERTIFICATE('cicsb test cert')
    清单 19. 更新 TSB TCPIPSERVICE 定义的命令
    CEDA ALTER TCPIPSERVICE(TSB) GROUP(TEST)
    SSL(CLIENTAUTH) CERTIFICATE('cicsb test cert') CIPHERS
    ('050435363738392F303132330A1613100D0915120F0C03060201')

如果不在 CICSB 区域的 TCPIPSERVICEIPCONN 定义中指定 CERTIFICATE,CICS 为 CICS 区域用户 ID CICSUER 使用 key ring 文件(ringcicsb)中定义的默认证书。同样对于 TXSeries,如果不在 TXSA 区域的 LD 条目中指定 SSLCertificate,它将使用 key ring 文件(test.kdb)中的默认证书。

图 3 显示了 CICS 与 TXSeries 区域之间的绑定安全性设置。

图 3. 绑定安全性
图表显示了 TXSA 和 CICSB 区域以及上述步骤所列出的属性
图表显示了 TXSA 和 CICSB 区域以及上述步骤所列出的属性

通过 IPIC 上的 Bind 安全性设置,当 TXSeries 向 CICS 区域发出第一个 DPL 请求时,TXSeries 区域向 CICS CICSB 区域发起 SSL 握手。TXSeries 区域在此充当客户端,CICSB 区域充当服务器。TCPIPSERVICECICSB 区域定义连接的进入方。TSA 中的 SSL(CLIENTAUTH) 属性告诉 CICS 在允许客户端获取 IPCONN 之前必须先接收一个有效的 SSL 客户端证书。因此 TXSA 区域将 LD 条目的 SSLCertificate 属性中提到的证书作为客户端证书发送出去。

作为第一个 DPL 请求的一部分,总是会有两个连接被建立,第一个连接是从 TXSeries 到 CICS TS,另一个连接是从 CICS TS 到 TXSeries。

因此,当 CICSB 区域发起握手(充当客户端)且 TXSA 区域中的 LD 条目含有 SSL(CLIENT) 时,CICSB 区域将会发送客户端证书。CICSB 区域将 IPCONN 定义中提到的证书作为客户端证书发送出去。

如果 CICSB 中的 TCPIPSERVICE 和 LD 条目由 SSL(YES) 指定,那么在握手过程中,服务器既不会请求也不会接收客户端证书。当 TCPIPSERVICE 由两个区域上的 SSL(NO) 同时指定时,就不可能存在绑定时安全性。

下一节我们将使用经 SSL 加密的 IP 连接建立链接安全性。

设置 CICS TS 与 TXSeries 区域之间的链接安全性

在 CICS TS 中,我们使用 IPCONN 定义通过 IP 连接配置链接安全性。在 TXSeries 中,我们将使用 Communication Definition (CD) 条目配置链接安全性。当链接安全性在使用中时,所有请求都获得一个由链接用户 ID 定义的授权。使用 SSL 配置该 IP 连接时,可以通过 SSL 配置添加更多检查来加强链接安全性。

在 TXSeries 区域建立链接安全性

  1. 使用清单 20 中的命令停止 TXSA 区域:
    清单 20. 停止 TXSA 区域
    cicscp –v stop region TXSA
  2. 使用清单 22 中的命令,通过清单 21 中的以下属性更新先前添加的 CD 条目(TXSA)。
    清单 21. TXSA CD 条目的属性
    RemoteSysSecurity=”LOCAL”
    LinkUserId=”TIM”
    清单 22. 更改 TXSA CD 条目的命令
    cicsupdate –c cd -r TXSA TXSA RemoteSysSecurity=”LOCAL”
    LinkUserId=”TIM”

在 CICS TS 区域设置链接安全性

  1. 使用清单 23 中的命令登录到 CICSB 区域。
    清单 23. 登录到 CICSB 区域
    Logon applid(CICSB)
  2. 使用清单 25 中的命令将清单 24 中的属性添加到 IPCONN 定义(TSA)中。
    清单 24. TSA IPCONN 定义的属性
    USERAUTH(LOCAL)
    LINKAUTH(SECUSER)
    SECURITYNAME(JANE)
    清单 25. 更新 TSA IPCONN 定义的命令
    CEDA ALTER IPCONN(TSA) GROUP(TEST) 
    USERAUTH(LOCAL)
    LINKAUTH(SECUSER) SECURITYNAME(JANE)
  3. 使用清单 26 中的命令修改 TCPIPSERVICE 定义(TSB),使其包含 SSL(CLIENTAUTH)
    清单 26. 修改 TCPISERVICE 定义
    CEDA ALTER TCPIPSERVICE(TSB) GROUP(TEST) SSL(CLIENTAUTH)

图 4 总结了在 CICS TS 与 TXSeries 之间建立链接安全性所需的所有属性:

图 4. 链接安全性
图表显示了 TXSA 和 CICSB 区域以及上述步骤列出的属性
图表显示了 TXSA 和 CICSB 区域以及上述步骤列出的属性

要为链接安全性启用 SSL 检查,需要使用 SSL 在 CICS TS 区域与 TXSeries 区域之间建立 IP 连接。还应使用 SSL 在 CICS TS 区域与 TXSeries 区域之间设置绑定安全性。

启用绑定安全性后,我们会收到来自伙伴系统的客户端证书。当将 LINKAUTH 指定为 CERTUSER 时,必须在外部安全管理器(比如 RACF)中定义该客户端证书,这样才能使其与用于建立链接安全性的用户 ID 相关联。

如果不指定链接用户 ID,系统会使用默认用户 ID。在 CICS TS 中,链接用户 ID 必须是该区域上的有效 RACF 用户 ID。对该区域受保护资源的访问基于 RACF 用户个人文件及其群组成员关系。如果建立链接安全性失败,该链接将获得本地区域的默认用户的安全性。例如,当链接用户 ID 被撤销时就会发生这种情况。

下一节我们将使用经 SSL 加密的 IP 连接建立用户安全性。

设置 IPIC 用户安全性

对于用户安全性,您需要在 CICS TS 中为 IPIC 连接设置以下资源定义:

  • 使用 IPCONN Resource Definition 上的 USERAUTH 属性为传入的请求指定登录需求。
  • 在 IPCONN 资源定义的 USERAUTH 属性上,仅为入站请求指定用户安全级别。

同样,您需要为 TXSeries 中的 IPIC 连接设置这些资源定义:

  • 使用 Communication Definition 条目中的 RemoteSysSecurity 属性仅为入站请求定义用户安全级别。
  • 该属性对于由 TXSeries 系统向远程系统发出的出站请求没有影响。

对于出站请求,要指定用户安全级别,可以使用安装在伙伴 CICS TS 系统中的 IPCONN 定义的 USERAUTH 属性,或使用伙伴 TXSeries 系统中 CD 条目的 RemoteSysSecurity 属性。

在 TXSeries 区域设置用户安全性

  1. 使用清单 27 中的命令停止 TXSA 区域:
    清单 27. 停止 TXSA 区域
    cicscp –v stop region TXSA
  2. 使用清单 29 中的命令,通过清单 28 中的属性更新先前添加的 TXSA CD 条目:
    清单 28. TXSA CD 条目的属性
     RemoteSysSecurity=”LOCAL”
    清单 29. 更新 TXSA CD 条目的命令
    cicsupdate –c cd -r TXSA TXSA RemoteSysSecurity=”LOCAL”

在 CICS TS 区域设置用户安全性

  1. 使用清单 30 中的命令登录到 CICSB 区域:
    清单 30. 登录到 CICSB 区域
    Logon  applid(CICSB)
  2. 使用清单 32 中的命令将清单 31 中的属性添加到 TSA IPCONN 定义中:
    清单 31. TSA IPCONN 定义的属性
    USERAUTH(IDENTIFY)
    清单 32. 更新 TSA IPCONN 定义的命令
    CEDA ALTER IPCONN(TSA) GROUP(TEST) USERAUTH(IDENTIFY)
  3. 使用清单 34 中的命令将清单 33 中的属性添加到 TSBTCPIPSERVICE 定义中:
    清单 33. TSB TCPIPSERVICE 定义的属性
    SSL(CLIENTAUTH)
    清单 34. 更新 TSB TCPIPSERVICE 定义的命令
    CEDA ALTER TCPIPSERVICE(TSB) GROUP(TEST) SSL(CLIENTAUTH)

图 5 总结了在 CICS TS 与 TXSeries 之间建立用户安全性所需的属性。

图 5. 用户安全性
图表显示了具有 LOCAL 安全性的 TXSeries 和具有 IDENTIFY 安全性的 CICS TS
图表显示了具有 LOCAL 安全性的 TXSeries 和具有 IDENTIFY 安全性的 CICS TS

在图 5 中,我们将 TXSeries 通信安全设置为 LOCAL,将 CICS TS 通信安全设置为 IDENTIFY。在通过 IP 连接进行的功能交换中,CICS TS 将 IDENTIFY 安全配置发送到 TXSeries,而 TXSeries 将 LOCAL 安全配置发送到 CICS TS。

CICSB 中将 USERAUTH 设置为 IDENTIFY 时,CICS TS 系统要求所有传入的连接请求指定一个用户标识符。使用 USERAUTH(IDENTIFY) 定义 IPCONN 资源意味着您准备接受连接中未经身份验证、已声明的用户标识符;即您委托伙伴系统仅传输已经经过它的身份验证的用户 ID。

当伙伴系统位于组织内部时,将 USERAUTH 设置为 IDENTIFY 就足够了。但是如果伙伴系统位于远程端,CICS 则不直接委托合作伙伴声明未经身份验证的用户 ID,除非它使用受信任的数字证书进行自我标识。因此,您应该使用 SSL 设置 CICS TS 与 TXSeries 之间的 IP 连接。

确保通信安全

使用 SSL,您可以通过 IP 连接在 CICSTS 与 TXSeries 之间加密任何通信,这样便可避免信息失真或损坏。

要加密通信,需要:

  1. TXSA 区域的 LD 条目中设置 SSLCipherspecs。SSLCipherspecs 属性接受一串两字节的密码。
  2. CICSB 区域的 IPCONNTCPIPSERVICE 定义中,设置与密码相关的属性。使用 ENCRYPTION 系统初始化参数指定 CICS 应使用的加密级别。默认值是 STRONG,这意味着 CICS 可以使用所有密码组合来与客户端协商。通过编辑 IPCONNTCPIPSERVICE 资源定义上的 CIPHERS 属性中的密码组合列表,您可以设置加密级别的最小值和最大值。

在 CICS TS 与 TXSeries 之间建立 SSL 连接时,客户端与服务器根据它们共有的密码组合交换信息。然后它们使用提供最高安全级别的通用密码组合进行通信。使用该密码组合时,数据在一端进行加密,在另一端进行解密。如果它们没有共通的密码组合,那么就不可能实现安全通信,CICS 会结束连接。

结束语

在本文中,我们学习了如何使用 SSL 在 CICS TS 与 TXSeries 之间建立 IP 连接。我们还展示了如何使用 SSL 建立绑定和链接安全性。本文有助于解决方案架构师和软件架构师使用通过 SSL 加密的 IP 连接在企业环境中构建安全性。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=481012
ArticleTitle=集成 TXSeries 和 CICS Transaction Server 时的安全架构: 第 3 部分,使用 IP/SSL 连接配置集中式安全性
publish-date=04082010