15.3. 管理 CA、IADP、KRA 或 TKS 的用户和组


用户可以执行的操作由它们所属的组决定;例如,CA 的代理管理证书和配置文件,而管理员管理 CA 服务器配置。
四个子系统 - CA、IPP、KRA 和 TKS - 使用 Java 管理控制台来管理组和用户。TPS 具有基于 Web 的管理员服务,用户和组则通过其网页进行配置。

15.3.1. 管理组

注意
pkiconsole 已被弃用。

15.3.1.1. 创建新组

  1. 登录到管理控制台。
    pkiconsole https://server.example.com:8443/subsystem_type
  2. 从左侧的导航菜单中选择 Users and Groups
  3. 选择 Groups 选项卡。
  4. 单击 Edit,然后填写组信息。
    只能添加已存在于内部数据库中的用户。
  5. 编辑 ACL 以授予组特权。请参阅 第 15.5.4 节 “编辑 ACL” 了解更多信息。如果没有将 ACI 添加到组的 ACL 中,则组不会对证书系统的任何部分没有访问权限。

15.3.1.2. 更改组中的成员

可以从所有组中添加或删除成员。管理员的组必须至少有一个用户条目。
  1. 登录到管理控制台。
  2. 从左侧的导航树中选择 用户和组
  3. Groups 选项卡。
  4. 从名称列表中选择组,然后单击 Edit
  5. 进行适当的更改。
    • 要更改组描述,请在 Group description 字段中输入一个新的描述。
    • 要从组中删除用户,请选择用户,然后单击 Delete
    • 要添加用户,请单击 Add User。从对话框中选择要添加的用户,然后单击确定

15.3.2. 管理用户(管理员、代理和审核员)

每个子系统的用户单独维护。只是因为个人是一个子系统中的管理员,并不表示个人具有另一子系统的任何权限(甚至用户条目)。用户可以配置,并使用其用户证书,作为子系统的代理、管理员或审核员信任。

15.3.2.1. 创建用户

