![[16.0.0.4 and later]](../ng_v16004plus.gif)
在 z/OS 操作系统上为 TLS 配置 SAF 证书和密钥环
迁移现有集合体以使用系统授权工具 (SAF) 执行安全相关的功能,例如,请求认证、授权或证书。
开始之前
使用为控制器和成员定义的字符串标记用于管理安全性的集合体证书。例如,假设证书的专有名称 (DN) 如下所示:
DN=<hostname>, O=IBM, OU=Collective
在 server.xml 文件中使用专有名称中“OU=Collective”字符串配置 rdn 属性:
<collectiveCertificate rdn="OU=Collective"></collectiveCertificate>
关于此任务
主体集专有名称的组织单元 (OU) OU('Collective') 部分定义字符串并标记针对以下过程识别的证书。
在以下样本 RACF® 命令中,CONTROL 是控制器的 RACF 用户标识,MEMBER 是成员的 RACF 用户标识。
过程
- 为控制器创建 SAF 证书和密钥环。
- 创建集合体控制器 CA (CERTAUTH) 证书。
RACDCERT CERTAUTH GENCERT SUBJECTSDN(CN('CONTROLLER ROOT') O('IBM') C('US'))SIZE(2048)WITHLABEL('CONTROLLER ROOT') TRUST NOTAFTER(DATE(2035/12/31))
- 为集合体控制器创建由集合体控制器 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))
- 为集合体控制器创建密钥环。
RACDCERT ID(CONTROL) ADDRING(CONTROL.KEYRING)
- 将集合体控制器 CA 连接到控制器密钥环。
RACDCERT CONNECT(CERTAUTH LABEL('CONTROLLER ROOT') RING(CONTROL.KEYRING))ID(CONTROL)
- 将控制器服务器证书连接到控制器密钥环。
RACDCERT CONNECT(ID(CONTROL) LABEL('CONTROLLER') RING(CONTROL.KEYRING)) ID(CONTROL)
- 创建集合体控制器 CA (CERTAUTH) 证书。
- 为成员创建 SAF 证书和密钥环。
- 创建集合体成员 CA (CERTAUTH) 证书。
RACDCERT CERTAUTH GENCERT SUBJECTSDN(CN('MEMBER ROOT') O('IBM') C('US'))SIZE(2048)WITHLABEL('MEMBER ROOT') TRUST NOTAFTER(DATE(2035/12/31))
- 将集合体成员 CA 连接到控制器密钥环。
RACDCERT CONNECT(CERTAUTH LABEL('MEMBER ROOT') RING(CONTROL.KEYRING))ID(CONTROL)
- 为集合体成员创建由集合体成员 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))
- 为集合体成员创建密钥环 MEMBER.KEY。
RACDCERT ID(MEMBER) ADDRING(MEMBER.KEY)
- 将集合体成员 CA 连接到 MEMBER.KEY 密钥环。
RACDCERT CONNECT(CERTAUTH LABEL('MEMBER ROOT') RING(MEMBER.KEY)) ID(MEMBER)
- 将成员服务器证书连接到 MEMBER.KEY 密钥环。
RACDCERT CONNECT(ID(MEMBER) LABEL('MEMBER') RING(MEMBER.KEY)) ID(MEMBER)
- 列出成员密钥环。
应该会在密钥环中看到两个证书。
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
- 为成员创建第二个密钥环 MEMBER.TRUST。
RACDCERT ID(MEMBER) ADDRING(MEMBER.TRUST)
- 将集合体控制器 CA 连接到 MEMBER.TRUST 密钥环。
RACDCERT CONNECT(CERTAUTH LABEL('CONTROLLER ROOT') RING(MEMBER.TRUST))ID(MEMBER)
- 列出 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
- 创建集合体成员 CA (CERTAUTH) 证书。
- 列出控制器密钥环。应该会在密钥环中看到三个证书。
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
- 为控制器和成员指定权限以使用其所拥有的密钥环和证书。
您可以使用 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
- 将 z/OS® 安全功能部件添加到控制器和成员 serverl.xml 文件。
- 停止控制器和成员。将针对控制器和成员的每个 server.xml 文件的副本保存到备份文件。
- 继续编辑 server.xml 文件。在控制器和成员 server.xml 文件中,将以下功能部件添加到 featureManager 元素:
<feature>ssl-1.0</feature> <feature>zosSecurity-1.0</feature>
- 创建服务器类概要文件,以便控制器和成员可访问 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。
- 在控制器和成员 server.xml 文件中,通过添加以下行指定 collectiveCertificate 字符串:
<collectiveCertificate rdn="OU=Collective"></collectiveCertificate>
- 在控制器 server.xml 文件中,将密钥文件名称替换为 SAF 密钥环名称。
- 找到具有 defaultKeyStore 标识的密钥库元素。 将 location="${server.config.dir}/resources/security/key.jks"/> 替换为以下行:
location="safkeyring:///CONTROL.KEYRING" type="JCERACFKS" fileBased="false" readOnly="true" />
- 找到具有 defaultTrustStore 标识的密钥库元素。 将 location="${server.config.dir}/resources/security/trust.jks"/> 替换为以下行:
location="safkeyring:///CONTROL.KEYRING" type="JCERACFKS" fileBased="false" readOnly="true" />
- 找到具有 serverIdentity 标识的密钥库元素。 将 location="${server.config.dir}/resources/collective/serverIdentity.jks"/> 替换为以下行:
location="safkeyring:///CONTROL.KEYRING" type="JCERACFKS" fileBased="false" readOnly="true" />
- 找到具有 collectiveTrust 标识的密钥库元素。 将 location="${server.config.dir}/resources/collective/collectiveTrust.jks"/> 替换为以下行:
location="safkeyring:///CONTROL.KEYRING" type="JCERACFKS" fileBased="false" readOnly="true" />
不要更改 collectiveRootKeys 密钥库元素。
- 找到具有 defaultKeyStore 标识的密钥库元素。 将 location="${server.config.dir}/resources/security/key.jks"/> 替换为以下行:
- 在成员 server.xml 文件中,将密钥文件名称替换为 SAF 密钥环名称。
- 找到具有 defaultKeyStore 标识的密钥库元素。 将 location="${server.config.dir}/resources/security/key.jks"/> 替换为以下行:
location="safkeyring:///MEMBER.KEY" type="JCERACFKS" fileBased="false" readOnly="true" />
- 找到具有 defaultTrustStore 标识的密钥库元素。 将 location="${server.config.dir}/resources/security/trust.jks"/> 替换为以下行:
location="safkeyring:///MEMBER.TRUST" type="JCERACFKS" fileBased="false" readOnly="true" />
- 找到具有 serverIdentity 标识的密钥库元素。 将 location="${server.config.dir}/resources/collective/serverIdentity.jks"/> 替换为以下行:
location="safkeyring:///MEMBER.KEY" type="JCERACFKS" fileBased="false" readOnly="true" />
- 找到具有 collectiveTrust 标识的密钥库元素。 将 location="${server.config.dir}/resources/collective/collectiveTrust.jks"/> 替换为以下行:
location="safkeyring:///MEMBER.TRUST" type="JCERACFKS" fileBased="false" readOnly="true" />
- 找到具有 defaultKeyStore 标识的密钥库元素。 将 location="${server.config.dir}/resources/security/key.jks"/> 替换为以下行:
- 启动控制器和成员。
子主题
- 避免集合体中出现 SSH 问题
了解如何避免集合体中出现 SSH 问题。通常,安全问题与用户无权访问资源有关,因为安全具有很强的限制性。安全的许可性过于自由时,使用 SSH 配置选项 StrictModes,可保护公共密钥文件和专用密钥文件遇到相反问题。SSH 提供系统之间的安全通信且不需要密码认证,但如果针对某些目录和文件的许可权不够严格,那么 SSH 不会工作。
父主题: 配置 Liberty 集合体的安全性

文件名:tagt_wlp_collective_zos_tls.html