[z/OS]

z/OS 上的 REST APIIBM MQ Console 配置 TLS

z/OS®上,您可以将 mqweb 服务器配置为使用 RACF® 密钥环来存储证书,以使用 TLS 进行安全连接和客户机证书认证。

开始之前

您必须是具有对 mqwebuser.xml 文件的写访问权以及使用 SAF 密钥环的权限的用户,才能完成此过程。

关于本任务

缺省 mqweb 服务器配置将 Java 密钥库用于服务器和可信证书。 在 z/OS上,可以将 mqweb 服务器配置为使用 RACF 密钥环,而不是 Java 密钥库。 还可以将服务器配置为允许用户使用客户机证书进行认证。

请参阅 Liberty: 密钥库 ,以获取有关在 Liberty中使用 RACF 密钥环的信息。

遵循以下过程来配置 mqweb 服务器以使用 RACF 密钥环,并 (可选) 配置客户机证书认证。 此过程描述了创建和使用使用您自己的认证中心 (CA) 证书签署的证书所需的步骤。 对于生产,您可能更愿意使用从外部认证中心获取的证书。

过程

  1. 创建认证中心 (CA) 证书,该证书将用于对服务器证书进行签名。 例如,输入以下 RACF 命令:
    RACDCERT GENCERT -
      CERTAUTH -
      SUBJECTSDN(CN('mqweb Certification Authority') -
        O('IBM') -
        OU('MQ')) -
      SIZE(2048) -
      WITHLABEL('mqwebCertauth')
  2. 通过输入以下命令,创建使用步骤 1 中创建的 CA 证书签名的服务器证书:
    RACDCERT ID(mqwebUserId) GENCERT -
      SUBJECTSDN(CN('hostname') -
       O('IBM') -
       OU('MQ')) -
       SIZE(2048) -
       SIGNWITH (CERTAUTH LABEL('mqwebCertauth')) -
      WITHLABEL('mqwebServerCert')
    其中,mqwebUserId是 mqweb 服务器启动任务的用户 ID,hostname是 mqweb 服务器的主机名。
  3. 通过输入以下命令将 CA 证书和服务器证书连接到 SAF 密钥环:
    RACDCERT ID(mqwebUserId) CONNECT(RING(keyring) LABEL('mqwebCertauth') CERTAUTH)
    RACDCERT ID(mqwebUserId) CONNECT(RING(keyring) LABEL('mqwebServerCert'))
    其中,mqwebUserId是 mqweb 服务器启动任务的用户 ID,keyring是要使用的钥匙圈名称。
  4. 通过输入以下命令将 CA 证书导出到 CER 文件:
    RACDCERT CERTAUTH EXPORT(LABEL('mqwebCertauth')) -
            DSN('hlq.CERT.MQWEBCA') -
            FORMAT(CERTDER) -
            PASSWORD('password')
  5. 以二进制方式将导出的 CA 证书通过 FTP 传输到工作站,并将其作为认证中心证书导入到浏览器中。
  6. 可选: 如果要配置客户机证书认证,请创建并导出客户机证书。
    1. 创建认证中心 (CA) 证书,该证书将用于签署客户机证书。 例如,输入以下 RACF 命令:
      RACDCERT GENCERT -
        CERTAUTH -
        SUBJECTSDN(CN('mqweb User CA') -
         O('IBM') -
         OU('MQ')) -
         SIZE(2048) -
        WITHLABEL('mqwebUserCertauth')
    2. 通过输入以下命令将 CA 证书连接到 SAF 密钥环:
      RACDCERT ID(mqwebUserId) CONNECT(RING(keyring) LABEL('mqwebUserCertauth') CERTAUTH)
      其中,mqwebUserId是 mqweb 服务器启动任务的用户 ID,keyring是要使用的钥匙圈名称。
    3. 创建客户机证书,使用 CA 证书进行签名。 例如,输入以下命令:
      RACDCERT ID(clientUserId) GENCERT -
        SUBJECTSDN(CN('clientUserId') -
           O('IBM') -
           OU('MQ')) -
         SIZE(2048) -
         SIGNWITH (CERTAUTH LABEL('mqwebUserCertauth')) -
        WITHLABEL('userCertLabel')
      其中clientUserId是用户名。
      用于将证书映射到主体的方法取决于配置的用户注册表类型:
      • 如果您正在使用基本注册表,那么会将证书中的 "公共名称" 字段与注册表中的用户进行匹配。
      • 如果您正在使用 SAF 注册表,并且证书位于 RACF 数据库中,那么将使用在创建证书时使用 ID 参数指定的证书所有者。
      • 如果您正在使用 LDAP 注册表,那么证书中的完整专有名称将与 LDAP 注册表相匹配。
    4. 通过输入以下命令将客户机证书导出到 PKCS #12 文件:
      RACDCERT ID(mqwebUserId) EXPORT(LABEL('userCertLabel')) -
               PASSWORD('password') DSN('hlq.USER.CERT')
    5. 以二进制方式将导出的证书通过 FTP 传输到工作站。 要将客户机证书与 IBM® MQ Console配合使用,请将其作为个人证书导入到用于访问 IBM MQ Console 的 Web 浏览器中。
  7. 编辑文件 WLP_user_directory/servers/mqweb/mqwebuser.xml,其中 WLP_user_directory 是运行 crtmqweb 脚本以创建 mqweb 服务器定义时指定的目录。
    进行以下更改以将 mqweb 服务器配置为使用 RACF 密钥环:
    1. 除去或注释掉以下行:
      <sslDefault sslRef="mqDefaultSSLConfig"/>
    2. 添加以下语句:
      <keyStore id="defaultKeyStore" filebased="false"
                location="safkeyring://mqwebUserId/keyring"
                password="password" readOnly="true" type="JCERACFKS" />
      <ssl id="thisSSLConfig" keyStoreRef="defaultKeyStore" sslProtocol="TLSv1.2"
                serverKeyAlias="mqwebServerCert" clientAuthenticationSupported="true" />
      <sslDefault sslRef="thisSSLConfig"/>
      其中:
      • mqwebUserId是 mqweb 服务器启动任务的用户 ID。
      • keyringRACF 密钥环的名称。
      • mqwebServerCert是 mqweb 服务器证书的标签。
      注: 将忽略 keyStore password 的值。
  8. 通过停止并重新启动 mqweb 服务器启动式任务来重新启动 mqweb 服务器。
  9. 可选: 使用客户机证书进行认证:
    • 要将客户端证书用于 IBM MQ Console ,请在安装了客户端证书的网络浏览器中输入 IBM MQ Console URL。
    • 要将客户机证书与 REST API 配合使用,请为客户机证书提供每个 REST 请求。
    注:
    1. 如果您仅使用证书向 IBM MQ Console进行认证,那么浏览器可能会显示供您选择的证书列表。
    2. 如果要使用其他证书,那么可能需要关闭并重新启动浏览器。
    3. 如果您正在使用不在 RACF 数据库中的客户机证书,那么可以使用 RACF 证书名称过滤将证书属性映射到用户标识。 例如:
      RACDCERT ID(DEPT3USR) MAP SDNFILTER(OU=DEPT1.C=US)
      将具有包含 OU=DEPT1C=US 的主题专有名称的证书映射到用户标识 DEPT3USR
    4. 如果证书主题CN中的主机名和主题备用名称(SAN)与 IBM MQ Console 的 URL 的主机名不匹配,浏览器可能会报告连接不安全。 虽然可以安全继续,但您应考虑创建一个新证书,指定它将用于的主机名的完整列表,然后用新证书替换 "RACF钥匙圈上的现有证书。

结果

您已为 IBM MQ ConsoleREST API设置 TLS 接口。