安装证书系统后,只有设置期间创建的用户已存在。这部分论述了如何创建用户。
注意
为安全起见,请为证书系统用户创建单个帐户。
15.3.2.1.1. 使用命令行创建用户
使用命令行创建用户:
  1. 添加用户帐户。例如,要将 example 用户添加到 CA 中:
    # pki -d ~/.dogtag/pki-instance_name/ca/alias/ -c password -n caadmin \
         ca-user-add example --fullName "Example User"
    ---------------------
    Added user "example"
    ---------------------
      User ID: example
      Full name: Example User
    此命令使用 caadmin 用户添加新帐户。
  2. (可选)将用户添加到组中。例如,要将 example 用户添加到 证书管理器代理 组中:
    # pki -d ~/.dogtag/pki-instance_name/ -p password -n "caadmin" \
         user-add-membership example Certificate Manager Agents
  3. 创建证书请求:
    • 如果您的证书系统环境中存在密钥恢复授权(KRA):
      # CRMFPopClient -d ~/.dogtag/pki-instance_name/ -p password \
           -n "user_name" -q POP_SUCCESS -b kra.transport -w "AES/CBC/PKCS5Padding" \
           -v -o ~/user_name.req
      此命令将 CRMF 格式的证书签名请求(CSR)存储在 ~/user_name.req 文件中。
    • 如果您的证书系统环境中没有密钥恢复授权(KRA):
      • 创建 NSS 数据库目录:
        # export pkiinstance=ca1
        # echo ${pkiinstance}
        # export agentdir=~/.dogtag/${pkiinstance}/agent1.dir
        # echo ${agentdir}
        # pki -d ${agentdir}/ -C ${somepwdfile} client-init
      • 将 CSR 存储在由 -o 选项指定的格式文件中,-d 用于初始化的 NSS 数据库目录的路径,-P 选项用于密码文件,-p 用于密码,-n 用于主题 DN:
        # PKCS10Client -d ${agentdir}/ -P ${somepwdfile} -n "cn=agent1,uid=agent1" -o ${agentdir}/agent1.csr
        PKCS10Client: Certificate request written into /.dogtag/ca1/agent1.dir/agent1.csr
        PKCS10Client: PKCS#10 request key id written into /.dogtag/ca1/agent1.dir/agent1.csr.keyId
        
  4. 创建注册请求:
    1. 使用以下内容创建 ~/cmc.role_crmf.cfg 文件:
      #numRequests: Total number of PKCS10 requests or CRMF requests.
      numRequests=1
      
      #input: full path for the PKCS10 request or CRMF request,
      #the content must be in Base-64 encoded format
      #Multiple files are supported. They must be separated by space.
      input=~/user_name.req
      
      #output: full path for the CMC request in binary format
      output=~/cmc.role_crmf.req
      
      #tokenname: name of token where agent signing cert can be found (default is internal)
      tokenname=internal
      
      #nickname: nickname for agent certificate which will be used
      #to sign the CMC full request.
      nickname=PKI Administrator for Example.com
      
      #dbdir: directory for cert9.db, key4.db and pkcs11.txt
      dbdir=~/.dogtag/pki-instance_name/
      
      #password: password for cert9.db which stores the agent
      #certificate
      password=password
      
      #format: request format, either pkcs10 or crmf
      format=crmf
      根据您的环境以及上一步中使用的 CSR 格式设置参数。
    2. 将之前创建的配置文件传递给 CMCRequest 工具,以创建 CMC 请求:
      # CMCRequest ~/cmc.role_crmf.cfg
  5. 通过 CMS (CMC)请求提交证书管理:
    1. 使用以下内容创建 ~/HttpClient_role_crmf.cfg 文件:
      # #host: host name for the http server
      host=server.example.com
      
      #port: port number
      port=8443
      
      #secure: true for secure connection, false for nonsecure connection
      secure=true
      
      #input: full path for the enrollment request, the content must be in binary format
      input=~/cmc.role_crmf.req
      
      #output: full path for the response in binary format
      output=~/cmc.role_crmf.resp
      
      #tokenname: name of token where SSL client authentication cert can be found (default is internal)
      #This parameter will be ignored if secure=false
      tokenname=internal
      
      #dbdir: directory for cert9.db, key4.db and pkcs11.txt
      #This parameter will be ignored if secure=false
      dbdir=~/.dogtag/pki-instance_name/
      
      #clientmode: true for client authentication, false for no client authentication
      #This parameter will be ignored if secure=false
      clientmode=true
      
      #password: password for cert9.db
      #This parameter will be ignored if secure=false and clientauth=false
      password=password
      
      #nickname: nickname for client certificate
      #This parameter will be ignored if clientmode=false
      nickname=PKI Administrator for Example.com
      
      #servlet: servlet name
      servlet=/ca/ee/ca/profileSubmitCMCFull
      
      根据您的环境设置参数。
    2. 向 CA 提交请求:
      # HttpClient ~/HttpClient_role_crmf.cfg
      Total number of bytes read = 3776
      after SSLSocket created, thread token is Internal Key Storage Token
      client cert is not null
      handshake happened
      writing to socket
      Total number of bytes read = 2523
      MIIJ1wYJKoZIhvcNAQcCoIIJyDCCCcQCAQMxDzANBglghkgBZQMEAgEFADAxBggr
      ...
      The response in data format is stored in ~/cmc.role_crmf.resp
    3. 验证结果:
      # CMCResponse ~/cmc.role_crmf.resp
      Certificates:
          Certificate:
              Data:
                  Version:  v3
                  Serial Number: 0xE
                  Signature Algorithm: SHA256withRSA - 1.2.840.113549.1.1.11
                  Issuer: CN=CA Signing Certificate,OU=pki-instance_name Security Domain
                  Validity:
                      Not Before: Friday, July 21, 2017 12:06:50 PM PDT America/Los_Angeles
                      Not  After: Wednesday, January 17, 2018 12:06:50 PM PST America/Los_Angeles
                  Subject: CN=user_name
      ...
      Number of controls is 1
      Control #0: CMCStatusInfoV2
         OID: {1 3 6 1 5 5 7 7 25}
         BodyList: 1
         Status: SUCCESS
  6. (可选)以用户身份将证书导入到自己的 ~/.dogtag/pki-instance_name/ 数据库:
    # certutil -d ~/.dogtag/pki-instance_name/ -A -t "u,u,u" -n "user_name certificate" -i ~/cmc.role_crmf.resp
  7. 将证书添加到用户记录中:
    1. 列出向用户发现证书的序列号的证书。例如,列出证书主题中包含 示例 用户名的证书:
      pki -d ~/.dogtag/pki-instance_name/ -c password -n caadmin ca-user-cert-find example
      -----------------
      1 entries matched
      -----------------
        Cert ID: 2;6;CN=CA Signing Certificate,O=EXAMPLE;CN=PKI Administrator,E=example@example.com,O=EXAMPLE
        Version: 2
        Serial Number: 0x6
        Issuer: CN=CA Signing Certificate,O=EXAMPLE
        Subject: CN=PKI Administrator,E=example@example.com,O=EXAMPLE
      ----------------------------
      Number of entries returned 1
      下一步需要证书的序列号。
    2. 使用证书仓库中的序列号将证书添加到证书系统数据库中的用户帐户。例如,对于 CA 用户:
      pki -c password -n caadmin ca-user-cert-add example --serial 0x6
15.3.2.1.2. 使用控制台创建用户
注意
pkiconsole 已被弃用。
使用 PKI 控制台创建用户:
  1. 登录到管理控制台。
    pkiconsole https://server.example.com:8443/subsystem_type
  2. Configuration 选项卡中,选择 Users and Groups。点击 Add
  3. Edit User Information 对话框中填写信息。
    大多数信息都是标准用户信息,如用户名、电子邮件地址和密码。此窗口还包含一个名为 User State 的字段,它可以包含任何字符串,用于添加用户的附加信息;最重要的是,此字段可以显示是否活动用户。
  4. 选择用户所属的组。用户的组成员资格决定了用户拥有的权限。将代理、管理员和审核员分配给适当的子系统组。
  5. 存储用户的证书。
    1. 通过 CA 端到端服务页面请求用户证书。
    2. 如果没有为用户配置文件配置自动注册,则批准证书请求。
    3. 使用通知电子邮件中提供的 URL 检索证书,并将 base-64 编码证书复制到本地文件或剪贴板。
    4. 选择新用户条目,然后单击 Certificates
    5. 单击 Import,并粘贴到 base-64 编码证书。

