11.3. 为 CA、OCSP、KRA 或 TKS 管理用户和组
用户可以执行的操作的许多操作都由他们所属的组指定;例如,CA 的代理管理证书和密钥,而管理员则管理 CA 服务器配置。
四个子系统 - CA、OCSP、KRA 和 TKS - 使用 Java 管理控制台管理组和用户。TPS 具有基于 Web 的管理服务,用户和组通过其 Web 服务页面进行配置。
11.3.1. 管理组 复制链接链接已复制到粘贴板!
11.3.1.1. 创建新组 复制链接链接已复制到粘贴板!
登录到管理控制台。
# pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/subsystem_type注意pkiconsole已被弃用,并将在以后的主发行版本中被新的基于浏览器的 UI 替代。虽然pkiconsole在发布替代 UI 之前继续可用,但我们鼓励在此鼓励使用命令行与pkiconsole等效,因为 pki CLI 将继续支持并在将来有新的基于浏览器的 UI 时受到改进。- 从左侧的导航菜单中选择 Users and Groups。
- 选择 Groups 选项卡。
单击 ,然后填写组信息。
只能添加内部数据库中已存在的用户。
- 编辑 ACL 以授予组特权。请参阅 第 11.4.3.1 节 “编辑 ACL” 了解更多信息。如果没有将 ACI 添加到组的 ACL 中,则组对证书系统的任何部分都没有访问权限。
11.3.1.2. 更改组中的成员 复制链接链接已复制到粘贴板!
可以从所有组添加或删除成员。管理员的组必须至少有一个用户条目。
- 登录到管理控制台。
- 从左侧的导航树中选择" 用户和组 "。
- 点 Groups 选项卡。
- 从名称列表中选择组,然后单击 。
进行适当的更改。
- 要更改组描述,请在 Group description 字段中键入新描述。
- 若要从组中删除用户,请选择用户,然后单击 。
- 要添加用户,请单击 。从对话框中选择要添加的用户,。
11.3.2. 管理用户(管理员、代理和审核员) 复制链接链接已复制到粘贴板!
每个子系统的用户单独维护。只是因为一个子系统中的管理员并不意味着个人具有其他子系统的任何权利(甚至用户条目)。用户可以配置,并与其用户证书(被信任为代理、管理员或子系统审核员)进行配置。
11.3.2.1. 创建角色用户 复制链接链接已复制到粘贴板!
安装证书系统后,只有设置中创建的 bootstrap 用户存在。要创建其他角色用户,您可以使用命令行或控制台。在本小节中,假设您已创建了 CA admin 用户(例如 )jgenie 和 CA 代理用户(如 jsmith),它遵循 7.12 "Create PKI role users" in planning , Installation and Deployment Guide (Common criteria Edition)。
出于安全性和审计的原因,为证书系统用户和管理员创建单独的帐户。
11.3.2.1.1. 注册用户证书 复制链接链接已复制到粘贴板!
角色用户必须拥有个人证书以进行身份验证。以下流程描述了如何用户注册证书。
以用户身份,创建一个证书请求,然后发送到 CA 代理:
如果您的证书系统环境中存在密钥恢复授权(KRA):
# CRMFPopClient -d /home/example-user/certs_db -p password -n "CN=user_name" -q POP_SUCCESS -b kra.transport -w "AES KeyWrap/Wrapped" -v -o ~/user_name.req -oaep Initializing security database: /home/example-user/certs_db archival option enabled Loading transport certificate Parsing subject DN RDN: CN=user_name Generating key pair: temporary: false Keypair private key id: 2eb823eea69e01f0892345dd7d7603be5b9ad2ec Using key wrap algorithm: AES KeyWrap/Wrapped Creating certificate request Creating signer Creating POP Creating CRMF request Storing CRMF request into /home/example-user/certs_db/user_name.req Storing CRMF request key id into /home/example-user/certs_db/user_name.req.keyId此命令会在
~/user_name.req文件中以CRMF格式存储证书签名请求(CSR)。将 CSR 请求文件发送到 CA 代理。如果您的证书系统环境中不存在密钥恢复授权(KRA):
# PKCS10Client -d /home/example-user/certs_db -p password -n "CN=user_name" -o ~/user_name.req PKCS10Client: Certificate request written into /home/example-user/certs_db/user_name.req PKCS10Client: PKCS#10 request key id written into /home/example-user/certs_db/user_name.req.keyId "此命令将 CSR 以
pkcs10格式存储在~/user_name.req文件中。将 CSR 请求文件发送到 CA 代理。
作为 CA 代理,使用接收的 CSR 文件作为输入创建注册请求:
使用以下内容创建
~/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 a 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=jsmith - CA Agent for Example.com #dbdir: directory for cert9.db, key4.db and pkcs11.txt dbdir=/home/jsmith/certs_db #password: password for cert9.db which stores the agent #certificate password=password #format: request format, either pkcs10 or crmf format=crmf根据您的环境和上一步中使用的 CSR 格式设置参数。
将之前创建的配置文件传递给
CMCRequest工具,以创建 CMC 请求:# CMCRequest ~/cmc.role_crmf.cfg
作为 CA 代理
jsmith,提交 CMC (证书管理 over CMS)请求:使用以下内容创建
~/HttpClient_role_crmf.cfg文件:# #host: host name for the http server host=server.example.com #port: CA 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=/home/jsmith/certs_db #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=jsmith - CA Agent for Example.com #servlet: servlet name servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caFullCMCUserCert根据您的环境设置参数。
将请求提交到 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验证结果:
# CMCResponse -i ~/cmc.role_crmf.resp Certificates: Certificate: Data: Version: v3 Serial Number: 0xF9D290B Signature Algorithm: SHA512withEC - 1.2.840.10045.4.3.4 Issuer: CN=CA Signing Certificate,OU=rhcs10-ECC-SubCA,O=Example-rhcs10-ECC-RootCA Validity: Not Before: Friday, January 26, 2024 12:50:37 AM PST America/Los_Angeles Not After: Wednesday, July 24, 2024 12:50:37 AM PDT 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如果颁发成功,请检索新发布的
.crt证书文件:# pki -d /home/jsmith/certs_db -c password -p 8443 -n 'jsmith - CA Agent for Example.com' ca-cert-export 0xF9D290B --output-file ~/user.crtCA 代理
jsmith然后将证书发送到请求的用户。
以请求用户身份,将从 CA 代理
jsmith接收的证书导入到自己的 <user home directory> /certs_db/数据库中:# certutil -d ~/certs_db -A -t "u,u,u" -n "user_name" -i ~/user.crt
11.3.2.1.2. 使用命令行创建用户 复制链接链接已复制到粘贴板!
使用命令行创建用户:
作为 CA 管理员(如
jgenie),添加一个用户帐户。例如,将user_name用户添加到 CA 中:# pki -d /home/jgenie/certs_db -c password -n caadmin ca-user-add user_name --fullName "Example User" ---------------------- Added user "user_name" ---------------------- User ID: user_name Full name: Example User此命令使用 CA admin 用户添加新帐户。
(可选)作为 CA 管理员(如
jgenie),将用户添加到组中。例如,要将user_name用户添加到Certificate Manager Agents组中:# pki -d /home/jgenie/certs_db -c password -n "caadmin" ca-user-membership-add user_name "Certificate Manager Agents" ------------------------------------------------ Added membership in "Certificate Manager Agents" ------------------------------------------------ Group: Certificate Manager Agents作为 CA 管理员,将证书添加到用户记录中:
使用其序列号或证书文件将证书添加到证书系统数据库中的用户帐户。例如,对于
user_name用户:# pki -d /home/jgenie/certs_db/ -c password -n jgenie ca-user-cert-add user_name --input ~/user.crt或者
# pki -d /home/jgenie/certs_db/ -c password -n jgenie ca-user-cert-add user_name --serial 0xF9D290B ---------------------------------------------------------------------------------------------------------------------- Added certificate "2;261957899;CN=CA Signing Certificate,OU=rhcs10-ECC-SubCA,O=Example-rhcs10-ECC-RootCA;CN=user_name" ---------------------------------------------------------------------------------------------------------------------- Cert ID: 2;261957899;CN=CA Signing Certificate,OU=rhcs10-ECC-SubCA,O=Example-rhcs10-ECC-RootCA;CN=user_name Version: 2 Serial Number: 0xf9d290b Issuer: CN=CA Signing Certificate,OU=rhcs10-ECC-SubCA,O=Example-rhcs10-ECC-RootCA Subject: CN=user_name验证证书是否已添加到用户记录中。例如,列出在证书主体中包含
user_name用户的证书:# pki -d /home/jgenie/certs_db/ -c password -n jgenie ca-user-cert-find user_name ----------------- 1 entries matched ----------------- Cert ID: 2;261957899;CN=CA Signing Certificate,OU=rhcs10-ECC-SubCA,O=Example-rhcs10-ECC-RootCA;CN=user_name Version: 2 Serial Number: 0xf9d290b Issuer: CN=CA Signing Certificate,OU=rhcs10-ECC-SubCA,O=Example-rhcs10-ECC-RootCA Subject: CN=user_name ---------------------------- Number of entries returned 1 ----------------------------
11.3.2.1.3. 使用控制台创建用户 复制链接链接已复制到粘贴板!
使用 PKI 控制台创建用户:
登录到管理控制台。
# pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/subsystem_type注意pkiconsole已被弃用,并将在以后的主发行版本中被新的基于浏览器的 UI 替代。虽然pkiconsole在发布替代 UI 之前继续可用,但我们鼓励在此鼓励使用命令行与pkiconsole等效,因为 pki CLI 将继续支持并在将来有新的基于浏览器的 UI 时受到改进。- 在 Configuration 选项卡中,选择" 用户和组 "。点。
在 Edit User Information 对话框中填写信息。
大多数信息都是标准用户信息,如用户名、电子邮件地址和密码。此窗口还包含名为 User State 的字段,它可以包含任何字符串,用于添加用户的附加信息;基本上,此字段可以显示是否是活动用户。
- 选择用户所属的组。用户的组成员资格决定了用户具有哪些特权。将代理、管理员和审核员分配给适当的子系统组。
添加用户的证书。
- 通过 CA 端到端服务页面请求用户证书。
- 如果没有为用户配置文件配置自动注册,则批准证书请求。
-
将
user.crt的内容(从 第 11.3.2.1.1 节 “注册用户证书”)复制到剪贴板。 - 选择新用户条目,然后单击 。
- 单击 ,并粘贴 base-64 编码证书。
11.3.2.2. 更改证书系统用户证书 复制链接链接已复制到粘贴板!
- 登录到管理控制台。
- 选择 "用户和组 "。
- 从用户 ID 列表中选择要编辑的用户,然后单击 。
- 单击 以添加新证书。
-
在 Import Certificate 窗口中,将新证书粘贴到文本区域中。包含
-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----标记行。
11.3.2.3. 续订管理员、代理和审核员用户证书 复制链接链接已复制到粘贴板!
有两种方法可以续订证书。重新生成证书 获取其原始密钥及其原始配置文件和请求,并使用新的有效期和过期日期重新创建相同的密钥。重新密钥 证书将初始证书请求重新提交到原始配置文件,但生成新的密钥对。管理员可以通过重新密钥来续订管理员证书。
每个子系统都有一个在创建子系统时创建的 bootstrap 用户。用户可以使用一个默认的续订配置文件之一,为此用户请求新证书。
管理用户的证书可以直接在最终用户注册表单中,使用原始证书的序列号。
- 续订管理员用户证书。详情请查看 第 5.4 节 “续订证书”。
将更新的用户证书添加到内部 LDAP 数据库中的用户条目。
打开子系统控制台。
# pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:admin_port/subsystem_type注意pkiconsole已被弃用,并将在以后的主发行版本中被新的基于浏览器的 UI 替代。虽然pkiconsole在发布替代 UI 之前继续可用,但我们鼓励在此鼓励使用命令行与pkiconsole等效,因为 pki CLI 将继续支持并在将来有新的基于浏览器的 UI 时受到改进。- 配置 | 用户和组 | 用户 | admin | 证书 | 导入
- 在 Configuration 选项卡中,选择" 用户和组 "。
- 在 Users 选项卡中,使用更新的证书双击用户条目,然后单击 。
- 单击 ,并粘贴 base-64 编码证书。
这也可以通过使用 ldapmodify 直接将更新的认证添加到内部 LDAP 数据库中的用户条目,方法是替换用户条目中的 userCertificate 属性,如 uid=admin,ou=people,dc=subsystem-base-DN。
11.3.2.4. 删除证书系统用户 复制链接链接已复制到粘贴板!
用户可以从内部数据库中删除。从内部数据库删除用户将从用户所属的所有组中删除该用户。要从特定组中删除该用户,请修改组成员资格。
通过执行以下操作从内部数据库中删除特权用户:
- 登录到管理控制台。
- 从左侧的导航菜单中选择 Users and Groups。
- 从用户 ID 列表中选择用户,然后单击 。
- 提示时确认删除。
另外,您可以以管理员身份在 CLI 中运行以下命令删除系统用户:
# pki -d /home/jgenie/certs_db -c password -n caadmin ca-user-del user_name ------------------------ Deleted user "user_name" ------------------------