[16.0.0.4 and later]

在 z/OS 操作系统上为 TLS 配置 SAF 证书和密钥环

迁移现有集合体以使用系统授权工具 (SAF) 执行安全相关的功能,例如,请求认证、授权或证书。

开始之前

使用为控制器和成员定义的字符串标记用于管理安全性的集合体证书。例如,假设证书的专有名称 (DN) 如下所示:
DN=<hostname>, O=IBM, OU=Collective
server.xml 文件中使用专有名称中“OU=Collective”字符串配置 rdn 属性:
<collectiveCertificate rdn="OU=Collective"></collectiveCertificate>

关于此任务

单独证书认证中心签署者 (CA) 区分集合体控制器和成员。借助 SAF,控制器信任成员,成员信任控制器。

主体集专有名称的组织单元 (OU) OU('Collective') 部分定义字符串并标记针对以下过程识别的证书。

在以下样本 RACF® 命令中,CONTROL 是控制器的 RACF 用户标识,MEMBER 是成员的 RACF 用户标识。

过程

  1. 为控制器创建 SAF 证书和密钥环。
    1. 创建集合体控制器 CA (CERTAUTH) 证书。
      RACDCERT CERTAUTH GENCERT SUBJECTSDN(CN('CONTROLLER ROOT') 
      O('IBM') C('US'))SIZE(2048)WITHLABEL('CONTROLLER ROOT') 
      TRUST NOTAFTER(DATE(2035/12/31))
    1. 为集合体控制器创建由集合体控制器 CA 签署的服务器证书。
      要点:controller.host.name 文本替换为控制器主机名,以避免出现主机名与浏览器 URL 不匹配的情况。
      RACDCERT ID(CONTROL) GENCERT SUBJECTSDN(CN('controller.host.name')   
      O('IBM') OU('Collective')) WITHLABEL('CONTROLLER')  
      SIGNWITH(CERTAUTH LABEL('CONTROLLER ROOT')) SIZE(2048)  
      NOTAFTER(DATE(2020/12/30))  
               
    2. 为集合体控制器创建密钥环。
      RACDCERT ID(CONTROL) ADDRING(CONTROL.KEYRING)
    3. 将集合体控制器 CA 连接到控制器密钥环。
      RACDCERT CONNECT(CERTAUTH LABEL('CONTROLLER ROOT')  
      RING(CONTROL.KEYRING))ID(CONTROL)
    4. 将控制器服务器证书连接到控制器密钥环。
      RACDCERT CONNECT(ID(CONTROL) LABEL('CONTROLLER') 
      RING(CONTROL.KEYRING)) ID(CONTROL)  
  2. 为成员创建 SAF 证书和密钥环。
    1. 创建集合体成员 CA (CERTAUTH) 证书。
      RACDCERT CERTAUTH GENCERT SUBJECTSDN(CN('MEMBER ROOT')  
      O('IBM') C('US'))SIZE(2048)WITHLABEL('MEMBER ROOT')  
      TRUST NOTAFTER(DATE(2035/12/31))
    2. 将集合体成员 CA 连接到控制器密钥环。
      RACDCERT CONNECT(CERTAUTH LABEL('MEMBER ROOT')  
      RING(CONTROL.KEYRING))ID(CONTROL)
    3. 为集合体成员创建由集合体成员 CA 签署的服务器证书。
      要点:member.host.name 文本替换为成员主机名,以避免出现主机名与浏览器 URL 不匹配的情况。
      RACDCERT ID(MEMBER) GENCERT SUBJECTSDN(CN('member.host.name')  
        O('IBM') OU('Collective')) WITHLABEL('MEMBER')                      
        SIGNWITH(CERTAUTH LABEL('MEMBER ROOT')) SIZE(2048)                  
        NOTAFTER(DATE(2020/12/30))
    4. 为集合体成员创建密钥环 MEMBER.KEY
      RACDCERT ID(MEMBER) ADDRING(MEMBER.KEY)
    5. 将集合体成员 CA 连接到 MEMBER.KEY 密钥环。
      RACDCERT CONNECT(CERTAUTH LABEL('MEMBER ROOT') 
      RING(MEMBER.KEY)) ID(MEMBER)    
              
    6. 将成员服务器证书连接到 MEMBER.KEY 密钥环。
      RACDCERT CONNECT(ID(MEMBER) LABEL('MEMBER')   
      RING(MEMBER.KEY)) ID(MEMBER)
    7. 列出成员密钥环。

      应该会在密钥环中看到两个证书。

      RACDCERT ID(MEMBER) LISTRING(MEMBER.KEY)
      Digital ring information for user MEMBER:                                                                 
             >MEMBER.KEY<                                              
        Certificate Label Name Cert Owner USAGE    DEFAULT
        --------------------------------   ------------   --------   -------  
        MEMBER ROOT                        CERTAUTH       CERTAUTH     NO     
                                                                                
        MEMBER                             ID(MEMBER)     PERSONAL     NO       
         
    8. 为成员创建第二个密钥环 MEMBER.TRUST
      RACDCERT ID(MEMBER) ADDRING(MEMBER.TRUST)
    9. 将集合体控制器 CA 连接到 MEMBER.TRUST 密钥环。
      RACDCERT CONNECT(CERTAUTH LABEL('CONTROLLER ROOT')  
      RING(MEMBER.TRUST))ID(MEMBER)
    10. 列出 MEMBER.TRUST 密钥环。应该会在密钥环中看到一个证书。
      RACDCERT ID(MEMBER) LISTRING(MEMBER.TRUST)
      Digital ring information for user MEMBER:
        Ring:                                                                 
             >MEMBER.TRUST<                                              
        Certificate Label Name Cert Owner USAGE    DEFAULT
        --------------------------------   ------------   --------   -------  
        CONTROLLER ROOT                    CERTAUTH       CERTAUTH     NO     
         
  3. 列出控制器密钥环。应该会在密钥环中看到三个证书。
    RACDCERT ID(CONTROL)LISTRING(CONTROL.KEYRING) 
    Ring:                                                                 
           >CONTROL.KEYRING<                                              
      Certificate Label Name Cert Owner USAGE    DEFAULT
      --------------------------------   ------------   --------   -------  
      MEMBER ROOT                        CERTAUTH       CERTAUTH     NO     
                                                                            
      CONTROLLER ROOT                    CERTAUTH       CERTAUTH     NO     
                                                                            
      CONTROLLER                         ID(CONTROL)    PERSONAL     NO     
  4. 为控制器和成员指定权限以使用其所拥有的密钥环和证书。

    您可以使用 FACILITY 类概要文件或 RDATALIB 概要文件。

    以下示例使用 CONTROL 和 MEMBER 用户的 FACILITY 类许可权:

    PERMIT IRR.DIGTCERT.LIST CLASS(FACILITY) ID(CONTROL MEMBER) ACCESS(READ)
    PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(CONTROL MEMBER) ACCESS(READ)
    SETR RACLIST(FACILITY) REFRESH

    以下示例使用 CONTROL 和 MEMBER 用户的 RDATALIB 类许可权:

    PERMIT CONTROL.**.LST CLASS(RDATALIB) ID(CONTROL) ACCESS(READ)
    PERMIT MEMBER.**.LST CLASS(RDATALIB) ID(MEMBER) ACCESS(READ) 
    SETR RACLIST(RDATALIB) REFRESH
  5. 将 z/OS® 安全功能部件添加到控制器和成员 serverl.xml 文件。
    1. 停止控制器和成员。将针对控制器和成员的每个 server.xml 文件的副本保存到备份文件。
    2. 继续编辑 server.xml 文件。在控制器和成员 server.xml 文件中,将以下功能部件添加到 featureManager 元素:
      <feature>ssl-1.0</feature>
      <feature>zosSecurity-1.0</feature>
            
    3. 创建服务器类概要文件,以便控制器和成员可访问 SAF 服务。请参阅产品文档中的“在 Liberty for z/OS 上启用 z/OS 授权服务”。 然后,在控制器和成员 server.xml 文件中,替换以下行:
      <quickStartSecurity userName="admin" userPassword="adminpw" />
      替换为以下五行:
      <safAuthorization id="saf" racRouteLog="ASIS" />                    
      <safCredentials profilePrefix="BBGZDFLT" unauthenticatedUser="WSGUEST"/>
      <safRegistry id="saf" realm="WASRealm" />                           
      <safRoleMapper profilePattern="%profilePrefix%.%role%" />           
      <zosLogging enableLogToMVS="true"></zosLogging>

      用于控制对管理中心的访问权的 EJBROLE 概要文件为 BBGZDFLT.Administrator

    4. 在控制器和成员 server.xml 文件中,通过添加以下行指定 collectiveCertificate 字符串:
      <collectiveCertificate rdn="OU=Collective"></collectiveCertificate>
  6. 在控制器 server.xml 文件中,将密钥文件名称替换为 SAF 密钥环名称。
    1. 找到具有 defaultKeyStore 标识的密钥库元素。location="${server.config.dir}/resources/security/key.jks"/> 替换为以下行:
      location="safkeyring:///CONTROL.KEYRING"                  
      type="JCERACFKS" fileBased="false" readOnly="true" />
    2. 找到具有 defaultTrustStore 标识的密钥库元素。location="${server.config.dir}/resources/security/trust.jks"/> 替换为以下行:
      location="safkeyring:///CONTROL.KEYRING"                                 
      type="JCERACFKS" fileBased="false" readOnly="true" />  
    3. 找到具有 serverIdentity 标识的密钥库元素。location="${server.config.dir}/resources/collective/serverIdentity.jks"/> 替换为以下行:
      location="safkeyring:///CONTROL.KEYRING"                  
      type="JCERACFKS" fileBased="false" readOnly="true" /> 
          
    4. 找到具有 collectiveTrust 标识的密钥库元素。location="${server.config.dir}/resources/collective/collectiveTrust.jks"/> 替换为以下行:
      location="safkeyring:///CONTROL.KEYRING"                  
      type="JCERACFKS" fileBased="false" readOnly="true" />
          

      不要更改 collectiveRootKeys 密钥库元素。

  7. 在成员 server.xml 文件中,将密钥文件名称替换为 SAF 密钥环名称。
    1. 找到具有 defaultKeyStore 标识的密钥库元素。location="${server.config.dir}/resources/security/key.jks"/> 替换为以下行:
      location="safkeyring:///MEMBER.KEY"                  
      type="JCERACFKS" fileBased="false" readOnly="true" />
    2. 找到具有 defaultTrustStore 标识的密钥库元素。location="${server.config.dir}/resources/security/trust.jks"/> 替换为以下行:
      location="safkeyring:///MEMBER.TRUST"                                 
      type="JCERACFKS" fileBased="false" readOnly="true" />  
    3. 找到具有 serverIdentity 标识的密钥库元素。location="${server.config.dir}/resources/collective/serverIdentity.jks"/> 替换为以下行:
      location="safkeyring:///MEMBER.KEY"                  
      type="JCERACFKS" fileBased="false" readOnly="true" />
          
    4. 找到具有 collectiveTrust 标识的密钥库元素。location="${server.config.dir}/resources/collective/collectiveTrust.jks"/> 替换为以下行:
      location="safkeyring:///MEMBER.TRUST"                  
      type="JCERACFKS" fileBased="false" readOnly="true" />
          
  8. 启动控制器和成员。

用于指示主题类型的图标 任务主题

文件名:tagt_wlp_collective_zos_tls.html