15.3.2.2. 更改证书系统用户的证书

  1. 登录到管理控制台。
  2. 选择 User and Groups
  3. 从用户 ID 列表中选择要编辑的用户,然后单击 Certificates
  4. 单击 Import 以添加新证书。
  5. Import Certificate 窗口中,将新证书粘贴到文本区域中。包括 -----BEGIN CERTIFICATE----------END CERTIFICATE----- 标记行。

15.3.2.3. 续订管理员、代理和审核员用户证书

更新证书的方法有两种。重新生成证书 会取其原始密钥及其原始配置集和请求,并使用新的有效期和过期日期重新创建相同的密钥。重新加密 证书将初始证书请求重新提交到原始配置文件,但会生成一个新密钥对。管理员可以通过重新密钥来更新管理员证书。
每个子系统都有一个 bootstrap 用户,该用户在创建子系统时创建。在使用默认续订配置文件之一之前,可为此用户请求新证书。
可以使用原始证书的序列号直接在最终用户注册表单中续订管理用户的证书。
  1. 以 CA 最终用户形式续订管理员用户证书,如 第 5.4.1.1.2 节 “基于证书的续订” 所述。这必须与首次发布的证书(或克隆)相同。
    通过在结束日期页面中使用基于证书的续订表单,可以续订代理证书。自我续订用户 SSL 客户端证书。此表单可识别并更新存储在浏览器的证书存储中的证书。
    注意
    也可以使用 certutil 续订证书,如 第 17.3.3 节 “使用 certutil 续订证书” 所述。certutil 使用带有原始密钥的输入文件,而不是使用存储在浏览器中的证书启动续订。
  2. 将更新的用户条目添加到内部 LDAP 数据库中的用户条目。
    1. 打开子系统的控制台。
      pkiconsole https://server.example.com:admin_port/subsystem_type
    2. 配置 | 用户和组 | 用户 | 管理员 | 证书 | 导入
    3. Configuration 选项卡中,选择 Users and Groups
    4. Users 选项卡中,双击带有更新的证书的用户条目,然后单击 Certificates
    5. 单击 Import,并粘贴到 base-64 编码证书。
    注意
    pkiconsole 已被弃用。
    这可以通过使用 ldapmodify 将更新的认证直接添加到内部 LDAP 数据库中的用户条目中,方法是替换用户条目中的 userCertificate 属性,如 uid=admin,ou=body,dc=subsystem-base-DN

15.3.2.4. 续订过期的管理员、代理和审核员用户证书

当有效的用户证书已过期时,您无法再使用 Web 服务页面或 pki 命令行工具需要身份验证。在这种情况下,您可以使用 pki-server cert-fix 命令来续订过期的证书。
在继续操作前,请确保:
  • 您有一个有效的 CA 证书。
  • 您有 root 权限。

过程 15.1. 续订过期的管理员、代理和审核员用户证书

  1. 禁用自我测试。
    • 运行以下命令:
      # pki-server selftest-disable -i PKI_instance
    • 从 CA 的 CS.cfg 文件中删除以下行并重启 CA 子系统:
      selftests.container.order.startup=CAPresence:critical, SystemCertsVerification:critical
  2. 检查客户端的 NSS 数据库中过期的证书,并查找证书的序列号(certificate ID)。
    1. 列出用户证书:
      # certutil -L -d /root/nssdb/
    2. 获取您要续订的过期证书序列号:
      # certutil -L -d /root/nssdb/ -n Expired_cert | grep Serial
          Serial Number: 16 (0x10)
  3. 续订证书。本地 LDAP 服务器需要 LDAP 目录管理器的密码。
    # pki-server cert-fix --ldap-url ldap://host389 --agent-uid caadmin -i PKI_instance -p PKI_https_port --extra-cert 16
  4. 重新提升的自我测试。
    • 运行以下命令:
      # pki-server selftest-enable -i PKI_instance
    • 或者将以下行添加到 CA 的 CS.cfg 文件中,并重启 CA 子系统:
      selftests.container.order.startup=CAPresence:critical, SystemCertsVerification:critical
要验证您在证书续订中是否成功,您可以运行以下命令来显示有关证书的足够信息:
# pki ca-cert-find
要查看特定证书的完整详情,包括属性、扩展、公钥 modulus、哈希等,您也可以运行:
# pki ca-cert-show 16 --pretty

15.3.2.5. 删除证书系统用户

用户可以从内部数据库中删除。从内部数据库中删除用户会从用户所属的所有组中删除该用户。要从特定组中删除用户,请修改组成员资格。
通过执行以下操作,从内部数据库中删除特权用户:
  1. 登录到管理控制台。
  2. 从左侧的导航菜单中选择 Users and Groups
  3. 从用户 ID 列表中选择用户,然后单击 Delete
  4. 提示时确认删除。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.