管理 IdM 中的证书
大约 177 分钟
管理 IdM 中的证书
来源:官方文档 原始多页入口:管理 IdM 中的证书 内容规模:约 173,371 字符,184 个章节标题,608 个命令/代码块,75 条提示框
阅读提要
- 副标题:发布证书、配置基于证书的身份验证和控制证书的有效性
- 摘要:管理员使用 X.509 证书来验证用户、主机和服务,并启用数字签名和加密。在身份管理(IdM)中,您可以使用集成或外部证书颁发机构(CA)来管理证书。您可以使用 certmongerservice、certutiltool 或 Ansible Playbook 请求和更新证书。要替换 IdM 服务器的 Web 服务器和 LDAP 服务器证书,您必须执行手动操作。Administrators 可以创建轻量级子 CA 来为特定目的发布证书,如 VPN 网关的用户证书。然后,当不再需要这个 VPN 网关时,管理员可以通过撤销子 CA 的证书来使该服务的所有证书无效。
- 主要章节:发布证书、配置基于证书的身份验证和控制证书的有效性;对红帽文档提供反馈;第 1 章 身份管理中的公钥证书;第 2 章 使用 Ansible 管理 IdM 证书;第 3 章 使用集成的 IdM CA 为用户、主机和服务管理证书;第 4 章 管理 IdM 用户、主机和服务的外部签名证书;第 5 章 转换证书格式以便和 IdM 一起工作;第 6 章 在身份管理中创建和管理证书配置文件;第 7 章 管理 IdM 中证书的有效性;第 8 章 为智能卡验证配置身份管理;第 9 章 为 IdM 中智能卡验证配置 ADCS 发布的证书;第 10 章 身份管理中的证书映射规则
- 推荐阅读顺序:先看“阅读提要”和目录,再按章节查看“关键点/命令/注意”;需要原文细节时点击来源链接。
章节笔记
概览
- 该章节主要为下一级主题的入口。
发布证书、配置基于证书的身份验证和控制证书的有效性
- 要点:摘要
对红帽文档提供反馈
- 要点:我们致力于为您提供高质量的文档,您的反馈将对我们有很大帮助。为帮助我们改进,您可以通过 Red Hat Jira 跟踪系统提交建议或报告错误。
- 要点:流程
- 列表:登录到 Jira 网站。 如果您还没有帐户,请创建一个。
- 列表:单击顶部导航栏中的 Create。
- 列表:在 Summary 字段中输入描述性标题。
- 列表:在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 列表:点窗口底部的 Create。
第 1 章 身份管理中的公钥证书
- 要点:您可以使用身份管理(IdM)中的 X.509 公钥证书来验证用户、主机和服务。除了验证外,X.509 证书还支持启用数字签名和加密,以提供隐私性、完整性和不可抵赖性。
- 要点:证书包含以下信息:
- 列表:证书验证的主题。
- 列表:签发者,即签署证书的 CA。
- 列表:证书有效性的开始和结束日期。
- 列表:证书的有效使用。
- 列表:主题的公钥。
1.1. IdM 中的证书颁发机构
- 要点:证书颁发机构以信任层次结构运行。在带有内部证书颁发机构(CA)的 IdM 环境中,所有 IdM 主机、用户和服务都信任 CA 签名的证书。除了这个根 CA 外,IdM 还支持子 CA,其 root CA 已授权依次获得签署证书的能力。通常,此类能够签名的子 CA 证书是特定类型的证书,如 VPN 证书。最后,IdM 支持使用外部 CA。下表显示了在 IdM 中使用各个 CA 类型的具体情况。
- 要点:从证书的角度来看,自签名的 IdM CA 签名的和外部签名的证书之间没有区别。
- 列表:它发布数字证书。
- 列表:通过签署证书,它证明证书中命名的对象拥有一个公钥。主题可以是用户、主机或服务。
- 列表:它可以撤销证书,并通过证书撤销列表(CRL)和在线证书状态协议(OCSP)提供撤销状态。
- 列表:使用 ipa CA 来请求一个新用户证书,并将其导出到客户端
- 列表:将应用程序限制为只信任证书子集
- 列表:管理 IdM 用户、主机和服务的外部签名证书
- 表格样本(共 4 行):
- CA 的名称 | 描述 | 使用
- ipa CA | 基于 Dogtag 上游项目的集成 CA | 集成的 CA 可以为用户、主机和服务创建、撤销和发布证书。
- IdM 子 CA | 隶属于 ipa CA 的集成 CA | IdM 子 CA 是 ipa CA 授权可以签署证书的 CA。通常,这些证书是特定类型的,如 VPN 证书。
- 外部 CA | 外部 CA 是集成 IdM CA 或其子 CA 以外的 CA。 | 使用 IdM 工具,您可以将这些 CA 发布的证书添加到用户、服务或主机,也可以删除它们。
1.2. 证书和 Kerberos 的比较
- 要点:证书执行的功能与 Kerberos 票据执行的功能类似。Kerberos 是一种计算机网络身份验证协议,它根据票据来允许节点通过非安全网络进行通信,从而以安全的方式证明它们相互的身份。下表显示了 Kerberos 和 X.509 证书的比较:
- 要点:默认情况下,身份管理中的 Kerberos 仅确保通信双方的身份。
- 表格样本(共 6 行):
- 特性 | Kerberos | X.509
- 身份验证 | 是 | 是
- 隐私 | 可选 | 是
- 完整性 | 可选 | 是
1.3. 使用证书验证 IdM 中用户的优缺点
- 要点:使用证书验证 IdM 中用户的优点包括:
- 要点:使用证书验证 IdM 中用户的缺点包括:
- 列表:与常规密码相比,保护智能卡上私钥的 PIN 通常不复杂、更容易记住。
- 列表:根据设备,无法导出保存在智能卡上的私钥。这提供了额外的安全性。
- 列表:智能卡可以自动注销: IdM 可以配置为在用户从读卡器中删除智能卡时注销用户。
- 列表:窃取私钥需要对智能卡的实际访问,从而使智能卡免受黑客攻击。
- 列表:智能卡验证是一个双因素验证的示例:它需要您拥有的东西(卡)和您知道的东西(PIN)。
- 列表:智能卡比密码更灵活,因为它们提供可用于其他用途的密钥,如加密电子邮件。
第 2 章 使用 Ansible 管理 IdM 证书
- 要点:使用 ansible-freeipa ipacert 模块为身份管理(IdM)用户、主机和服务请求、撤销和检索 SSL 证书。您还可以恢复已搁置的证书。
2.1. 使用 Ansible 为 IdM 主机、服务和用户请求 SSL 证书
- 要点:使用 Ansible 自动 SSL 证书请求,以在 IdM 实体之间建立加密的可信连接并启用基于证书的身份验证。
- 要点:以下示例使用 ansible-freeipa freeipa.ansible_freeipa.ipacert 模块从 IdM 证书颁发机构(CA)为 HTTP 服务器请求 SSL 证书。
- 列表:在控制节点上: 您在使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您在使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(也就是在其上执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
# openssl req -new -newkey rsa:2048 -days 365 -nodes -keyout new.key \ -out new.csr -subj '/CN=client.idm.example.com,O=IDM.EXAMPLE.COM'
--- - name: Playbook to request a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Request a certificate for a web server freeipa.ansible_freeipa.ipacert: ipaadmin_password: "{{ ipaadmin_password }}" state: requested csr: | -----BEGIN CERTIFICATE REQUEST----- MIGYMEwCAQAwGTEXMBUGA1UEAwwOZnJlZWlwYSBydWxlcyEwKjAFBgMrZXADIQBs HlqIr4b/XNK+K8QLJKIzfvuNK0buBhLz3LAzY7QDEqAAMAUGAytlcANBAF4oSCbA 5aIPukCidnZJdr491G4LBE+URecYXsPknwYb+V+ONnf5ycZHyaFv+jkUBFGFeDgU SYaXm/gF8cDYjQI= -----END CERTIFICATE REQUEST----- principal: HTTP/client.idm.example.com register: cert2.2. 使用 Ansible 为 IdM 主机、服务和用户撤销 SSL 证书
- 要点:您可以使用 ansible-freeipa freeipa.ansible_freeipa.ipacert 模块撤销身份管理(IdM)用户、主机和服务用来向 IdM 进行身份验证的 SSL 证书。
- 要点:使用以下示例为 HTTP 服务器撤销证书。吊销证书的原因是"keyCompromise"。
- 列表:在控制节点上: 您在使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您在使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(也就是在其上执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to revoke a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Revoke a certificate for a web server freeipa.ansible_freeipa.ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 revocation_reason: "keyCompromise" state: revoked
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/revoke-certificate.yml2.3. 使用 Ansible 为 IdM 用户、主机和服务恢复 SSL 证书
- 要点:当您恢复私钥并确认在保存期间没有被破坏时,从 使用 Ansible playbook 发布证书。
- 要点:您可以使用 ansible-freeipa ipacert 模块恢复之前由身份管理(IdM)用户、主机或服务用来向 IdM 进行身份验证的已撤销的 SSL 证书。以下示例描述了如何发布 HTTP 服务的证书。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您在使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您在使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您的 IdM 部署有一个集成的 CA。
- 命令/配置摘录:
--- - name: Playbook to restore a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Restore a certificate for a web service ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 state: released
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/restore-certificate.yml- 注意:注意 您只能恢复搁置的证书。您可能已将其搁置,例如,您不确定私钥是否已丢失。但是,您现在已恢复了密钥,并且您确定没有人在同时访问它,所以您希望重新恢复证书。
2.4. 使用 Ansible 为 IdM 用户、主机和服务检索 SSL 证书
- 要点:使用 Ansible 从身份管理(IdM)检索现有的 SSL 证书,并将其存储在受管节点上,供用户、主机或服务使用。
- 要点:先决条件
- 列表:在控制节点上: 您在使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您在使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(也就是在其上执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to retrieve a certificate and store it locally on the managed node hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Retrieve a certificate and save it to file 'cert.pem' freeipa.ansible_freeipa.ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 certificate_out: cert.pem state: retrieved
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/retrieve-certificate.yml2.5. 其他资源
- 列表:身份管理中的公钥证书
第 3 章 使用集成的 IdM CA 为用户、主机和服务管理证书
- 要点:管理员通过集成的 IdM 证书颁发机构向用户、主机和服务管理证书生命周期。这种中央控制允许简化整个域基础架构的颁发、吊销和续订。
3.1. 使用 IdM Web UI 为用户、主机或服务请求新证书
- 要点:您可以使用身份管理(IdM) Web UI 为来自集成 IdM 证书颁发机构(CA)的任何 IdM 实体请求新证书: ipa CA 或其任何子 CA。
- 要点:IdM 实体包括:
- 列表:用户
- 列表:主机
- 列表:服务
- 列表:您的 IdM 部署包含一个集成 CA。
- 列表:以 IdM 管理员身份登录到 IdM Web UI。
- 列表:在 Identity 选项卡下,选择 Users、Hosts 或 Services 子选项卡。
- 注意:重要 服务通常在其上存储了私钥的专用服务节点上运行。将服务的私钥复制到 IdM 服务器被视为不安全。因此,在为服务请求证书时,请在服务节点上创建证书签名请求(CSR)。
3.2. 使用 certutil 从 IdM CA 中为用户、主机或服务请求新证书
- 要点:您可以使用 certutil 工具在标准的 IdM 环境下为身份管理(IdM)用户、主机或服务请求证书。要确保主机或服务 Kerberos 别名可以使用证书,请 使用 openssl 工具来请求证书。
- 要点:先决条件
- 列表:您的 IdM 部署包含一个集成 CA。
- 列表:您已经以 IdM 管理员的身份登录到 IdM 命令行界面(CLI)。
- 列表:为证书数据库创建一个临时目录: # mkdir ~/certdb/
- 列表:例如,创建一个新的临时证书数据库: # certutil -N -d ~/certdb/
- 列表:创建 CSR,并将输出重定向到文件。例如,要为 4096 位证书创建一个 CSR,并将主题设为 CN=server.example.com,O=EXAMPLE.COM : # certutil -R -d ~/certdb/ -a -g 4096 -s "CN=server.example.com,O=EXAMPLE.COM" -8 server.example.com > certificate_request.csr
- 列表:将证书请求文件提交到 IdM 服务器上运行的 CA。指定要与新发布的证书关联的 Kerberos 主体: # ipa cert-request certificate_request.csr --principal=host/server.example.com IdM 中的 ipa cert-request 命令使用以下默认值: caIPAserviceCert 证书配置文件 要选择自定义配置文件,请使用 --profile-id 选项。 集成的 IdM root CA ipa 要选择子 CA,请使用 --ca 选项。
- 命令/配置摘录:
# mkdir ~/certdb/
# certutil -N -d ~/certdb/- 注意:重要 服务通常在其上存储了私钥的专用服务节点上运行。将服务的私钥复制到 IdM 服务器被视为不安全。因此,在为服务请求证书时,请在服务节点上创建证书签名请求(CSR)。
3.3. 使用 openssl 从 IdM CA 中为用户、主机或服务请求新证书
- 要点:如果要确保主机或服务的 Kerberos 别名可以使用证书,您可以使用 openssl 工具为身份管理(IdM)主机或服务请求证书。在标准情况下,请考虑 使用 certutil 工具来请求一个新证书。
- 要点:先决条件
- 列表:您的 IdM 部署包含一个集成 CA。
- 列表:您已经以 IdM 管理员的身份登录到 IdM 命令行界面(CLI)。
- 列表:为您的 Kerberos 主体 test/server.example.com 创建一个或多个别名。例如,test1/server.example.com 和 test2/server.example.com。
- 列表:在 CSR 中,为 dnsName(server.example.com)和 otherName(test2/server.example.com)添加 subjectAltName。要做到这一点,将 openssl.cnf 文件配置为包含以下指定 UPN otherName 和 subjectAltName 的行: otherName=1.3.6.1.4.1.311.20.2.3;UTF8:test2/server.example.com@EXAMPLE.COM DNS.1 = server.example.com
- 列表:使用 openssl 创建证书请求: # openssl req -new -newkey rsa:2048 -keyout test2service.key -sha256 -nodes -out certificate_request.csr -config openssl.cnf
- 列表:将证书请求文件提交到 IdM 服务器上运行的 CA。指定要与新发布的证书关联的 Kerberos 主体: # ipa cert-request certificate_request.csr --principal=host/server.example.com IdM 中的 ipa cert-request 命令使用以下默认值: caIPAserviceCert 证书配置文件 要选择自定义配置文件,请使用 --profile-id 选项。 集成的 IdM root CA ipa 要选择子 CA,请使用 --ca 选项。
- 命令/配置摘录:
otherName=1.3.6.1.4.1.311.20.2.3;UTF8:test2/server.example.com@EXAMPLE.COM DNS.1 = server.example.com
# openssl req -new -newkey rsa:2048 -keyout test2service.key -sha256 -nodes -out certificate_request.csr -config openssl.cnf- 注意:重要 服务通常在其上存储了私钥的专用服务节点上运行。将服务的私钥复制到 IdM 服务器被视为不安全。因此,在为服务请求证书时,请在服务节点上创建证书签名请求(CSR)。
第 4 章 管理 IdM 用户、主机和服务的外部签名证书
- 要点:管理员使用身份管理(IdM)命令行界面(CLI)和 IdM Web UI 将外部签名的证书与内部帐户关联。此集成允许用户、主机和服务使用第三方或企业证书颁发机构发布的凭据进行身份验证。
4.1. 使用 IdM CLI ,将外部 CA 发布的证书添加到 IdM 用户、主机或服务
- 要点:ipa 命令行工具可让管理员将特定的外部证书附加到 IdM 实体。ipa user-add-cert 等命令接受 Base64 编码的字符串,将外部凭证直接链接到指定用户、主机或服务帐户。
- 要点:先决条件
- 列表:您已获得管理员用户的票据授予票据。
- 列表:要为 IdM 用户添加证书,请输入: $ ipa user-add-cert user --certificate=MIQTPrajQAwg...
- 列表:指定以下信息: 用户名 Base64 编码的 DER 证书 注意 不是将证书内容复制并粘贴到命令行,您可以将证书转换为 DER 格式,然后将其重新编码为 Base64。例如,要将 user_cert.pem 证书添加给 user,请输入: $ ipa user-add-cert user --certificate="$(openssl x509 -outform der -in user_cert.pem | base64 -w 0)" 您可以在不添加任何选项的情况下,以交互方式运行 ipa user-add-cert 命令。 要将证书添加到 IdM 主机,请输入:ipa host-add-cert 要将证书添加到 IdM 服务…
- 列表:用户名
- 列表:Base64 编码的 DER 证书 注意 不是将证书内容复制并粘贴到命令行,您可以将证书转换为 DER 格式,然后将其重新编码为 Base64。例如,要将 user_cert.pem 证书添加给 user,请输入: $ ipa user-add-cert user --certificate="$(openssl x509 -outform der -in user_cert.pem | base64 -w 0)"
- 列表:要将证书添加到 IdM 主机,请输入:ipa host-add-cert
- 命令/配置摘录:
$ ipa user-add-cert user --certificate=MIQTPrajQAwg...
$ ipa user-add-cert user --certificate="$(openssl x509 -outform der -in user_cert.pem | base64 -w 0)"- 注意:注意 不是将证书内容复制并粘贴到命令行,您可以将证书转换为 DER 格式,然后将其重新编码为 Base64。例如,要将 user_cert.pem 证书添加给 user,请输入: $ ipa user-add-cert user --certificate="$(openssl x509 -outform der -in user_cert.pem | base64 -w 0)"
4.2. 使用 IdM Web UI 将外部 CA 发布的证书添加到 IdM 用户、主机或服务中
- 要点:IdM Web UI 提供了一个图形界面来上传外部证书。管理员导航到目标实体的配置文件页面,并将 PEM 或 Base64 编码的证书数据直接粘贴到配置字段中以将其关联。
- 要点:先决条件
- 列表:您以管理用户的身份登录到身份管理(IdM)Web UI。
- 列表:打开 Identity 选项卡,然后选择 Users、Hosts 或 Services 子选项卡。
- 列表:单击用户、主机或服务的名称,以打开其配置页面。
- 列表:单击 Certificates 条目旁边的 Add。 将证书添加给用户帐户
- 列表:将 Base64 或 PEM 编码格式的证书粘贴到文本字段中,然后单击 Add。
- 列表:单击 Save 以保存更改。
4.3. 使用 IdM CLI 从 IdM 用户、主机或服务帐户中删除外部 CA 发布的证书
- 要点:作为身份管理(IdM)管理员,您可以使用身份管理(IdM)CLI 从 IdM 用户的帐户、主机或服务中删除外部签名的证书。
- 要点:先决条件
- 列表:您已获得管理员用户的票据授予票据。
- 列表:要从 IdM 用户中删除证书,请输入: $ ipa user-remove-cert user --certificate=MIQTPrajQAwg... 或者,您可以在不添加任何选项的情况下以交互方式运行 ipa user-remove-cert 命令。
- 列表:指定以下信息: 用户名 Base64 编码的 DER 证书 注意 不是将证书内容复制并粘贴到命令行,您可以将证书转换为 DER 格式,然后将其重新编码为 Base64。例如,要从user 中删除 user_cert.pem 证书,请输入: $ ipa user-remove-cert user --certificate="$(openssl x509 -outform der -in user_cert.pem | base64 -w 0)"
- 列表:用户名
- 列表:Base64 编码的 DER 证书
- 列表:要从 IdM 主机中删除证书,请输入: ipa host-remove-cert
- 命令/配置摘录:
$ ipa user-remove-cert user --certificate=MIQTPrajQAwg...
$ ipa user-remove-cert user --certificate="$(openssl x509 -outform der -in user_cert.pem | base64 -w 0)"- 注意:注意 不是将证书内容复制并粘贴到命令行,您可以将证书转换为 DER 格式,然后将其重新编码为 Base64。例如,要从user 中删除 user_cert.pem 证书,请输入: $ ipa user-remove-cert user --certificate="$(openssl x509 -outform der -in user_cert.pem | base64 -w 0)"
4.4. 使用 IdM Web UI 从 IdM 用户、主机或服务帐户中删除外部 CA 发布的证书
- 要点:作为身份管理(IdM)管理员,您可以使用身份管理(IdM)Web UI 从 IdM 用户的帐户、主机或服务中删除外部签名的证书。
- 要点:先决条件
- 列表:您以管理用户的身份登录到身份管理(IdM)Web UI。
- 列表:打开 Identity 选项卡,然后选择 Users、Hosts 或 Services 子选项卡。
- 列表:单击用户、主机或服务的名称,以打开其配置页面。
- 列表:单击要删除的证书旁边的 Actions ,然后选择 Delete。
- 列表:单击 Save 以保存更改。
4.5. 其他资源
- 列表:使用 Ansible playbook 确保 IdM 服务条目中存在外部签名的证书
第 5 章 转换证书格式以便和 IdM 一起工作
- 要点:管理员正确格式化证书以确保与 IdM 命令兼容。常见任务包括将外部证书加载到用户配置文件中,配置智能卡验证,以及导出凭证以进行浏览器兼容性。
5.1. IdM 中的证书格式和编码
- 要点:IdM 身份验证通过将显示的证书与存储的配置集数据进行比较来验证用户身份。虽然配置文件仅存储公共证书,但用户必须在身份验证过程中证明其具有对应的私钥。
- 要点:因此,将证书加载到用户配置文件的进程只接受不包含私钥的证书文件。
- 列表:用户添加了 kinit -X 命令的 X509_user_identity 参数的值,添加了连接到包含证书和密钥的智能卡的智能模块的路径: $ kinit -X X509_user_identity='PKCS11:opensc-pkcs11.so' idm_user
- 列表:用户添加两个文件作为 kinit -X 命令的 X509_user_identity 参数的值,一个包含证书,另一个包含私钥: $ kinit -X X509_user_identity='FILE:
/path/to/cert.pem,/path/to/cert.key' idm_user 有用的证书命令 要查看证书数据,如主题和签发者: $ openssl x509 -noout -text -in ca.pem 要比较两个证书在哪行不同: $ diff cert1.crt cert2.crt 要比较哪行中两个证书与两列中显示的输出不同: $ diff cert1.crt cert2.crt -y - 列表:IdM 中与证书相关的命令和格式
- 命令/配置摘录:
$ kinit -X X509_user_identity='PKCS11:opensc-pkcs11.so' idm_user
$ kinit -X X509_user_identity='FILE:`/path/to/cert.pem,/path/to/cert.key`' idm_user- 表格样本(共 3 行):
- 编码格式 | 人类可读 | 通用文件扩展名 | 接受编码格式的 IdM 命令示例
- PEM/base64 | 是 | .pem, .crt, .cer | ipa user-add-cert, ipa-server-certinstall, …
- DER | 否 | .der, .crt, .cer | ipa-server-certinstall, …
5.2. 在 IdM CLI 中转换外部证书,并将其加载到 IdM 用户帐户
- 要点:IdM CLI 需要特定剥离的 PEM 格式的证书。管理员使用 OpenSSL 将二进制 DER 或 PKCS.509 文件转换为 PEM 字符串,在使用 ipa user-add-cert 命令将标头和页脚行添加到用户条目前删除它们。
- 要点:流程
- 列表:将证书转换为 PEM 格式: 如果您的证书为 DER 格式: $ openssl x509 -in cert.crt -inform der -outform pem -out cert.pem 如果您的文件是 PKCS #12 格式,其通用文件扩展名为 .pfx 和.p12,并且包含证书、私钥和其他数据,请使用 openssl pkcs12 工具提取证书。提示时,输入保护存储在文件中私钥的密码: $ openssl pkcs12 -in cert_and_key.p12 -clcerts -nokeys -out cert.pem Enter Import Password:
- 列表:如果您的证书为 DER 格式: $ openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
- 列表:如果您的文件是 PKCS #12 格式,其通用文件扩展名为 .pfx 和.p12,并且包含证书、私钥和其他数据,请使用 openssl pkcs12 工具提取证书。提示时,输入保护存储在文件中私钥的密码: $ openssl pkcs12 -in cert_and_key.p12 -clcerts -nokeys -out cert.pem Enter Import Password:
- 列表:获得管理员凭证: $ kinit admin
- 列表:根据以下方法之一,使用 IdM CLI 将证书添加到用户帐户: 在将字符串添加到 ipa user-add-cert 命令前,使用 sed 工具删除 PEM 文件的第一行和最后一行(-----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE-----): $ ipa user-add-cert some_user --certificate="$(sed -e '/BEGIN CERTIFICATE/d;/END CERTIFICATE/d' cert.pem)" 将不包含 第一行和最后一行(-----BEGIN CERTIFICATE----- 和 -----END CERTIFICAT…
- 列表:在将字符串添加到 ipa user-add-cert 命令前,使用 sed 工具删除 PEM 文件的第一行和最后一行(-----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE-----): $ ipa user-add-cert some_user --certificate="$(sed -e '/BEGIN CERTIFICATE/d;/END CERTIFICATE/d' cert.pem)"
- 命令/配置摘录:
$ openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
$ openssl pkcs12 -in cert_and_key.p12 -clcerts -nokeys -out cert.pem- 注意:注意 您不能直接将包含证书的 PEM 文件作为输入传给 ipa user-add-cert 命令,无需先删除第一行和最后一行(-----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE-----): $ ipa user-add-cert some_user --cert=some_user_cert.pem 此命令会导致 "ipa: ERROR: Base64 decoding failed: Incorrect padding"错误消息。
5.3. 在 IdM Web UI 中转换外部证书以加载到 IdM 用户帐户
- 要点:IdM Web UI 通过接受带有或不使用标头的标准 PEM 或 Base64 格式来简化证书管理。管理员使用 OpenSSL 转换源文件,并将生成的文本直接粘贴到用户配置集界面中。
- 要点:流程
- 列表:使用 CLI,将证书转换为 PEM 格式: 如果您的证书为 DER 格式: $ openssl x509 -in cert.crt -inform der -outform pem -out cert.pem 如果您的文件是 PKCS #12 格式,其通用文件扩展名为 .pfx 和.p12,并且包含证书、私钥和其他数据,请使用 openssl pkcs12 工具提取证书。提示时,输入保护存储在文件中私钥的密码: $ openssl pkcs12 -in cert_and_key.p12 -clcerts -nokeys -out cert.pem Enter Import Password:
- 列表:如果您的证书为 DER 格式:
- 列表:如果您的文件是 PKCS #12 格式,其通用文件扩展名为 .pfx 和.p12,并且包含证书、私钥和其他数据,请使用 openssl pkcs12 工具提取证书。提示时,输入保护存储在文件中私钥的密码: $ openssl pkcs12 -in cert_and_key.p12 -clcerts -nokeys -out cert.pem Enter Import Password:
- 列表:在编辑器中打开证书,并复制内容。您可以包含 "-----BEGIN CERTIFICATE-----" and "-----END CERTIFICATE-----" 页眉和页脚行,但不必这样做,因为 PEM 和 base64 格式已被 IdM Web UI 接受了。
- 列表:在 IdM Web UI 中,以安全官员身份登录。
- 列表:前往 Identity → Users → <user_name>。
- 命令/配置摘录:
$ openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
$ openssl pkcs12 -in cert_and_key.p12 -clcerts -nokeys -out cert.pem5.4. 准备将证书加载到浏览器
- 要点:在将用户证书导入到浏览器前,请确保证书和对应的私钥都是 PKCS #12 格式。
- 要点:有两种常见情况需要额外的准备工作:
- 列表:证书位于 NSS 数据库中。
- 列表:证书和私钥位于两个单独的 PEM 文件中。
5.4.1. 将证书和私钥从 NSS 数据库导出到 PKCS #12 文件中
- 要点:pk12util 工具将 NSS 数据库的加密对导出为可移植的格式。此命令将指定的证书及其私钥提取到适合浏览器导入的 .p12 文件中。
- 要点:流程
- 列表:使用 pk12util 命令将证书从 NSS 数据库导出为 PKCS12 格式。例如,要将昵称为 some_user 的证书从存储在 ~/certdb 目录中的 NSS 数据库导出到 ~/some_user.p12 文件中: $ pk12util -d ~/certdb -o ~/some_user.p12 -n some_user Enter Password or Pin for "NSS Certificate DB": Enter password for PKCS12 file: Re-enter password: pk12util: PKCS12 EXPORT SUCCESSFUL
- 列表:为 .p12 文件设置合适的权限: # chmod 600 ~/some_user.p12 由于 PKCS #12 文件也包含私钥,因此必须对其进行保护以防止其他用户使用该文件。否则,他们能够模拟用户。
- 命令/配置摘录:
$ pk12util -d ~/certdb -o ~/some_user.p12 -n some_user
Enter Password or Pin for "NSS Certificate DB": Enter password for PKCS12 file: Re-enter password: pk12util: PKCS12 EXPORT SUCCESSFUL5.4.2. 将证书和私钥 PEM 文件合并到 PKCS #12 文件中
- 要点:您可以使用 openssl 命令将存储在单独的 PEM 文件中的证书和对应密钥合并到 PKCS automationhub 文件中。
- 要点:流程
- 列表:将存储在 certfile.cer 中的证书和存储在 certfile.key 中的密钥合并到包含证书和密钥的 certfile.p12 文件中: $ openssl pkcs12 -export -in certfile.cer -inkey certfile.key -out certfile.p12
- 命令/配置摘录:
$ openssl pkcs12 -export -in certfile.cer -inkey certfile.key -out certfile.p125.4.3. 其它资源
- 列表:配置浏览器以启用证书身份验证
- 列表:以 IdM 用户身份使用证书向身份管理 Web UI 进行身份验证
5.5. IdM 中与证书相关的命令和格式
- 要点:IdM 工具为输入文件强制实施特定的格式要求。ipa-server-certinstall 等命令接受广泛的二进制和文本格式,而 ipa user-add-cert 等其他命令则需要严格格式化的 Base64 字符串。
- 表格样本(共 10 行):
- 命令 | 可接受的格式 | 备注
- ipa user-add-cert some_user --certificate | base64 PEM 证书
- ipa-server-certinstall | PEM 和 DER 证书;PKCS#7 证书链;PKCS#8 和原始私钥;PKCS#12 证书和私钥
- ipa-cacert-manage install | DER; PEM; PKCS#7
第 6 章 在身份管理中创建和管理证书配置文件
- 要点:证书授权机构(CA)在签名证书时使用证书配置文件,以确定证书签名请求(CSR)是否可接受,如果可接受,则证书中存在哪些功能和扩展。证书配置文件与发布特定类型的证书相关联。通过组合证书配置文件和 CA 访问控制列表(ACL),您可以定义和控制对自定义证书配置文件的访问。
- 要点:在描述如何创建证书配置文件时,流程使用 S/MIME 证书作为示例。某些电子邮件程序支持使用安全多用途 Internet 邮件扩展(S/MIME)协议进行数字签名和加密的电子邮件。使用 S/MIME 签名或加密电子邮件消息,要求消息的发件人具有 S/MIME 证书。
6.1. 什么是证书配置文件?
- 要点:您可以使用证书配置文件确定证书的内容,以及发布证书的限制,如下所示:
- 要点:单个证书配置文件与签发特定类型的证书相关联。您可以为 IdM 中的用户、服务和主机定义不同的证书配置文件。IdM 默认包括以下证书配置文件:
- 列表:用于加密证书签名请求的签名算法。
- 列表:证书的默认有效期。
- 列表:用于吊销证书的吊销原因。
- 列表:如果主体的通用名称被复制到主题替代名称字段。
- 列表:证书中应存在的特性和扩展。
- 列表:caIPAserviceCert
6.2. 创建证书配置文件
- 要点:您可以通过创建用于请求 S/MIME 证书的配置文件,通过命令行创建证书配置文件。
- 要点:流程
- 列表:通过复制现有的默认配置文件来创建自定义配置文件: $ ipa certprofile-show --out smime.cfg caIPAserviceCert ------------------------------------------------ Profile configuration stored in file 'smime.cfg' ------------------------------------------------ Profile ID: caIPAserviceCert Profile description: Standard profile for network services …
- 列表:在文本编辑器中打开新创建的配置文件。 $ vi smime.cfg
- 列表:将 Profile ID 更改为反映配置文件用法的名称,如 smime。 注意 当您导入新创建的配置文件时,如果有profileId 字段,则其必须与命令行中指定的 ID 匹配。
- 列表:更新扩展的密钥用法配置。默认的扩展的密钥用法扩展配置用于 TLS 服务器和客户端身份验证。例如,对于 S/MIME,必须为电子邮件保护配置扩展的密钥用法: policyset.serverCertSet.7.default.params.exKeyUsageOIDs=1.3.6.1.5.5.7.3.4
- 列表:导入新配置文件: $ ipa certprofile-import smime --file smime.cfg \ --desc "S/MIME certificates" --store TRUE ------------------------ Imported profile "smime" ------------------------ Profile ID: smime Profile description: S/MIME certificates Store issued certificates: TRUE
- 列表:验证新证书配置文件已被导入: $ ipa certprofile-find ------------------ 4 profiles matched ------------------ Profile ID: caIPAserviceCert Profile description: Standard profile for network services Store issued certificates: TRUE Profile ID: IECUserRoles Profile description: User profile that includes IECUserRoles extension fro…
- 命令/配置摘录:
$ ipa certprofile-show --out smime.cfg caIPAserviceCert
------------------------------------------------ Profile configuration stored in file 'smime.cfg' ------------------------------------------------ Profile ID: caIPAserviceCert Profile description: Standard profile for network services Store issued certificates: TRUE- 注意:注意 当您导入新创建的配置文件时,如果有profileId 字段,则其必须与命令行中指定的 ID 匹配。
6.3. 什么是 CA 访问控制列表?
- 要点:证书颁发机构访问控制列表(CA ACL)规则定义哪些配置文件可用于向哪些主体发布证书。您可以使用 CA ACL 来执行此操作,例如:
- 要点:例如,使用 CA ACL ,您可以将只用于伦敦办事处工作的员工的配置文件限制为与伦敦办事处相关的 IdM 用户组的成员。
- 列表:确定可以使用特定配置文件向哪些用户、主机或服务发布证书
- 列表:确定允许哪个 IdM 证书颁发机构或子 CA 发布证书
6.4. 定义 CA ACL 以控制对证书配置文件的访问
- 要点:您可以使用 caacl 工具定义 CA 访问控制列表(ACL)规则,以允许组中的用户访问自定义证书配置文件。在这种情况下,流程描述了如何创建 S/MIME 用户的组以及 CA ACL,以允许该组中的用户访问 smime 证书配置文件。
- 要点:先决条件
- 列表:确保您已获取 IdM 管理员的凭据。
- 列表:为证书配置文件的用户创建一个新组: $ ipa group-add smime_users_group --------------------------------- Added group "smime users group" --------------------------------- Group name: smime_users_group GID: 75400001
- 列表:创建一个新用户来添加到 smime_user_group 组中: $ ipa user-add smime_user First name: smime Last name: user ---------------------- Added user "smime_user" ---------------------- User login: smime_user First name: smime Last name: user Full name: smime user Display name: smime user Initials: TU Home directory: /home/smime_user…
- 列表:将 smime_user 添加到 smime_users_group 组中: $ ipa group-add-member smime_users_group --users=smime_user Group name: smime_users_group GID: 1505000003 Member users: smime_user ------------------------- Number of members added 1 -------------------------
- 列表:创建 CA ACL 以允许组中的用户访问证书配置文件: $ ipa caacl-add smime_acl ------------------------ Added CA ACL "smime_acl" ------------------------ ACL name: smime_acl Enabled: TRUE
- 列表:将用户组添加到 CA ACL 中: $ ipa caacl-add-user smime_acl --group smime_users_group ACL name: smime_acl Enabled: TRUE User Groups: smime_users_group ------------------------- Number of members added 1 -------------------------
- 命令/配置摘录:
$ ipa group-add smime_users_group
--------------------------------- Added group "smime users group" --------------------------------- Group name: smime_users_group GID: 754000016.5. 使用证书配置文件和 CA ACL 发布证书
- 要点:当证书颁发机构访问控制列表(CA ACL)允许时,您可以使用证书配置文件来请求证书。按照以下流程,使用自定义证书配置文件为用户请求 S/MIME 证书,该配置文件已通过 CA ACL 授予了访问权限。
- 要点:先决条件
- 列表:您的证书配置文件已创建。
- 列表:允许用户使用所需证书配置文件请求证书的 CA ACL已创建。
- 列表:为用户生成证书请求。例如,使用 OpenSSL: $ openssl req -new -newkey rsa:2048 -days 365 -nodes -keyout private.key -out cert.csr -subj '/CN=smime_user'
- 列表:为用户从 IdM CA 请求新证书: $ ipa cert-request cert.csr --principal=smime_user --profile-id=smime 可选:将 --ca sub-CA_name 选项传给命令,来从子 CA 而不是根 CA 中请求证书。
- 列表:验证新发布的证书是否已分配给用户: $ ipa user-show user User login: user ... Certificate: MIICfzCCAWcCAQA... ...
- 命令/配置摘录:
$ openssl req -new -newkey rsa:2048 -days 365 -nodes -keyout private.key -out cert.csr -subj '/CN=smime_user'
$ ipa cert-request cert.csr --principal=smime_user --profile-id=smime- 注意:注意 您可以绕过 CA ACL 检查用户是否执行了 cert-request 命令: 是 admin 用户。 具有 请求忽略 CA ACL 的证书 权限。
6.6. 修改证书配置文件
- 要点:您可以使用 ipa certprofile-mod 命令直接通过命令行修改证书配置文件。
- 要点:流程
- 列表:确定您要修改的证书配置文件的证书配置文件 ID。显示当前存储在 IdM 中的所有证书配置文件: # ipa certprofile-find ------------------ 4 profiles matched ------------------ Profile ID: caIPAserviceCert Profile description: Standard profile for network services Store issued certificates: TRUE Profile ID: IECUserRoles ... Profile ID: smime Profile descripti…
- 列表:修改证书配置文件描述。例如,如果您使用现有的配置文件为 S/MIME 证书创建了自定义证书配置文件,请按照新用法更改描述: # ipa certprofile-mod smime --desc "New certificate profile description" ------------------------------------ Modified Certificate Profile "smime" ------------------------------------ Profile ID: smime Profile description: New certificate profile descript…
- 列表:在文本编辑器中打开您的客户证书配置文件,并进行修改以满足您的要求: # vi smime.cfg 有关可以在证书配置文件中配置哪些选项的详情,请查看 证书配置文件配置参数。
- 列表:更新现有证书配置文件: # ipa certprofile-mod profile_ID --file=smime.cfg
- 列表:验证证书配置文件是否已更新: $ ipa certprofile-show smime Profile ID: smime Profile description: New certificate profile description Store issued certificates: TRUE
- 命令/配置摘录:
# ipa certprofile-find
------------------ 4 profiles matched ------------------ Profile ID: caIPAserviceCert Profile description: Standard profile for network services Store issued certificates: TRUE Profile ID: IECUserRoles ... Profile ID: smime Profile description: S/MIME certificates Store issued certificates: TRUE -------------------------- Number of entries returned --------------------------6.7. 证书配置文件配置参数
- 要点:配置文件使用参数和策略集来定义证书颁发机构行为。这些设置控制输入、输出、默认值和验证限制,允许管理员微调 CA 进程和批准特定证书请求的方式。
- 要点:证书配置文件配置参数存储在 CA 配置文件目录 /var/lib/pki/pki-tomcat/ca/profiles/ca 中的 profile_name.cfg 文件中。配置文件的所有参数 - 默认值、输入、输出和约束 - 都在单个策略集中配置。为证书配置集设置的策略具有名称 policyset.policyName.policyNumber。例如,对于策略设置 serverCertSet :
- 命令/配置摘录:
policyset.list=serverCertSet policyset.serverCertSet.list=1,2,3,4,5,6,7,8 policyset.serverCertSet.1.constraint.class_id=subjectNameConstraintImpl policyset.serverCertSet.1.constraint.name=Subject Name Constraint policyset.serverCertSet.1.constraint.params.pattern=CN=[^,]+,.+ policyset.serverCertSet.1.constraint.params.accept=true policyset.serverCertSet.1.default.class_id=subjectNameDefaultImpl policyset.serverCertSet.1.default.name=Subject Name Default policyset.serverCertSet.1.default.params.name=CN=$request.req_subject_name.cn$, OU=pki-ipa, O=IPA policyset.serverCertSet.2.constraint.class_id=validityConstraintImpl policyset.serverCertSet.…- 表格样本(共 18 行):
- 参数 | 描述
- desc | 证书配置文件的自由文本描述,显示在终端实体页面上。例如,desc=This certificate profile 用于使用代理身份验证注册服务器证书。
- enable | 启用配置文件,使它可通过终端实体页面访问。例如:enable=true。
- auth.instance_id | 设置身份验证管理者插件,用来验证证书请求。要进行自动注册,如果身份验证成功,CA 会立即发布证书。如果身份验证失败或者没有指定身份验证插件,则会将请求排队,来由代理手动批准。例如,auth.instance_id=AgentCertAuth。
第 7 章 管理 IdM 中证书的有效性
- 要点:在身份管理(IdM)中,您可以管理现有证书和未来要发布的证书的有效性,但方法有所不同。
7.1. 管理 IdM CA 发布的现有证书的有效性
- 要点:管理员通过监控过期日期并更新有效证书或立即撤销被入侵的凭据来保持安全性。certmonger 和 certutil 等工具处理这些生命周期操作。
- 要点:您可以使用以下方法管理 IdM CA 发布的现有证书的有效性:
- 列表:通过使用原始证书签名请求(CSR)或私钥生成的新 CSR 请求新的证书来续订证书。您可以使用以下工具请求新证书: certmonger 您可以使用 certmonger 请求服务证书。证书到期之前,certmonger 将自动续订证书,从而确保服务证书持续有效。详情请参阅 使用 certmonger 为服务获取 IdM 证书。 certutil 您可以使用 certutil 续订用户、主机和服务证书。有关请求用户证书的详情,请参阅 请求新的用户证书并将其导出到客户端。 openssl 您可以使用 openssl 续订用户、主机和服务证书。
- 列表:吊销证书。
- 列表:如果证书已被临时吊销,则恢复证书。
7.2. 管理 IdM CA 发布的未来证书的有效性
- 要点:要管理 IdM CA 发布的未来证书的有效性,请修改、导入或创建证书配置文件。详情请参阅在 在身份管理中创建和管理证书配置文件。
7.3. 在 IdM WebUI 中查看证书的过期日期
- 要点:您可以使用 IdM WebUI 查看 IdM CA 发布的所有证书的到期日期。
- 要点:先决条件
- 列表:确保您已获取管理员的凭证。
- 列表:在 Authentication 菜单中,点击 Certificates > Certificates。
- 列表:单击证书的序列号,来打开证书信息页面。 证书列表
- 列表:在证书信息页面中,找到 Expires On 信息。
7.4. 在 CLI 中查看证书的到期日期
- 要点:您可以使用命令行(CLI)查看证书的到期日期。
- 要点:流程
- 列表:使用 openssl 工具以人类可读的格式打开文件: $ openssl x509 -noout -text -in ca.pem Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha256WithRSAEncryption Issuer: O = IDM.EXAMPLE.COM, CN = Certificate Authority Validity Not Before: Oct 30 19:39:14 2017 GMT Not After : Oct 30 19:39:14 2037 GMT
- 命令/配置摘录:
$ openssl x509 -noout -text -in ca.pem
Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha256WithRSAEncryption Issuer: O = IDM.EXAMPLE.COM, CN = Certificate Authority Validity Not Before: Oct 30 19:39:14 2017 GMT Not After : Oct 30 19:39:14 2037 GMT7.5. 吊销带有集成 IdM CA 的证书
- 要点:如果您知道您已丢失证书的私钥,则您必须吊销证书以防止其被滥用。您可以使用以下方法撤销带有集成 IdM CA 的证书:
7.5.1. 证书吊销原因
- 要点:已撤销的证书无效,无法用于身份验证。所有取消都是永久的,除了原因 6:证书冻结。
- 要点:默认的吊销原因为 0:未指定。
- 表格样本(共 11 行):
- ID | 原因 | 解释
- 0 | 未指定 | -
- 1 | 密钥泄露 | 签发证书的密钥不再被信任。 可能的原因是包括丢失的令牌或不正确的访问文件。
- 2 | CA 泄露 | 签发证书的 CA 不再被信任。
7.5.2. 使用 IdM Web UI 吊销带有集成 IdM CA 的证书
- 要点:如果您知道您已丢失证书的私钥,则您必须吊销证书以防止其被滥用。您可以使用 IdM WebUI 吊销 IdM CA 发布的证书。
- 要点:流程
- 列表:点击 Authentication > Certificates > Certificates。
- 列表:单击证书的序列号,来打开证书信息页面。 证书列表
- 列表:在证书信息页面中,单击 Actions → Revoke Certificate。
- 列表:选择吊销的原因,然后单击 Revoke。详情请参阅 证书吊销原因。
7.5.3. 使用 IdM CLI 吊销带有集成 IdM CA 的证书
- 要点:如果您知道您已丢失证书的私钥,则您必须吊销证书以防止其被滥用。您可以使用 IdM CLI 吊销 IdM CA 发布的证书。
- 要点:流程
- 列表:使用 ipa cert-revoke 命令,并指定: 证书序列号 吊销原因的 ID 号;有关详细信息,请参阅 证书吊销原因 例如,因为原因 1 : 密钥泄露,要吊销序列号为 1032 的证书,请输入: $ ipa cert-revoke 1032 --revocation-reason=1
- 列表:证书序列号
- 列表:吊销原因的 ID 号;有关详细信息,请参阅 证书吊销原因 例如,因为原因 1 : 密钥泄露,要吊销序列号为 1032 的证书,请输入: $ ipa cert-revoke 1032 --revocation-reason=1
- 命令/配置摘录:
$ ipa cert-revoke 1032 --revocation-reason=17.5.4. 其他资源
- 列表:请求新的用户证书并将其导出到客户端
- 列表:使用 certmonger 为服务获取 IdM 证书
7.6. 恢复带有集成 IdM CA 的证书
- 要点:管理员可以重新置于"证书冻结"中。恢复临时撤销的凭证以进行身份验证,而无需新的颁发请求。
7.6.1. 使用 IdM WebUI 恢复带有集成 IdM CA 的证书
- 要点:IdM Web UI 简化了暂停证书的恢复功能。管理员在注册表中找到序列号,并删除 hold 状态,以立即验证凭据。
- 要点:流程
- 列表:在 Authentication 菜单中,点击 Certificates > Certificates。
- 列表:单击证书的序列号,来打开证书信息页面。 IdM Web UI 中证书的列表
- 列表:在证书信息页面中,单击 Actions → Restore Certificate。
7.6.2. 使用 IdM CLI 恢复带有集成 IdM CA 的证书
- 要点:ipa cert-remove-hold 命令会重新激活当前处于 hold 状态的证书。管理员使用目标序列号运行此工具,以便临时撤销和恢复访问。
- 要点:流程
- 列表:使用 ipa cert-remove-hold 命令并指定证书序列号。例如: $ ipa cert-remove-hold 1032
- 命令/配置摘录:
$ ipa cert-remove-hold 1032第 8 章 为智能卡验证配置身份管理
- 要点:身份管理(IdM)支持使用内部或外部授权机构发布的证书进行智能卡验证。配置 rootca.pem 文件,以便为外部证书颁发机构建立信任,从而实现了跨域的安全访问。
- 注意:注意 目前,IdM 不支持导入多个共享相同主题区分名称(DN)但加密方式不同的 CA。
8.1. 为智能卡验证配置 IdM 服务器
- 要点:ipa-advise 工具生成一个配置脚本,来在服务器上启用智能卡验证。此脚本会自动配置 Apache HTTP 服务器、密钥分发中心(KDC)公钥加密,用于 Kerberos (PKINIT)的初始身份验证,以及用于证书处理的 IdM Web UI。
- 要点:了解如何为证书由身份管理(IdM) CA 信任的 <EXAMPLE.ORG> 域的证书颁发机构(CA)发布的用户启用智能卡验证。
- 列表:有到 IdM 服务器的 root 访问权限。
- 列表:您有 root CA 证书和所有中间 CA 证书: 为 <EXAMPLE.ORG> CA 直接发布证书的根 CA 的证书,或使用一个或多个其子 CA 发布证书。您可以从颁发机构发布证书的网页下载证书链。 IdM CA 证书。您可以从运行 IdM CA 实例的 IdM 服务器上的 /etc/ipa/ca.crt 文件获取 CA 证书。 所有中间 CA 的证书,即介于 <EXAMPLE.ORG> CA 和 IdM CA 之间。
- 列表:为 <EXAMPLE.ORG> CA 直接发布证书的根 CA 的证书,或使用一个或多个其子 CA 发布证书。您可以从颁发机构发布证书的网页下载证书链。
- 列表:IdM CA 证书。您可以从运行 IdM CA 实例的 IdM 服务器上的 /etc/ipa/ca.crt 文件获取 CA 证书。
- 列表:所有中间 CA 的证书,即介于 <EXAMPLE.ORG> CA 和 IdM CA 之间。
- 列表:创建要进行配置的目录: [root@server]# mkdir ~/SmartCard/
- 命令/配置摘录:
[root@server]# mkdir ~/SmartCard/
[root@server]# cd ~/SmartCard/- 注意:注意 在任何子 CA 证书前,确保将根 CA 的证书添加为参数,并且 CA 或子 CA 证书还没有过期。
- 注意:警告 如果您只使用 IdM CA 发出的用户证书,不要禁用 OCSP 检查。OCSP 响应器是 IdM 的一部分。
8.2. 使用 Ansible 为智能卡验证配置 IdM 服务器
- 要点:Ansible 使用 ipasmartcard_server 角色自动执行服务器配置。此 playbook 使用清单文件中指定的根和中间 CA 证书来配置 Apache 和 KDC。
- 要点:您可以使用 Ansible 为其证书是由身份管理(IdM) CA 信任的 <EXAMPLE.ORG> 域的证书颁发机构(CA)发布的用户启用智能卡验证。要做到这一点,您必须获取以下证书,以便在运行具有 ipasmartcard_server ansible-freeipa 角色脚本的 Ansible playbook 时使用它们:
- 列表:为 <EXAMPLE.ORG> CA 直接发布证书的根 CA 的证书,或使用一个或多个其子 CA 发布证书。您可以从颁发机构发布证书的网页下载证书链。详情请参阅 配置浏览器以启用证书验证 中的步骤 4。
- 列表:IdM CA 证书。您可以从任何 IdM CA 服务器上的 /etc/ipa/ca.crt 文件获取 CA 证书。
- 列表:介于<EXAMPLE.ORG> CA 和 IdM CA 之间的所有 CA 的证书。
- 列表:您有到 IdM 服务器的 root 访问权限。
- 列表:您需要知道 IdM admin 密码。
- 列表:您有根 CA 证书、IdM CA 证书以及所有中间 CA 证书。
- 命令/配置摘录:
# openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
# openssl x509 -noout -text -in root-ca.pem | more- 注意:警告 如果您只使用 IdM CA 发出的用户证书,不要禁用 OCSP 检查。OCSP 响应器是 IdM 的一部分。
- 注意:注意 要在整个拓扑中启用智能卡验证,请将 Ansible playbook 中的 hosts 变量设为 ipacluster : --- - name: Playbook to set up smartcard for IPA server and replicas hosts: ipacluster [...]
8.3. 为智能卡验证配置 IdM 客户端
- 要点:IdM 客户端需要特定的配置来支持 SSH、GDM 和控制台会话的智能卡登录。您可以在服务器上生成配置脚本,并在目标客户端上运行该脚本来配置 SSSD 和系统信任存储。
- 要点:您可以为智能卡验证配置 IdM 客户端。这个过程需要运行在每个 IdM 系统、客户端或服务器上,您希望在使用智能卡进行身份验证时连接到这些系统。例如,若要启用从主机 A 到主机 B 的 ssh 连接,需要在主机 B 上运行脚本。
- 列表:ssh 协议 详情请查看 使用智能卡验证配置 SSH 访问。
- 列表:控制台登录
- 列表:GNOME 显示管理器(GDM)
- 列表:su 命令
- 列表:其上运行浏览器的机器。机器可以在 IdM 域之外。
- 列表:其上运行 httpd 的 IdM 服务器。
- 命令/配置摘录:
[root@server SmartCard]# kinit admin
[root@server SmartCard]# ipa-advise config-client-for-smart-card-auth > config-client-for-smart-card-auth.sh- 注意:注意 在任何子 CA 证书前,确保将根 CA 的证书添加为参数,并且 CA 或子 CA 证书还没有过期。
8.4. 使用 Ansible 为智能卡验证配置 IdM 客户端
- 要点:ipasmartcard_client Ansible 角色同时自动化多个客户端的配置。此 playbook 配置智能卡守护进程、系统信任存储和 SSSD 配置集,以允许整个基础架构中基于证书的身份验证。
- 要点:为使用以下任一方式访问 IdM 的 IdM 用户启用智能卡验证:
- 列表:ssh 协议 详情请查看 使用智能卡验证配置 SSH 访问。
- 列表:控制台登录
- 列表:GNOME 显示管理器(GDM)
- 列表:su 命令
- 列表:您的 IdM 服务器已被配置为进行智能卡验证,如 使用 Ansible 为智能卡验证配置 IdM 服务器 中所述。
- 列表:有对 IdM 服务器和 IdM 客户端的 root 访问权限。
- 命令/配置摘录:
# openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
# openssl x509 -noout -text -in root-ca.pem | more- 注意:注意 对于向 IdM Web UI 进行身份验证,不需要此流程。向 IdM Web UI 进行身份验证涉及两个主机,它们都不必是 IdM 客户端: 其上运行浏览器的机器。机器可以在 IdM 域之外。 其上运行 httpd 的 IdM 服务器。
- 注意:注意 如果您使用 --mkhomedir 选项安装了 IdM 客户端,则远程用户将能够登录到其主目录。否则,默认登录位置是目录结构的根目录,/ 。
8.5. 在 IdM Web UI 的用户条目中添加证书
- 要点:您可以使用 IdM Web UI 将外部证书直接上传到用户配置集。此操作将物理智能卡中的特定凭证与相应的身份管理用户帐户相关联。
- 要点:也可以将证书映射数据上传到 IdM 中的用户条目,而不必上传整个证书。包含完整证书或证书映射数据的用户条目可以和相应的证书映射规则一起使用,以便于系统管理员配置智能卡身份验证。详情请参阅 配置身份验证的证书映射规则。
- 列表:您有要添加到用户条目的证书。
- 列表:如果要给另一个用户添加证书,请以管理员身份登录到 IdM Web UI。要在您自己的配置文件中添加证书,您不需要管理员的凭证。
- 列表:导航到 Users → Active users → sc_user。
- 列表:找到 Certificate 选项,并单击 Add。
- 列表:在命令行上,使用 cat 工具或文本编辑器以 PEM 格式显示证书: [user@client SmartCard]$ cat testuser.crt
- 列表:将证书从 CLI 复制并粘贴到 Web UI 中打开的窗口中。
- 命令/配置摘录:
[user@client SmartCard]$ cat testuser.crt- 注意:注意 如果用户的证书已由 IdM 证书颁发机构发布,则证书已存储在用户条目中,您不需要按照以下流程操作。
8.6. 在 IdM CLI 中向用户条目中添加证书
- 要点:命令行界面允许您将外部证书映射到用户条目。您必须在执行 ipa user-add-cert 命令前格式化证书字符串来删除标头和 footers。
- 要点:也可以将证书映射数据上传到 IdM 中的用户条目,而不必上传整个证书。包含完整证书或证书映射数据的用户条目可以和相应的证书映射规则一起使用,以便于系统管理员配置智能卡身份验证。详情请参阅 配置身份验证的证书映射规则。
- 列表:您有要添加到用户条目的证书。
- 列表:如果要给另一个用户添加证书,请以管理员身份登录到 IdM CLI: [user@client SmartCard]$ kinit admin 要在您自己的配置文件中添加证书,您不需要管理员的凭证。 [user@client SmartCard]$ kinit <smartcard_user>
- 列表:创建一个包含证书的环境变量,该变量移除了标头和页脚,并串联成一行,这是 ipa user-add-cert 命令期望的格式: [user@client SmartCard]$ export CERT=
openssl x509 -outform der -in testuser.crt | base64 -w0 -请注意,testuser.crt 文件中的证书必须是 PEM 格式。 - 列表:使用 ipa user-add-cert 命令将证书添加到 <smartcard_user> 的配置文件中: [user@client SmartCard]$ ipa user-add-cert <smartcard_user> --certificate=$CERT <smartcard_user> 条目现在包含一个外部证书。
- 命令/配置摘录:
[user@client SmartCard]$ kinit admin
[user@client SmartCard]$ kinit <smartcard_user>- 注意:注意 如果用户的证书已由 IdM 证书颁发机构发布,则证书已存储在用户条目中,您不需要按照以下流程操作。
8.7. 安装用来管理和使用智能卡的工具
- 要点:配置智能卡需要特定的中间件和管理工具,如 OpenSC 和 GnuTLS 软件包。启用 pcscd 服务,以便于系统和卡阅读器之间的通信。
- 要点:先决条件
- 列表:您有 root 权限。
- 列表:安装 opensc 和 gnutls-utils 软件包: # dnf -y install opensc gnutls-utils
- 列表:启动 pcscd 服务。 # systemctl start pcscd
- 列表:验证 pcscd 服务是否已启动并正在运行: # systemctl status pcscd
- 命令/配置摘录:
# dnf -y install opensc gnutls-utils
# systemctl start pcscd8.8. 准备智能卡并将证书和密钥上传到智能卡
- 要点:pkcs15-init 工具初始化空白智能卡并管理其加密内容。使用这个实用程序擦除卡,定义 PIN,创建存储插槽,并上传所需的私钥和证书。
- 要点:pkcs15-init 工具可能无法使用所有智能卡。您必须使用您使用智能卡的工具。
- 列表:已安装 opensc 软件包,其中包括 pkcs15-init 工具。 如需了解更多详细信息,请参阅 安装用于管理和使用智能卡的工具。
- 列表:该卡插入读卡器并连接到计算机。
- 列表:您有一个要存储在智能卡上的私钥、公钥和证书。在此流程中,testuser.key、testuserpublic.key 和 testuser.crt 是用于私钥、公钥和证书的名称。
- 列表:您有当前的智能卡用户 PIN 和 Security Officer PIN (SO-PIN)。
- 列表:擦除智能卡并使用您的 PIN 验证自己: $ pkcs15-init --erase-card --use-default-transport-keys Using reader with a card: Reader name PIN [Security Officer PIN] required. Please enter PIN [Security Officer PIN]: 这个卡已经被清除。
- 列表:初始化智能卡,设置您的用户 PIN 和 PUK,以及您的安全响应 PIN 和 PUK: $ pkcs15-init --create-pkcs15 --use-default-transport-keys \ --pin 963214 --puk 321478 --so-pin 65498714 --so-puk 784123 Using reader with a card: Reader name pcks15-init 工具在智能卡上创建一个新插槽。
- 命令/配置摘录:
$ pkcs15-init --erase-card --use-default-transport-keys
Using reader with a card: Reader name PIN [Security Officer PIN] required. Please enter PIN [Security Officer PIN]:- 注意:注意 在存储您的私钥并将证书存储在下一步中时,您为 --id 指定的值必须相同。建议为 --id 指定自己的值,否则它们将更复杂的值由工具计算。
- 注意:注意 如果公钥与私钥或证书对应,请指定与私钥或证书的 ID 相同的 ID。
8.9. 使用智能卡登录到 IdM
- 要点:用户通过选择证书身份验证选项来安全地访问 IdM Web UI。浏览器提示输入智能卡 PIN 解锁设备并针对服务器验证用户身份。
- 要点:先决条件
- 列表:web 浏览器被配置为使用智能卡验证。
- 列表:IdM 服务器被配置为智能卡验证。
- 列表:在您的智能卡中安装的证书由 IdM 服务器发出,或者已添加到 IdM 的用户条目中。
- 列表:您知道解锁智能卡所需的 PIN。
- 列表:智能卡已插入到读取器中。
- 列表:在浏览器中打开 IdM Web UI。
8.10. 在 IdM 客户端中使用智能卡验证登录到 GDM
- 要点:GNOME 显示管理器(GDM)支持使用智能卡硬件直接登录。用户插入他们的卡,并输入 PIN 进行身份验证,自动获取会话的 Kerberos Ticket Granting Ticket (TGT)。
- 要点:先决条件
- 列表:为智能卡验证配置了系统。详情请参阅为智能卡验证配置 IdM 客户端。
- 列表:该智能卡包含您的证书和私钥。
- 列表:该用户帐户是 IdM 域的成员。
- 列表:智能卡中的证书使用以下之一映射到用户条目: 为特定用户条目分配证书。详情请参阅 Adding a certificate to a user entry in the IdM Web UI 或 Adding a certificate to a user entry in the IdM CLI。 应用到该帐户的证书映射数据。详情请查看用于 在智能卡上配置身份验证的证书映射规则。
- 列表:为特定用户条目分配证书。详情请参阅 Adding a certificate to a user entry in the IdM Web UI 或 Adding a certificate to a user entry in the IdM CLI。
- 列表:应用到该帐户的证书映射数据。详情请查看用于 在智能卡上配置身份验证的证书映射规则。
- 命令/配置摘录:
$ klist
Ticket cache: KEYRING:persistent:1358900015:krb_cache_TObtNMd Default principal: example.user@REDHAT.COM Valid starting Expires Service principal 04/20/2020 13:58:24 04/20/2020 23:58:24 krbtgt/EXAMPLE.COM@EXAMPLE.COM renew until 04/27/2020 08:58:158.11. 在 su 命令中使用智能卡验证
- 要点:su 命令支持切换用户上下文的智能卡验证。当您配置它时,系统会提示用户输入智能卡 PIN,而不是输入密码来授权特权升级。
- 要点:先决条件
- 列表:为智能卡验证配置了您的 IdM 服务器和客户端。 请参阅为智能卡验证配置 IdM 服务器 请参阅为智能卡验证配置 IdM 客户端
- 列表:请参阅为智能卡验证配置 IdM 服务器
- 列表:请参阅为智能卡验证配置 IdM 客户端
- 列表:该卡插入读卡器并连接到计算机。
- 列表:在终端窗口中,使用 su 命令切换到其他用户: $ su - <user_name> PIN for smart_card 如果配置正确,会提示您输入智能卡 PIN。
- 命令/配置摘录:
$ su - <user_name>
PIN for smart_card第 9 章 为 IdM 中智能卡验证配置 ADCS 发布的证书
- 要点:您可以使用 Active Directory (AD)证书服务(ADCS)为 IdM 智能卡用户发布凭证。此配置会在 IdM 环境中集成 AD 发布的证书,利用跨林信任在两个域间验证用户。
9.1. 先决条件
- 列表:身份管理(IdM)和活动目录(AD)信任已安装
- 列表:活动目录证书服务(ADCS)已安装,并且用户证书已生成
9.2. 信任配置和证书使用量所需的 Windows 服务器设置
- 要点:配置 Windows 服务器涉及准备证书颁发机构来发布兼容凭证。您必须将密钥长度设置为至少 2048 位,并启用私钥导出来生成有效的 PKCS lorax (.PFX)文件。
- 要点:您必须在 Windows 服务器上配置以下内容:
- 列表:已安装活动目录证书服务(ADCS)
- 列表:创建证书颁发机构
- 列表:可选:如果您使用证书颁发机构 Web 注册,则必须配置互联网信息服务(IIS)
- 列表:密钥必须有 2048 位或更多
- 列表:包括一个私钥
- 列表:您将需要以下格式的证书:个人信息交换— PKCS #12(.PFX) 启用证书隐私
9.3. 使用 sftp 从 Active Directory 复制证书
- 要点:要启用跨平台信任,您必须将特定证书文件从 Windows Server 传送到 Linux 环境。您必须将 root CA 证书安全地复制到 IdM 服务器和用户的私钥文件到客户端。
- 要点:为了可以使用智能卡验证,您需要复制以下证书文件:
- 列表:CER 格式的根 CA 证书:IdM 服务器上的 adcs-winserver-ca.cer。
- 列表:具有 PFX 格式私钥的用户证书:IdM 客户端上的 aduser1.pfx。
- 列表:从 IdM 服务器 连接,并将 adcs-winserver-ca.cer 根证书复制到 IdM 服务器: root@idmserver ~]# sftp Administrator@winserver.ad.example.com Administrator@winserver.ad.example.com's password: Connected to Administrator@winserver.ad.example.com. sftp> cd <path_to_certificates> sftp> ls adcs-winserver-ca.cer aduser1.pfx sftp> sftp> get adcs-wi…
- 列表:从 IdM 客户端 连接,并将 aduser1.pfx 用户证书复制到客户端: [root@client1 ~]# sftp Administrator@winserver.ad.example.com Administrator@winserver.ad.example.com's password: Connected to Administrator@winserver.ad.example.com. sftp> cd /<path_to_certificates> sftp> get aduser1.pfx Fetching <path_to_certificates>/aduser1.pfx to aduser1.pfx…
- 命令/配置摘录:
root@idmserver ~]# sftp Administrator@winserver.ad.example.com
Administrator@winserver.ad.example.com's password: Connected to Administrator@winserver.ad.example.com. sftp> cd <path_to_certificates> sftp> ls adcs-winserver-ca.cer aduser1.pfx sftp> sftp> get adcs-winserver-ca.cer Fetching <path_to_certificates>/adcs-winserver-ca.cer to adcs-winserver-ca.cer <path_to_certificates>/adcs-winserver-ca.cer 100% 1254 15KB/s 00:00 sftp quit- 注意:注意 这个过程预期 SSH 访问是允许的。如果 SSH 不可用,用户必须将 文件从 AD 服务器复制到 IdM 服务器和客户端。
9.4. 使用 ADCS 证书为智能卡身份验证配置 IdM 服务器和客户端
- 要点:ipa-advise 工具为 ADCS 集成自动配置身份管理(IdM)组件。生成服务器和客户端脚本,以安装必要的软件包、配置 Kerberos PKINIT,并将 CA 证书放在正确的系统目录中。
- 要点:通过选择其中一个选项,为智能卡验证配置服务器和客户端:
- 列表:在 IdM 服务器中:准备 ipa-advise 脚本来为智能卡验证配置 IdM 服务器。
- 列表:在 IdM 服务器中:准备 ipa-advise 脚本来为智能卡验证配置 IdM 客户端。
- 列表:在 IdM 服务器中:使用 AD 证书应用 IdM 服务器上的 ipa-advise 服务器脚本。
- 列表:将客户端脚本移到 IdM 客户端机器中。
- 列表:在 IdM 客户端上:使用 AD 证书在 IdM 客户端上应用 ipa-advise 客户端脚本。
- 列表:证书已复制到 IdM 服务器。
- 命令/配置摘录:
[root@idmserver ~]# ipa-advise config-client-for-smart-card-auth > sc_client.sh
[root@idmserver ~]# ipa-advise config-server-for-smart-card-auth > sc_server.sh9.5. 转换 PFX 文件
- 要点:智能卡工具需要特定格式的证书和密钥。您必须使用 OpenSSL 将从 Active Directory 导出的 PKCSautomationhub (.PFX)文件转换为单独的 PEM 格式的私钥和证书文件。
- 要点:先决条件
- 列表:PFX 文件被复制到 IdM 客户端机器中。
- 列表:在 IdM 客户端上,将文件转换为 PEM 格式: [root@idmclient1 ~]# openssl pkcs12 -in aduser1.pfx -out aduser1_cert_only.pem -clcerts -nodes Enter Import Password:
- 列表:将密钥提取到单独的文件中: [root@idmclient1 ~]# openssl pkcs12 -in adduser1.pfx -nocerts -out adduser1.pem > aduser1.key
- 列表:将公共证书提取到单独的文件中: [root@idmclient1 ~]# openssl pkcs12 -in adduser1.pfx -clcerts -nokeys -out aduser1_cert_only.pem > aduser1.crt 此时,您可以将 aduser1.key 和 aduser1.crt 存储在智能卡中。
- 命令/配置摘录:
[root@idmclient1 ~]# openssl pkcs12 -in aduser1.pfx -out aduser1_cert_only.pem -clcerts -nodes
Enter Import Password:9.6. 安装用来管理和使用带有 ADCS 证书的智能卡的工具
- 要点:管理智能卡内容需要特定的软件工具,如 opensc 和 gnutls-utils 软件包。您必须启动 pcscd 服务,以启用系统和智能卡读取器之间的通信。
- 要点:先决条件
- 列表:您有 root 权限。
- 列表:安装 opensc 和 gnutls-utils 软件包: # dnf -y install opensc gnutls-utils
- 列表:启动 pcscd 服务。 # systemctl start pcscd
- 列表:验证 pcscd 服务是否已启动并正在运行: # systemctl status pcscd
- 命令/配置摘录:
# dnf -y install opensc gnutls-utils
# systemctl start pcscd9.7. 准备智能卡并将 ADCS 证书和密钥上传到智能卡
- 要点:使用 pkcs15-init 工具,您可以初始化智能卡并使用 ADCS 凭证置备它们。初始化涉及删除卡、设置 PIN,并将转换的私钥和证书文件上传到新存储插槽。
- 要点:pkcs15-init 工具可能无法使用所有智能卡。您必须使用您使用智能卡的工具。
- 列表:已安装 opensc 软件包,其中包括 pkcs15-init 工具。 如需了解更多详细信息,请参阅 安装用于管理和使用智能卡的工具。
- 列表:该卡插入读卡器并连接到计算机。
- 列表:您有一个要存储在智能卡上的私钥、公钥和证书。在此流程中,testuser.key、testuserpublic.key 和 testuser.crt 是用于私钥、公钥和证书的名称。
- 列表:您有当前的智能卡用户 PIN 和 Security Officer PIN (SO-PIN)。
- 列表:擦除智能卡并使用您的 PIN 验证自己: $ pkcs15-init --erase-card --use-default-transport-keys Using reader with a card: Reader name PIN [Security Officer PIN] required. Please enter PIN [Security Officer PIN]: 这个卡已经被清除。
- 列表:初始化智能卡,设置您的用户 PIN 和 PUK,以及您的安全响应 PIN 和 PUK: $ pkcs15-init --create-pkcs15 --use-default-transport-keys \ --pin 963214 --puk 321478 --so-pin 65498714 --so-puk 784123 Using reader with a card: Reader name pcks15-init 工具在智能卡上创建一个新插槽。
- 命令/配置摘录:
$ pkcs15-init --erase-card --use-default-transport-keys
Using reader with a card: Reader name PIN [Security Officer PIN] required. Please enter PIN [Security Officer PIN]:- 注意:注意 在存储您的私钥并将证书存储在下一步中时,您为 --id 指定的值必须相同。建议为 --id 指定自己的值,否则它们将更复杂的值由工具计算。
- 注意:注意 如果公钥与私钥或证书对应,请指定与私钥或证书的 ID 相同的 ID。
9.8. 在 sssd.conf 中配置超时
- 要点:因为硬件延迟或虚拟化,智能卡操作可能会超过默认的 SSSD 超时值。您可以在 sssd.conf 中扩展 p11_child_timeout 和 krb5_auth_timeout 参数,以防止预处理身份验证失败。
- 要点:使用智能卡证书进行身份验证的时间可能比 SSSD 使用的默认超时时间更长。超时时间可能是由以下原因造成的:
- 列表:很慢的读卡器
- 列表:从物理设备转发到虚拟环境
- 列表:保存在智能卡上的证书太多
- 列表:如果使用 OCSP 来验证证书,则来自 OCSP(在线证书状态协议)响应器的响应较慢
- 列表:您必须以 root 身份登录。
- 列表:打开 sssd.conf 文件: [root@idmclient1 ~]# vim /etc/sssd/sssd.conf
- 命令/配置摘录:
[root@idmclient1 ~]# vim /etc/sssd/sssd.conf
[pam] p11_child_timeout = 609.9. 为智能卡身份验证创建证书映射规则
- 要点:证书映射规则将单个智能卡证书链接到跨 Active Directory (AD)和 IdM 的多个用户帐户。管理员在身份管理(IdM)服务器上配置这些规则,以便使用相同的物理令牌在两个域中启用无缝身份验证。
- 要点:如果要将一个证书用于 AD 和 IdM 中帐户的用户,您可以在 IdM 服务器上创建证书映射规则。
- 列表:配置身份验证的证书映射规则
第 10 章 身份管理中的证书映射规则
- 要点:证书映射规则是一种便捷的方式,当身份管理(IdM)管理员无法访问某些用户的证书时,用户可以使用证书进行身份验证。这通常是因为证书已由外部证书颁发机构发布。
10.1. 用于配置身份验证的证书映射规则
- 要点:在以下情况下可能需要配置证书映射规则:
- 要点:作为系统管理员,您可以创建证书映射规则,并在向特定用户签发证书之前,为用户条目添加证书映射数据。签发证书后,用户可以使用该证书登录,即使完整证书尚未上传到用户条目。
- 列表:证书已由与 IdM 域处于信任关系的活动目录(AD)的证书系统发布。
- 列表:证书已由外部证书颁发机构发布。
- 列表:IdM 环境较大,很多用户使用智能卡的用户。在这种情况下,添加完整证书可能会比较复杂。在大多数情况下,主题和签发者是可预测的,因此与完整证书相比,更容易提前添加。
- 列表:管理员必须将证书映射数据或完整的证书加载到用户帐户中。
- 列表:管理员必须创建证书映射规则,以允许其帐户包含与证书上信息匹配的证书映射数据条目的用户成功登录到 IdM。
- 列表:使用存储在 IdM 客户端桌面的证书配置身份验证
- 注意:注意 密钥分发中心(KDC)有一个用于证书映射规则的缓存。缓存在第一个 certauth 请求时填充,它有一个 300 秒的硬编码超时。KDC 不会看到对证书映射规则的任何更改,除非它重启了或缓存过期了。 您的证书映射规则可取决于您使用证书的用例。例如,如果您使用带有证书的 SSH,则必须有从证书中提取公钥的完整证书。
10.2. IdM 中身份映射规则的组件
- 要点:当在 IdM 中创建 身份映射规则 时,您可以配置不同的组件。每个组件都有一个可覆盖的默认值。您可以在 Web UI 或 CLI 中定义这些组件。在 CLI 中,身份映射规则使用 ipa certmaprule-add 命令创建。
- 要点:映射规则组件将证书与一个或多个用户帐户关联(或 映射)。规则定义将证书与预期用户帐户关联的 LDAP 搜索过滤器。
- 列表:数字值越低,身份映射规则的优先级越高。例如,具有优先级 1 的规则的优先级高于优先级 2 的规则。
- 列表:如果规则没有定义优先级值,它具有最低的优先级。
- 列表:RFC 4514
- 命令/配置摘录:
# ipa certmaprule-mod "Certificate mapping match" --matchrule '<ISSUER>CN=Global CA1,O=EXAMPLE.COM,C=US'
---------------------------------------------------------------------- Modified Certificate Identity Mapping Rule "Certificate mapping match" ---------------------------------------------------------------------- Rule name: Certificate mapping match Mapping rule: (ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}) Matching rule: <ISSUER>CN=Global CA1,O=EXAMPLE.COM,C=US Priority: 1 Enabled: True10.3. 从证书获取数据,以便在匹配规则中使用
- 要点:您可以从证书获取数据,以便您可以将其复制并粘贴到证书映射规则的匹配规则中。要获得匹配规则所需的数据,请使用 sssctl cert-show 或 sssctl cert-eval-rule 命令。
- 要点:先决条件
- 列表:您有 PEM 格式的用户证书。
- 列表:创建指向证书的变量,该变量还可确保正确编码,以便您可以检索所需的数据。 # CERT=$(openssl x509 -in /path/to/certificate -outform der|base64 -w0)
- 列表:使用 sssctl cert-eval-rule 来确定匹配的数据。在以下示例中,使用了证书序列号。 # sssctl cert-eval-rule $CERT --match='<ISSUER>CN=adcs19-WIN1-CA,DC=AD,DC=EXAMPLE,DC=COM' --map='LDAPU1:(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<SR>{serial_number!hex_ur})' Certificate matches rule. Mapping filter: (altSecurityIdentities=X509:<I>DC=com,DC=e…
- 列表:可选:要在 CLI 中基于匹配规则创建一个新的映射规则,该规则必须与 ad.example.com 域的 adcs19-WIN1-CA 匹配,证书的序列号必须与用户帐户中的 altSecurityIdentities 条目匹配: # ipa certmaprule-add simple_rule --matchrule '<ISSUER>CN=adcs19-WIN1-CA,DC=AD,DC=EXAMPLE,DC=COM' --maprule 'LDAPU1:(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<SR>{serial_number!hex_ur})'
- 命令/配置摘录:
# CERT=$(openssl x509 -in /path/to/certificate -outform der|base64 -w0)
# sssctl cert-eval-rule $CERT --match='<ISSUER>CN=adcs19-WIN1-CA,DC=AD,DC=EXAMPLE,DC=COM' --map='LDAPU1:(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<SR>{serial_number!hex_ur})'10.4. 使用 Active Directory 域信任的证书映射规则
- 要点:IdM 支持基于信任配置的活动目录用户的灵活证书映射。场景包括将存储在 AD 中的完整证书映射到使用 altSecurityIdentities 属性或完全处理 IdM 端的身份验证。
- 要点:根据 AD 配置,可能会出现以下情况:
- 列表:如果证书是由 AD 证书系统发布的,但用户和证书存储在 IdM 中,则身份验证请求的映射和整个处理发生在 IdM 端。
- 列表:如果用户存储在 AD 中,则身份验证请求的处理会在 AD 中发生。有三个不同的子案例: AD 用户条目包含整个证书。 AD 配置为将用户证书映射到用户帐户。在本例中,AD 用户条目不包含整个证书,而是包含名为 altSecurityIdentities 的属性。 AD 用户条目既不包含整个证书,也不包含映射数据。在这种情况下,有两个选项: 如果用户证书是由 AD 证书系统发布的,则证书会包含作为 Subject Alternative Name (SAN)的用户主体名称,或者如果最新的更新被应用到 AD,则用户的 SID在证书的 SID 扩展中。它们都可用于将证书映射到用户。 如果用户证书位于智能卡上,要启用带有智能卡的 SSH,…
- 列表:AD 用户条目包含整个证书。
- 列表:AD 配置为将用户证书映射到用户帐户。在本例中,AD 用户条目不包含整个证书,而是包含名为 altSecurityIdentities 的属性。
- 列表:AD 用户条目既不包含整个证书,也不包含映射数据。在这种情况下,有两个选项: 如果用户证书是由 AD 证书系统发布的,则证书会包含作为 Subject Alternative Name (SAN)的用户主体名称,或者如果最新的更新被应用到 AD,则用户的 SID在证书的 SID 扩展中。它们都可用于将证书映射到用户。 如果用户证书位于智能卡上,要启用带有智能卡的 SSH,SSSD 必须从证书生成公共 SSH 密钥,因此需要完整证书。唯一的解决方案是使用 ipa idoverrideuser-add 命令将整个证书添加到 IdM 中 AD 用户的 ID 覆盖中。
- 列表:如果用户证书是由 AD 证书系统发布的,则证书会包含作为 Subject Alternative Name (SAN)的用户主体名称,或者如果最新的更新被应用到 AD,则用户的 SID在证书的 SID 扩展中。它们都可用于将证书映射到用户。
第 11 章 为存储在 IdM 中的用户配置证书映射
- 要点:如果配置的证书身份验证的用户存储在 IdM 中,您可以在 IdM 中启用证书映射。您必须完成以下任务:
- 列表:设置证书映射规则,以便具有与映射规则及其证书映射数据条目中指定的条件匹配的证书的 IdM 用户可以向 IdM 进行身份验证。
- 列表:将证书映射数据输入到 IdM 用户条目中,以便用户可以使用多个证书进行身份验证,只要它们都包含证书映射数据条目中指定的值。
11.1. 先决条件
- 列表:用户在 IdM 中有一个帐户。
- 列表:管理员拥有要添加到用户条目的整个证书或证书映射数据。
11.2. 在 IdM Web UI 中为存储在 IdM 中的用户添加证书映射规则
- 要点:IdM Web UI 提供了一个图形界面来定义映射策略。管理员配置规则以根据发行者过滤证书,并定义系统如何提取身份信息以匹配存储的用户记录。
- 要点:流程
- 列表:以管理员身份登录 IdM Web UI。
- 列表:导航到 Authentication → Certificate Identity Mapping Rules → Certificate Identity Mapping Rules。
- 列表:点击 Add。 在 IdM Web UI image::new-certmaprule-add.png[Screenshot 的 IdM Web UI 中添加一个新的证书映射规则,从 Authentication 选项卡中显示 "Certificate Identity Mapping Rules" 子选项卡。突出显示页面右侧的"添加"按钮。]
- 列表:输入规则名称。
- 列表:输入映射规则。例如,要让 IdM 搜索提供给它们的任何证书中的 Issuer 和 Subject 条目,并根据所显示证书的两个条目中提供的信息做出验证决定: (ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})
- 列表:输入匹配的规则。例如,只允许 EXAMPLE.ORG 机构 智能卡 CA 发布的证书来验证用户到 IdM: <ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG 在 IdM Web UI image::certmaprule-add-details1.png[Screenshot of the "Add Certificate Identity Mapping Rule" 弹出窗口中输入证书映射规则 的详情: Rule name (需要)- 匹配规则。Priority 字段为空,域名标签旁边还有一个 Add 按钮。]
- 命令/配置摘录:
(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})
<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG11.3. 在 IdM CLI 中为存储在 IdM 中的用户添加证书映射规则
- 要点:ipa certmaprule-add 命令直接从终端定义映射策略。管理员使用此实用程序编写规则的创建,按签发者过滤证书,并为用户识别提取特定的属性。
- 要点:流程
- 列表:获得管理员凭证: # kinit admin
- 列表:输入映射规则以及映射规则所基于的匹配规则。例如,要让 IdM 搜索所呈现的任何证书中的 发行者和 Subject 条目,并基于所显示证书的两个条目中找到的信息进行身份验证,仅识别由 EXAMPLE.ORG 机构的 智能卡 CA 发布的证书: # ipa certmaprule-add rule_name --matchrule '<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG' --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})' -------------------------------…
- 列表:系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,重启 SSSD: # systemctl restart sssd 现在,您设置了证书映射规则,可将在智能卡证书中找到的映射规则中指定的数据类型与 IdM 用户条目中的证书映射数据进行比较。找到匹配项后,它将对匹配的用户进行身份验证。
- 命令/配置摘录:
# kinit admin
# ipa certmaprule-add rule_name --matchrule '<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG' --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'11.4. 在 IdM 中为存储在 IdM Web UI 中的用户,将证书映射数据添加到用户条目中
- 要点:管理员使用 IdM Web UI 将身份验证凭据链接到用户帐户。此界面支持上传完整的证书文件,或者手动输入验证用户身份所需的特定 Issuer 和 Subject 字符串。
- 要点:流程
- 列表:以管理员身份登录 IdM Web UI。
- 列表:导航到 Users → Active users → idm_user。
- 列表:查找 证书映射数据 选项并单击 Add。
- 列表:选择以下选项之一: 如果您有 idm_user 的证书: 在命令行上,使用 cat 工具或文本编辑器显示证书: [root@server ~]# cat idm_user_certificate.pem -----BEGIN CERTIFICATE----- MIIFFTCCA/2gAwIBAgIBEjANBgkqhkiG9w0BAQsFADA6MRgwFgYDVQQKDA9JRE0u RVhBTVBMRS5DT00xHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0x ODA5MDIxODE1MzlaFw0yMDA5MDIxODE1MzlaMCwxGDAWBgNVBAoMD0lETS5…
- 列表:如果您有 idm_user 的证书: 在命令行上,使用 cat 工具或文本编辑器显示证书: [root@server ~]# cat idm_user_certificate.pem -----BEGIN CERTIFICATE----- MIIFFTCCA/2gAwIBAgIBEjANBgkqhkiG9w0BAQsFADA6MRgwFgYDVQQKDA9JRE0u RVhBTVBMRS5DT00xHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0x ODA5MDIxODE1MzlaFw0yMDA5MDIxODE1MzlaMCwxGDAWBgNVBAoMD0lETS5FWEFN [...…
- 列表:在命令行上,使用 cat 工具或文本编辑器显示证书: [root@server ~]# cat idm_user_certificate.pem -----BEGIN CERTIFICATE----- MIIFFTCCA/2gAwIBAgIBEjANBgkqhkiG9w0BAQsFADA6MRgwFgYDVQQKDA9JRE0u RVhBTVBMRS5DT00xHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0x ODA5MDIxODE1MzlaFw0yMDA5MDIxODE1MzlaMCwxGDAWBgNVBAoMD0lETS5FWEFN [...output truncated...]
- 命令/配置摘录:
[root@server ~]# cat idm_user_certificate.pem
-----BEGIN CERTIFICATE----- MIIFFTCCA/2gAwIBAgIBEjANBgkqhkiG9w0BAQsFADA6MRgwFgYDVQQKDA9JRE0u RVhBTVBMRS5DT00xHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0x ODA5MDIxODE1MzlaFw0yMDA5MDIxODE1MzlaMCwxGDAWBgNVBAoMD0lETS5FWEFN [...output truncated...]11.5. 在 IdM CLI 中,为存储在 IdM 中的用户将证书映射数据添加到用户条目中
- 要点:ipa user-add-certmapdata 命令将证书属性链接到用户条目。管理员使用此工具上传编码的证书或定义特定的 Subject 和 Issuer 字符串,从而建立身份验证所需的信任关系。
- 要点:流程
- 列表:获得管理员凭证: # kinit admin
- 列表:选择以下选项之一: 如果您有 idm_user 的证书,请使用 ipa user-add-cert 命令将证书添加到用户帐户中: # CERT=$(openssl x509 -in idm_user_cert.pem -outform der|base64 -w0) # ipa user-add-certmapdata idm_user --certificate $CERT 如果您没有 idm_user 的证书,但知道用户证书的 Issuer 和 Subject : # ipa user-add-certmapdata idm_user --subject "O=EXAMPLE.ORG,CN=test" --issuer "CN…
- 列表:如果您有 idm_user 的证书,请使用 ipa user-add-cert 命令将证书添加到用户帐户中: # CERT=$(openssl x509 -in idm_user_cert.pem -outform der|base64 -w0) # ipa user-add-certmapdata idm_user --certificate $CERT
- 列表:如果您没有 idm_user 的证书,但知道用户证书的 Issuer 和 Subject : # ipa user-add-certmapdata idm_user --subject "O=EXAMPLE.ORG,CN=test" --issuer "CN=Smart Card CA,O=EXAMPLE.ORG" -------------------------------------------- Added certificate mappings to user "idm_user" -------------------------------------------- User login: idm_user C…
- 列表:使用 sss_cache 程序在 SSSD 缓存中使 idm_user 记录无效,并强制重新载入 idm_user 信息: # sss_cache -u idm_user
- 列表:使用包含 IdM 用户证书的文件名称运行 ipa certmap-match 命令: # ipa certmap-match idm_user_cert.pem -------------- 1 user matched -------------- Domain: IDM.EXAMPLE.COM User logins: idm_user ---------------------------- Number of entries returned 1 ---------------------------- 输出确认您现在已将证书映射数据添加到 idm_user,并且存在对应的映射规则。这意味着,您可以使用与定义的证书映射…
- 命令/配置摘录:
# kinit admin
# CERT=$(openssl x509 -in idm_user_cert.pem -outform der|base64 -w0)第 12 章 为 AD 用户条目包含整个证书的用户配置证书映射
- 要点:如果 IdM 部署与 Active Directory (AD)信任中,您可以在 IdM 中启用证书映射,该用户存储在 AD 中,AD 中的用户条目包含整个证书。
12.1. 先决条件
- 列表:用户在 IdM 中没有帐户。
- 列表:用户在 AD 中有一个包含证书的帐户。
- 列表:IdM 管理员有权访问 IdM 证书映射规则可以基于的数据。
- 注意:注意 为确保 PKINIT 对用户正常工作,必须满足以下条件之一: 用户条目中的证书包括用户的用户主体名称或 SID 扩展。 AD 中的用户条目在 altSecurityIdentities 属性中有一个合适的条目。
12.2. 在 IdM Web UI 中,为其 AD 条目包含整个证书的用户添加证书映射规则
- 要点:IdM Web UI 允许管理员创建与 AD 中的 userCertificate 属性与提供的证书二进制 blob 匹配的规则。这可确保用户拥有存储在 目录中的准确凭据。
- 要点:流程
- 列表:以管理员身份登录 IdM Web UI。
- 列表:导航到 Authentication → Certificate Identity Mapping Rules → Certificate Identity Mapping Rules。
- 列表:点击 Add。 在 IdM Web UI image::new-certmaprule-add.png[Screenshot 的 IdM Web UI 中添加一个新的证书映射规则,从 Authentication 选项卡中显示 "Certificate Identity Mapping Rules" 子页。突出显示右侧的"添加"按钮。]
- 列表:输入规则名称。
- 列表:输入映射规则。与 AD 中的可用内容相比,要向 IdM 提供整个证书以进行身份验证: (userCertificate;binary={cert!bin}) 注意 如果使用完整证书进行映射,如果续订了证书,您必须确保将新证书添加到 AD 用户对象中。
- 列表:输入匹配的规则。例如,只允许 AD.EXAMPLE.COM 域的 AD-ROOT-CA 发布的证书进行身份验证: <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com 存储在 AD image::certmaprule-add-details-ad-cert.png[Screenshot of the "Add Certificate Identity Mapping Rule" pop-up 窗口中的证书映射规则,填写以下字段: Rule name (需要)- 映射规则 - 匹配规则。Priority 字段为空,"Domain name"标签旁边还有一个"添加"按钮。]
- 命令/配置摘录:
(userCertificate;binary={cert!bin})
<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com- 注意:注意 如果使用完整证书进行映射,如果续订了证书,您必须确保将新证书添加到 AD 用户对象中。
12.3. 在 IdM CLI 中,为其 AD 条目包含整个证书的用户添加证书映射规则
- 要点:使用 IdM CLI 定义强制执行严格的二进制匹配的映射规则。ipa certmaprule-add 命令将所提供的证书链接到 AD 中的 userCertificate 属性,验证用户身份。
- 要点:流程
- 列表:获得管理员凭证: # kinit admin
- 列表:输入映射规则以及映射规则所基于的匹配规则。要获得与 AD 中可用证书相比的用于身份验证的完整证书,只允许 AD.EXAMPLE.COM 域的 AD-ROOT-CA 发布的证书来进行验证: # ipa certmaprule-add simpleADrule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(userCertificate;binary={cert!bin})' --domain ad.example.com ------------------------------------------------------- Ad…
- 列表:系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,重启 SSSD: # systemctl restart sssd
- 命令/配置摘录:
# kinit admin
# ipa certmaprule-add simpleADrule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(userCertificate;binary={cert!bin})' --domain ad.example.com- 注意:注意 如果使用完整证书进行映射,如果续订了证书,您必须确保将新证书添加到 AD 用户对象中。
第 13 章 如果将 AD 配置为将用户帐户映射到用户帐户,则配置证书映射
- 要点:如果 IdM 部署与 Active Directory (AD)信任中,您可以在 IdM 中启用证书映射,该用户存储在 AD 中,AD 中的用户条目包含证书映射数据。
13.1. 先决条件
- 列表:用户在 IdM 中没有帐户。
- 列表:用户在 AD 中有一个帐户,其中包含 altSecurityIdentities 属性,即 IdM certmapdata 属性的 AD 等效。
- 列表:IdM 管理员有权访问 IdM 证书映射规则可以基于的数据。
13.2. 如果 AD 被配置为将用户证书映射到用户帐户,请在 IdM Web UI 中添加证书映射规则
- 要点:IdM Web UI 可让管理员创建将提供的证书映射到 Active Directory 中的 altSecurityIdentities 属性的规则。配置规则,以提取针对可信域进行身份验证的特定 Issuer 和 Subject 信息。
- 要点:流程
- 列表:以管理员身份登录 IdM Web UI。
- 列表:导航到 Authentication → Certificate Identity Mapping Rules → Certificate Identity Mapping Rules。
- 列表:点击 Add。 在 IdM Web UI image::new-certmaprule-add.png[Screenshot 的 IdM Web UI 中添加一个新的证书映射规则,从 Authentication 选项卡中显示 "Certificate Identity Mapping Rules" 子选项卡。突出显示页面右侧的"添加"按钮。]
- 列表:输入规则名称。
- 列表:输入映射规则。例如,要使 AD DC 搜索所呈现的任何证书中的 Issuer 和 Subject 条目,并决定根据所出示证书的两个条目中提供的信息进行验证: (altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})
- 列表:输入匹配的规则。例如,要只允许 AD.EXAMPLE.COM 域的 AD-ROOT-CA 发布的证书来向 IdM 验证用户: <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
- 命令/配置摘录:
(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})
<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com13.3. 如果 AD 被配置为将用户证书映射到用户帐户,请在 IdM CLI 中添加证书映射规则
- 要点:您可以使用 IdM CLI 添加所需的证书映射规则,以使用 Active Directory (AD)完成身份验证链接。使用这个规则,IdM 可以正确地将 AD 用户证书映射到其 IdM 帐户。
- 要点:流程
- 列表:获得管理员凭证: # kinit admin
- 列表:输入映射规则以及映射规则所基于的匹配规则。例如,要让 AD 搜索所提供的任何证书中的 Issuer 和 Subject 条目,并且只允许 AD.EXAMPLE.COM 域的 AD-ROOT-CA 发布的证书: # ipa certmaprule-add ad_configured_for_mapping_rule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})' --domain=ad.ex…
- 列表:系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,重启 SSSD: # systemctl restart sssd
- 命令/配置摘录:
# kinit admin
# ipa certmaprule-add ad_configured_for_mapping_rule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})' --domain=ad.example.com13.4. 检查 AD 端的证书映射数据
- 要点:altSecurityIdentities 属性是与 IdM 中的 certmapdata 用户属性等效的 Active Directory(AD)。当将可信 AD 域配置为将用户帐户映射到用户帐户时,IdM 系统管理员需要检查 AD 中的用户条目是否正确设置了 altSecurityIdentities 属性。
- 要点:先决条件
- 列表:用户帐户必须具有用户管理访问权限。
- 列表:要检查 AD 是否包含 AD 中存储的用户的正确信息,请使用 ldapsearch 命令。例如,输入以下命令检查 adserver.ad.example.com 服务器是否适用以下条件: altSecurityIdentities 属性在 ad_user 的用户条目中设置。 matchrule 满足以下条件: ad_user 用于向 AD 进行身份验证的证书由 ad.example.com 域的 AD-ROOT-CA 签发。 主题为 <S>DC=com,DC=example,DC=ad,CN=Users,CN=ad_user : $ ldapsearch -o ldif-wrap=no -LLL -h adserver.ad.ex…
- 列表:altSecurityIdentities 属性在 ad_user 的用户条目中设置。
- 列表:matchrule 满足以下条件: ad_user 用于向 AD 进行身份验证的证书由 ad.example.com 域的 AD-ROOT-CA 签发。 主题为 <S>DC=com,DC=example,DC=ad,CN=Users,CN=ad_user : $ ldapsearch -o ldif-wrap=no -LLL -h adserver.ad.example.com \ -p 389 -D cn=Administrator,cn=users,dc=ad,dc=example,dc=com \ -W -b cn=users,dc=ad,dc=example,dc=com "(cn=ad_user)" \ altSecur…
- 列表:ad_user 用于向 AD 进行身份验证的证书由 ad.example.com 域的 AD-ROOT-CA 签发。
- 列表:主题为 <S>DC=com,DC=example,DC=ad,CN=Users,CN=ad_user : $ ldapsearch -o ldif-wrap=no -LLL -h adserver.ad.example.com \ -p 389 -D cn=Administrator,cn=users,dc=ad,dc=example,dc=com \ -W -b cn=users,dc=ad,dc=example,dc=com "(cn=ad_user)" \ altSecurityIdentities Enter LDAP Password: dn: CN=ad_user,CN=Users,DC=ad,DC=example,D…
- 命令/配置摘录:
$ ldapsearch -o ldif-wrap=no -LLL -h adserver.ad.example.com \ -p 389 -D cn=Administrator,cn=users,dc=ad,dc=example,dc=com \ -W -b cn=users,dc=ad,dc=example,dc=com "(cn=ad_user)" \ altSecurityIdentities
Enter LDAP Password: dn: CN=ad_user,CN=Users,DC=ad,DC=example,DC=com altSecurityIdentities: X509:<I>DC=com,DC=example,DC=ad,CN=AD-ROOT-CA<S>DC=com,DC=example,DC=ad,CN=Users,CN=ad_user第 14 章 如果 AD 用户条目不包含证书或映射数据,则配置证书映射
- 要点:如果 IdM 部署与 Active Directory (AD)信任中,您可以在 IdM 中启用证书映射,该用户存储在 AD 中,AD 中的用户条目既不包含整个证书或证书映射数据。
14.1. 先决条件
- 要点:IdM 管理员已完成了以下操作之一:
- 列表:用户在 IdM 中没有帐户。
- 列表:用户在 AD 中有一个帐户,它不包含整个证书和 altSecurityIdentities 属性,即 IdM certmapdata 属性的 AD 等效。
- 列表:IdM 管理员已完成了以下操作之一: 将整个 AD 用户证书添加到 IdM 中的 AD 用户 ID 覆盖 中。 创建一个映射到证书中备用字段的证书映射规则,如 Subject Alternative Name 或用户的 SID。
- 列表:将整个 AD 用户证书添加到 IdM 中的 AD 用户 ID 覆盖 中。
- 列表:创建一个映射到证书中备用字段的证书映射规则,如 Subject Alternative Name 或用户的 SID。
14.2. 如果 AD 用户条目不包含证书或映射数据,请在 IdM Web UI 中添加证书映射规则
- 要点:IdM Web UI 允许管理员定义与提供的证书与 ID 覆盖匹配的规则。通过指定类似 (userCertificate;binary={cert!bin}) 的映射规则,系统会将二进制证书数据与 IdM 中创建的覆盖条目进行比较。
- 要点:流程
- 列表:以管理员身份登录 IdM Web UI。
- 列表:导航到 Authentication → Certificate Identity Mapping Rules → Certificate Identity Mapping Rules。
- 列表:点击 Add。 在 IdM Web UI image::new-certmaprule-add.png[Screenshot 的 IdM Web UI 中添加一个新的证书映射规则,从 Authentication 选项卡中显示 "Certificate Identity Mapping Rules" 子页。突出显示右侧的"添加"按钮]
- 列表:输入规则名称。
- 列表:输入映射规则。与存储在 IdM 中的 AD 用户条目的用户 ID 覆盖条目中的证书相比,为 IdM 提供整个证书进行身份验证: (userCertificate;binary={cert!bin}) 注意 因为证书还包含作为 SAN 的用户主体名称或最新更新、证书 SID 扩展中的用户的 SID ,所以您也可以使用这些字段将证书映射到用户。例如,如果使用用户的 SID,请将此映射规则替换为 LDAPU1:(objectsid={sid})。有关证书映射的更多信息,请参阅您系统上的 sss-certmap 手册页。
- 列表:输入匹配的规则。例如,只允许 AD.EXAMPLE.COM 域的 AD-ROOT-CA 发布的证书进行身份验证: <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
- 命令/配置摘录:
(userCertificate;binary={cert!bin})
<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com- 注意:注意 因为证书还包含作为 SAN 的用户主体名称或最新更新、证书 SID 扩展中的用户的 SID ,所以您也可以使用这些字段将证书映射到用户。例如,如果使用用户的 SID,请将此映射规则替换为 LDAPU1:(objectsid={sid})。有关证书映射的更多信息,请参阅您系统上的 sss-certmap 手册页。
14.3. 如果 AD 用户条目不包含证书或映射数据,请在 IdM CLI 中添加证书映射规则
- 要点:管理员通过使用 IdM CLI 将证书链接到 AD 用户来定义映射规则。ipa certmaprule-add 命令创建与证书二进制数据或特定属性与 Default Trust View 中存储的 ID 覆盖条目匹配的策略。
- 要点:流程
- 列表:获得管理员凭证: # kinit admin
- 列表:输入映射规则以及映射规则所基于的匹配规则。要获得与存储在 IdM 中的 AD 用户条目的用户 ID 覆盖条目中的证书相比的用于认证的整个证书,只允许 AD.EXAMPLE.COM 域的 AD-ROOT-CA 发布的证书进行验证: # ipa certmaprule-add simpleADrule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(userCertificate;binary={cert!bin})' --domain ad.example.com -------------------------------------…
- 列表:系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,重启 SSSD: # systemctl restart sssd
- 命令/配置摘录:
# kinit admin
# ipa certmaprule-add simpleADrule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(userCertificate;binary={cert!bin})' --domain ad.example.com- 注意:注意 因为证书还包含作为 SAN 的用户主体名称或最新更新、证书 SID 扩展中的用户的 SID ,所以您也可以使用这些字段将证书映射到用户。例如,如果使用用户的 SID,请将此映射规则替换为 LDAPU1:(objectsid={sid})。有关证书映射的更多信息,请参阅您系统上的 sss-certmap 手册页。
14.4. 在 IdM Web UI 中添加证书到 AD 用户的 ID 覆盖中
- 要点:通过 ID 覆盖,管理员可以将特定的证书附加到 IdM 中的 AD 用户身份。此 IdM Web UI 流程将证书数据存储在 Default Trust View 中,使系统可以根据映射规则验证身份验证请求。
- 要点:流程
- 列表:导航到 Identity → ID Views → Default Trust View。
- 列表:点击 Add。 在 IdM Web UI image::new-useridoverride-add.png[Screenshot 的 IdM Web UI 中添加新用户 ID 覆盖,显示 Identity 选项卡中的 "ID Views" 页面。右侧的 Add 按钮会被突出显示。]
- 列表:在 User to override 字段中,输入 ad_user@ad.example.com。
- 列表:将 ad_user 的证书复制并粘贴到 Certificate 字段中。 为 AD 用户镜像配置用户 ID 覆盖 :useridoverride-add-details.png[Screenshot 显示带有以下字段的"添加用户 ID override"弹出窗口: User to override (需要)- User login - user login - UID - GID - 证书(已填写了证书的明文版本)。]
- 列表:点击 Add。
- 列表:使用 sss_cache 程序在 SSSD 缓存中使 ad_user@ad.example.com 记录无效,并强制重新载入 ad_user@ad.example.com 信息: # sss_cache -u ad_user@ad.example.com
- 命令/配置摘录:
# sss_cache -u ad_user@ad.example.com
# ipa certmap-match ad_user_cert.pem14.5. 在 IdM CLI 中在 AD 用户的 ID 覆盖中添加证书
- 要点:ipa idoverrideuser-add-cert 命令可将 Base64 编码的证书直接链接到 AD 用户的 ID 覆盖中。此 CLI 方法为证书映射规则建立必要的数据关联,以成功验证用户。
- 要点:流程
- 列表:获得管理员凭证: # kinit admin
- 列表:将证书 blob 保存在名为 CERT 的新变量中: # CERT=$(openssl x509 -in /path/to/certificate -outform der|base64 -w0)
- 列表:使用 ipa idoverrideuser-add-cert 命令将 ad_user@ad.example.com 的证书添加到用户帐户中: # ipa idoverrideuser-add-cert ad_user@ad.example.com --certificate $CERT
- 列表:使用 sss_cache 程序在 SSSD 缓存中使 ad_user@ad.example.com 记录无效,并强制重新载入 ad_user@ad.example.com 信息: # sss_cache -u ad_user@ad.example.com
- 列表:使用包含 AD 用户证书的文件名称运行 ipa certmap-match 命令: # ipa certmap-match ad_user_cert.pem -------------- 1 user matched -------------- Domain: AD.EXAMPLE.COM User logins: ad_user@ad.example.com ---------------------------- Number of entries returned 1 ---------------------------- 输出确认,您具有的证书验证数据被添加到 ad_user@ad.example.com,并存在在…
- 列表:为活动目录用户使用 ID 视图
- 命令/配置摘录:
# kinit admin
# CERT=$(openssl x509 -in /path/to/certificate -outform der|base64 -w0)第 15 章 将多个身份映射规则合并到一个规则中
- 要点:要将多个身份映射规则组合成一个组合规则,请使用 | (或)字符在单个映射规则前前,并使用 () 方括号将它们分隔,例如:
- 要点:证书映射过滤器的示例
- 列表:ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500} 是一个过滤器,它将智能卡证书中的主题和签发者链接到 IdM 用户帐户中 ipacertmapdata 属性的值。
- 列表:altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500} 是一个过滤器,它将智能卡证书中的主题和签发者链接到 AD 用户帐户中 altSecurityIdentities 属性的值。
- 列表:添加 --domain=ad.example.com 选项意味着映射到给定证书的用户不仅在本地 idm.example.com 域中搜索,还要在 ad.example.com 域中搜索
- 列表:userCertificate;binary={cert!bin} 是一个过滤器,它返回包含整个证书的用户条目。
- 列表:如果将 AD 配置为将用户帐户映射到用户帐户,则配置证书映射
- 列表:如果 AD 用户条目不包含证书或映射数据,则配置证书映射
- 命令/配置摘录:
$ ipa certmaprule-add ad_cert_for_ipa_and_ad_users \ --maprule='(|(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}))' \ --matchrule='<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' \ --domain=ad.example.com
$ ipa certmaprule-add ipa_cert_for_ad_users \ --maprule='(|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}))' \ --matchrule='<ISSUER>CN=Certificate Authority,O=REALM.EXAMPLE.COM' \ --domain=idm.example.com --domain=ad.example.com第 16 章 使用存储在 IdM 客户端桌面的证书配置身份验证
- 要点:通过配置身份管理(IdM),IdM 系统管理员可以使用向用户签发的证书颁发机构(CA)的证书,使用户能够向 IdM Web UI 和命令行界面(CLI)进行身份验证。证书存储在 IdM 客户端的桌面上。
- 要点:Web 浏览器可以在不属于 IdM 域的系统中运行。
- 列表:如果您要使用证书进行身份验证的用户已有证书,则不需要请求新的用户证书并将其导出到客户端;
- 列表:如果证书由 IdM 证书颁发机构(CA)直接签发,系统会自动将证书链接到用户。在这种情况下,您可以跳过手动链接过程。
- 列表:请求新的用户证书并将其导出到客户端
- 列表:确保证书和用户链接在一起
- 注意:注意 只有 IdM 用户可以使用证书登录到 Web UI。Active Directory 用户可使用其用户名和密码登录。
16.1. 在 Web UI 中为证书验证配置身份管理服务器
- 要点:作为身份管理(IdM)管理员,您可以允许用户使用证书为您的 IdM 环境进行身份验证。
- 要点:流程
- 列表:在 IdM 服务器上,获取管理员特权并创建 shell 脚本来配置服务器。 运行 ipa-advise config-server-for-smart-card-auth 命令,并将其输出保存到一个文件中,例如 server_certificate_script.sh : # kinit admin # ipa-advise config-server-for-smart-card-auth > server_certificate_script.sh 使用 chmod 实用程序为文件添加执行权限: # chmod +x server_certificate_script.sh
- 列表:运行 ipa-advise config-server-for-smart-card-auth 命令,并将其输出保存到一个文件中,例如 server_certificate_script.sh : # kinit admin # ipa-advise config-server-for-smart-card-auth > server_certificate_script.sh
- 列表:使用 chmod 实用程序为文件添加执行权限: # chmod +x server_certificate_script.sh
- 列表:在 IdM 域中的所有服务器上,运行 server_certificate_script.sh 脚本 如果 IdM CA 是唯一一个您允许向用户签发证书用于验证的 CA,使用 IdM Certificate Authority 证书 /etc/ipa/ca.crt 的路径: # ./server_certificate_script.sh /etc/ipa/ca.crt 如果不同的外部 CA 签署您想要为其启用证书验证的用户证书,则使用路径作为输入: # ./server_certificate_script.sh /tmp/ca1.pem /tmp/ca2.pem 注意 如果要为整个拓扑中启用用户的证书身份验证,请不要忘记在将来…
- 列表:如果 IdM CA 是唯一一个您允许向用户签发证书用于验证的 CA,使用 IdM Certificate Authority 证书 /etc/ipa/ca.crt 的路径: # ./server_certificate_script.sh /etc/ipa/ca.crt
- 列表:如果不同的外部 CA 签署您想要为其启用证书验证的用户证书,则使用路径作为输入: # ./server_certificate_script.sh /tmp/ca1.pem /tmp/ca2.pem
- 命令/配置摘录:
# kinit admin
# ipa-advise config-server-for-smart-card-auth > server_certificate_script.sh- 注意:注意 如果要为整个拓扑中启用用户的证书身份验证,请不要忘记在将来添加到系统的每个新副本上运行 脚本。
16.2. 请求新的用户证书并将其导出到客户端
- 要点:作为身份管理(IdM)管理员,您可以为 IdM 环境中的用户创建证书,并将其导出到您要为用户启用证书身份验证的 IdM 客户端。
- 要点:流程
- 列表:可选:创建一个新目录,如 ~/certdb/,并使其成为一个临时证书数据库。当系统提示时,创建一个 NSS 证书数据库密码来加密后续步骤中生成的证书的密钥: # mkdir ~/certdb/ # certutil -N -d ~/certdb/ Enter a password which will be used to encrypt your keys. The password should be at least 8 characters long, and should contain at least one non-alphabetic character. Enter new password: Re-enter…
- 列表:创建证书签名请求(CSR),并将输出重定向到文件。例如,要为 IDM.EXAMPLE.COM 域中的 idm_user 用户创建一个名称为 certificate_request.csr 的 4096 位 CSR,请将证书私钥的昵称设为 idm_user 以便于查找,并将主题设为 CN=idm_user,O=IDM.EXAMPLE.COM : # certutil -R -d ~/certdb/ -a -g 4096 -n idm_user -s "CN=idm_user,O=IDM.EXAMPLE.COM" > certificate_request.csr
- 列表:提示时,输入与您在使用 certutil 创建临时数据库时输入的相同的密码。然后继续随机输入,直到被告知停止: Enter Password or Pin for "NSS Certificate DB": A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard un…
- 列表:将证书请求文件提交到服务器。指定要与新发布的证书关联的 Kerberos 主体、存储证书的输出文件,以及可选的证书配置集。例如,为 idm_user@IDM.EXAMPLE.COM 获取 IECUserRoles 配置集(添加了用户角色扩展的配置集)的证书,把它保存在 ~/idm_user.pem 文件中: # ipa cert-request certificate_request.csr --principal=idm_user@IDM.EXAMPLE.COM --profile-id=IECUserRoles --certificate-out=~/idm_user.pem
- 列表:将证书添加到 NSS 数据库。使用 -n 选项设置与之前创建 CSR 时使用的相同的昵称,以便证书与 NSS 数据库中的私钥匹配。-t 选项设置信任级别。详情请查看 certutil(1)man page。-i 选项指定输入证书文件。例如,要将带有在 ~/idm_user.pem 文件中定义的 idm_user 别名的证书添加到 ~/certdb/ 数据库的 NSS数据库: # certutil -A -d ~/certdb/ -n idm_user -t "P,," -i ~/idm_user.pem
- 列表:验证 NSS 数据库中的密钥是否没有将 (orphan) 显示为其昵称。例如,要验证存储在 ~/certdb/ 数据库中的证书不是孤立的: # certutil -K -d ~/certdb/ < 0> rsa 5ad14d41463b87a095b1896cf0068ccc467df395 NSS Certificate DB:idm_user
- 命令/配置摘录:
# mkdir ~/certdb/
# certutil -N -d ~/certdb/- 注意:注意 如果要使用证书进行身份验证的用户已有证书,则不需要按照此路程操作。
16.3. 确保证书和用户链接在一起
- 要点:要使证书身份验证发挥作用,您需要确保证书链接到将使用证书进行身份管理(IdM)身份验证的用户。
- 列表:如果证书由不是您的身份管理环境一部分的证书颁发机构提供,请将用户和证书连接在一起。
- 列表:如果证书由 Identity Management CA 提供,则证书会自动添加到用户条目中,您不必将该证书链接到用户帐户。有关在 IdM 中创建新证书的详情,请参阅 请求新的用户证书并将其导出到客户端。
- 注意:注意 如果用户的证书已由 IdM CA 发布,则不需要按照此流程操作。
16.4. 配置浏览器以启用证书身份验证
- 要点:若要在使用 Web UI 登录身份管理(IdM)时通过证书进行身份验证,您需要将用户和相关证书颁发机构(CA)证书导入到 Mozilla Firefox 或 Google Chrome 浏览器。浏览器运行的主机本身不必是 IdM 域的一部分。
- 要点:IdM 支持以下浏览器来连接到 WebUI:
- 列表:Mozilla Firefox 38 及更新的版本
- 列表:Google Chrome 46 及更新的版本
- 列表:您有 PKCS#12 格式的、要导入到浏览器的 用户证书。
- 列表:打开 Firefox,然后导航到 Preferences → Privacy & Security。 Preferences 中的隐私和安全部分
- 列表:单击 View Certificates。 查看隐私和安全性中的证书
- 列表:在 Your Certificates 选项卡中,单击 Import。以 PKCS12 格式查找并打开用户证书,然后点 OK 和 OK。
16.5. 以 IdM 用户身份使用证书向身份管理 Web UI 进行身份验证
- 要点:选择 certificate login 选项,安全地访问 IdM Web UI。浏览器向服务器提供导入的客户端证书,在无需密码的情况下对用户进行身份验证。
- 要点:流程
- 列表:在浏览器中,导航到 IdM Web UI,例如 https://server.idm.example.com/ipa/ui。
- 列表:单击 Login Using Certificate。 IdM Web UI 中的 Login Using Certificate 按钮
- 列表:应该已经选择了用户的证书。取消选中 Remember this decision,然后单击 OK。 现在,您被验证为与证书对应的用户。
- 列表:为智能卡验证配置身份管理
16.6. 配置 IdM 客户端以使用证书启用对 CLI 的身份验证
- 要点:要使 IdM 用户在 IdM 客户端的命令行界面(CLI)中为 IdM 用户提供证书身份验证,请将 IdM 用户的证书和私钥导入到 IdM 客户端。有关创建并传输用户证书的详情,请参阅 请求新的用户证书并将其导出到客户端。
- 要点:流程
- 列表:登录 IdM 客户端,并让包含用户证书和私钥的 .p12 文件准备好。要获取并缓存 Kerberos ticket 授予 ticket(TGT),请使用带用户主体的 -X 选项和 X509_username:/path/to/file.p12 属性的 kinit 命令,指定在哪里查找用户的 X509 身份信息。例如,要获取 idm_user 的 TGT,使用保存在 ~/idm_user.p12 文件中的用户身份信息: $ kinit -X X509_idm_user='PKCS12:~/idm_user.p12' idm_user 注意 该命令还支持 .pem 文件格式: kinit -X X509_username='FILE:…
- 命令/配置摘录:
$ kinit -X X509_idm_user='PKCS12:~/idm_user.p12' idm_user- 注意:注意 该命令还支持 .pem 文件格式: kinit -X X509_username='FILE:/path/to/cert.pem,/path/to/key' user_principal
第 17 章 使用 IdM CA 续订服务器
- 要点:单一身份管理(IdM) CA 续订服务器管理 IdM 中共享系统证书的生命周期。此指定节点续订关键凭证并将其复制到其他 CA 服务器,确保一致性并防止拓扑出现身份验证失败。
17.1. IdM CA 续订服务器解释
- 要点:在使用嵌入式证书颁发机构(CA)的身份管理(IdM)部署中,CA 续订服务器维护并更新 IdM 系统证书。它确保了强大的 IdM 部署。
- 要点:IdM 系统证书包括:
- 列表:IdM CA 证书
- 列表:OCSP 签名证书
- 列表:IdM CA 子系统 证书
- 列表:IdM CA 审计签名 证书
- 列表:IdM 续订代理 (RA)证书
- 列表:KRA 传输和存储证书
- 注意:注意 在上游文档中,IdM CA 称为 Dogtag。
17.2. 更改并重置 IdM CA 续订服务器
- 要点:在停用当前服务器或配置无效时更改或重置身份管理(IdM) CA 续订服务器,以便证书续订可以继续正常工作。
- 要点:当证书颁发机构(CA)续订服务器停用时,身份管理(IdM)会自动从 IdM CA 服务器列表中选择一个新的 CA 续订服务器。系统管理员无法影响选择。
- 列表:您有 IdM 管理员凭证: $ kinit admin Password for admin@IDM.EXAMPLE.COM:
- 列表:可选:要找出部署中哪些 IdM 服务器有资格成为新的 CA 续订服务器的必需的 CA 角色: $ ipa server-role-find --role 'CA server' ---------------------- 2 server roles matched ---------------------- Server name: server.idm.example.com Role name: CA server Role status: enabled Server name: replica.idm.example.com Role name: CA server Role status: enable…
- 列表:可选:要找出哪个 CA 服务器是当前的 CA 续订服务器,请输入: $ ipa config-show | grep 'CA renewal' IPA CA renewal master: server.idm.example.com 当前续订服务器为 server.idm.example.com。
- 列表:要更改续订服务器配置,请使用 ipa config-mod 实用程序和 --ca-renewal-master-server 选项: $ ipa config-mod --ca-renewal-master-server replica.idm.example.com | grep 'CA renewal' IPA CA renewal master: replica.idm.example.com 重要 您还可以使用以下命令切换到新的 CA 续订服务器: ipa-cacert-manage --renew 命令。此命令会续订 CA 证书 , 并使您在其上运行新 CA 续订服务器的 CA 服务器。 ipa-cert-fix 命令…
- 命令/配置摘录:
$ kinit admin
Password for admin@IDM.EXAMPLE.COM:- 注意:重要 您还可以使用以下命令切换到新的 CA 续订服务器: ipa-cacert-manage --renew 命令。此命令会续订 CA 证书 , 并使您在其上运行新 CA 续订服务器的 CA 服务器。 ipa-cert-fix 命令。当证书过期时,该命令会恢复部署。它还可使您在其上运行新 CA 续订服务器的 CA 服务器。
第 18 章 管理外部签名的 CA 证书
- 要点:身份管理(IdM)提供不同类型的证书颁发机构(CA)配置。您可以选择安装带有集成 CA 或外部 CA 的 IdM。
- 要点:您必须指定在安装过程中使用的 CA 类型。但是,安装后,您可以从外部签名的 CA 移到自签名 CA,反之亦然。另外,当自动续订自签名 CA 时,您必须确保续订外部签名的 CA 证书。请参考管理外部签名的 CA 证书所需的相关部分。
18.1. 在 IdM 中从外部签名的 CA 切换到自签名 CA
- 要点:您可以从外部签名切换到身份管理(IdM)证书颁发机构(CA)的自签名证书。使用自签名 CA 时,自动管理 CA 证书的续订:系统管理员不需要向外部机构提交证书签名请求(CSR)。
- 要点:从外部签名切换到自签名 CA 只替换 CA 证书。之前 CA 签名的证书仍有效且仍在使用。例如,即使您移至自签名 CA 后,LDAP 证书的证书链也会保持不变:
- 列表:您有访问 IdM CA 续订服务器和所有 IdM 客户端及服务器的 root 权限。
- 列表:在 IdM CA 续订服务器上,将 CA 证书更新为自签名: # ipa-cacert-manage renew --self-signed Renewing CA certificate, please wait CA certificate successfully renewed The ipa-cacert-manage command was successful
- 列表:以 root 身份 SSH 到所有剩余的 IdM 服务器和客户端。例如: # ssh root@idmclient01.idm.example.com
- 列表:在 IdM 客户端上,使用来自服务器的证书更新本地 IdM 证书数据库: [idmclient01 ~]# ipa-certupdate Systemwide CA database updated. Systemwide CA database updated. The ipa-certupdate command was successful
- 列表:要检查您的更新是否成功,并且新的 CA 证书是否已添加到 /etc/ipa/ca.crt 文件中: [idmclient01 ~]$ openssl crl2pkcs7 -nocrl -certfile /etc/ipa/ca.crt | openssl pkcs7 -print_certs -text -noout [...] Certificate: Data: Version: 3 (0x2) Serial Number: 39 (0x27) Signature Algorithm: sha256WithRSAEncryption Issuer: O=IDM.EXAMPLE.COM, CN=Certificate …
- 命令/配置摘录:
external_CA certificate > IdM CA certificate > LDAP certificate
# ipa-cacert-manage renew --self-signed18.2. 在 IdM 中从自签名 CA 切换到外部签名的 CA
- 要点:在 IdM 中,您可以从自签名 CA 切换到外部签名的 CA。在 IdM 中切换到外部签名的 CA 后,您的 IdM CA 服务器变为外部 CA 的子 CA。另外,不会自动管理 CA 证书的续订,系统管理员必须向外部颁发机构提交证书签名请求(CSR)。
- 要点:流程
- 列表:要切换到外部签名的 CA,CSR 必须由外部 CA 签名。按照 使用外部 CA 续订 IdM CA 续订服务器证书 中的步骤切换到 IdM 中的自签名 CA。
18.3. 使用外部 CA 续订 IdM CA 续订服务器证书
- 要点:使用外部 CA 续订身份管理(IdM)证书颁发机构(CA)证书,为证书签名请求(CSR)签名。在这个配置中,您的 IdM CA 服务器是外部 CA 的 subCA。外部 CA 可以(但不必)是 Active Directory 证书服务器(AD CS)。
- 要点:如果外部证书颁发机构是 AD CS,您可以在 CSR 中为 IdM CA 证书指定您想要的模板。证书模板定义收到证书请求时使用的策略和规则。AD 中的证书模板与 IdM 中的证书配置集对应。
- 列表:您具有对 IdM CA 续订服务器的 root 访问权限。
- 列表:创建要提交到外部 CA 的 CSR: 如果外部 CA 是 AD CS,请使用 --external-ca-type=ms-cs 选项。如果要使用与默认 subCA 模板不同的模板,请使用 --external-ca-profile 选项指定它: # ipa-cacert-manage renew --external-ca --external-ca-type=ms-cs [--external-ca-profile=PROFILE] Exporting CA certificate signing request, please wait The next step is to get /var/lib/ipa/ca.csr s…
- 列表:如果外部 CA 是 AD CS,请使用 --external-ca-type=ms-cs 选项。如果要使用与默认 subCA 模板不同的模板,请使用 --external-ca-profile 选项指定它: # ipa-cacert-manage renew --external-ca --external-ca-type=ms-cs [--external-ca-profile=PROFILE] Exporting CA certificate signing request, please wait The next step is to get /var/lib/ipa/ca.csr signed by your CA an…
- 列表:如果外部 CA 不是 AD CS: # ipa-cacert-manage renew --external-ca Exporting CA certificate signing request, please wait The next step is to get /var/lib/ipa/ca.csr signed by your CA and re-run ipa-cacert-manage as: ipa-cacert-manage renew --external-cert-file=/path/to/signed_certificate --external-cert-file=/path/to/external_…
- 列表:将位于 /var/lib/ipa/ca.csr 中的 CSR 提交到外部 CA。这个过程根据要用作外部 CA 的服务的不同而有所不同。
- 列表:检索发布的证书和 CA 证书链,用于在基本的 64 编码 Blob 中发布 CA,即: 如果外部 CA 不是 AD CS,则为 PEM 文件。 如果外部 CA 是 AD CS,则为 Base_64 证书。 每个证书服务的进程都有所不同。通常,网页或通知电子邮件中的下载链接允许管理员下载所有需要的证书。 如果外部 CA 是 AD CS,且您已通过 Microsoft Windows 认证授权机构管理窗口使用已知模板提交 CSR,AD CS 会立即发出证书,且 Save Certificate 对话框会出现在 AD CS Web 界面中,询问如何保存颁发的证书。
- 命令/配置摘录:
# ipa-cacert-manage renew --external-ca --external-ca-type=ms-cs [--external-ca-profile=PROFILE]
Exporting CA certificate signing request, please wait The next step is to get /var/lib/ipa/ca.csr signed by your CA and re-run ipa-cacert-manage as: ipa-cacert-manage renew --external-cert-file=/path/to/signed_certificate --external-cert-file=/path/to/external_ca_certificate The ipa-cacert-manage command was successful18.4. 更新 IdM 中的外部 CA 公共证书
- 要点:更新外部 CA 公共证书可确保 IdM 拓扑识别续订的根授权。在所有服务器和客户端中分发新的证书链,维护信任并防止整个环境进行身份验证失败。
- 要点:在此配置中,您的 IdM CA 续订服务器是外部 CA 的子 CA。当外部 CA 续订时,例如,如果它达到其过期日期,您必须在 IdM 拓扑中更新其证书。
- 列表:在具有多个服务器和客户端的测试环境中运行,以确保操作和时间顺序正确。
- 列表:确保您有新更新的外部 CA 公共证书,并在单独的 .crt 文件中组成其链的所有证书。
- 列表:安装新的外部 CA 证书以及外部 CA 的完整 CA 证书链作为 IdM 的额外 CA 证书。系统接受 PEM、DER、PKCS""7、PKCS""8、原始私钥和 PKCSPOST 格式的证书文件。 在拓扑中的一个 IdM 服务器上,将更新的外部 CA 证书和证书链从 .crt 文件添加到 IdM: # ipa-cacert-manage install /path/to/ca.crt CA 证书被安装到 LDAP 存储, cn=certificates,cn=ipa,cn=etc,dc=realm,dc=name 中。 将其余证书链作为额外的 CA 证书安装到 IdM 中。因为 ipa-cacert-manage install…
- 列表:在拓扑中的一个 IdM 服务器上,将更新的外部 CA 证书和证书链从 .crt 文件添加到 IdM: # ipa-cacert-manage install /path/to/ca.crt CA 证书被安装到 LDAP 存储, cn=certificates,cn=ipa,cn=etc,dc=realm,dc=name 中。
- 列表:将其余证书链作为额外的 CA 证书安装到 IdM 中。因为 ipa-cacert-manage install 命令只读取文件中的第一个证书,所以您必须一次安装一个证书的完整 CA 链。例如,如果链包含两个证书,请将每个证书保存在单独的文件中,并为每个文件单独运行 ipa-cacert-manage install : # ipa-cacert-manage install /path/to/intermediate-ca.crt # ipa-cacert-manage install /path/to/root-ca.crt
- 列表:运行 ipa-certupdate 来更新拓扑中的所有其他 IdM 服务器,以使用 LDAP 同步本地 NSS 数据库和 /etc/ipa/ca.crt : # ipa-certupdate
- 命令/配置摘录:
# ipa-cacert-manage install /path/to/ca.crt
# ipa-cacert-manage install /path/to/intermediate-ca.crt18.5. 其它资源
- 列表:安装带有集成 DNS 和外部 CA 作为根 CA 的 IdM 服务器
- 列表:安装没有集成 DNS 和外部 CA 作为 root CA 的 IdM 服务器
第 19 章 IdM 离线时续订过期的系统证书
- 要点:过期的系统证书阻止身份管理(IdM)服务启动。管理员使用 ipa-cert-fix 工具在系统离线时更新这些凭证,确保 LDAP 服务在启动修复前处于活跃状态。
19.1. 先决条件
- 列表:通过在主机上输入 ipactl start --ignore-service-failures 命令来确保 LDAP 服务正在运行。
19.2. 在 CA 续订服务器上续订过期的系统证书
- 要点:ipa-cert-fix 工具分析并更新过期的证书可防止系统启动。在继续之前,创建完整系统备份,因为此工具会无关地修改 LDAP 数据库和 NSS 数据库。
- 要点:先决条件
- 列表:您必须以管理员身份登录到服务器。.Procedure 可选:备份系统。这强烈推荐,因为 ipa-cert-fix 对 nssdb 进行了不可逆更改。因为 ipa-cert-fix 也对 LDAP 进行了更改,因此也建议备份整个集群。 启动 ipa-cert-fix 工具,以分析系统并列出需要续订的过期证书: # ipa-cert-fix ... The following certificates will be renewed: Dogtag sslserver certificate: Subject: CN=ca1.example.com,O=EXAMPLE.COM 201905222205 Serial: 13 Ex…
- 列表:可选:备份系统。这强烈推荐,因为 ipa-cert-fix 对 nssdb 进行了不可逆更改。因为 ipa-cert-fix 也对 LDAP 进行了更改,因此也建议备份整个集群。
- 列表:启动 ipa-cert-fix 工具,以分析系统并列出需要续订的过期证书: # ipa-cert-fix ... The following certificates will be renewed: Dogtag sslserver certificate: Subject: CN=ca1.example.com,O=EXAMPLE.COM 201905222205 Serial: 13 Expires: 2019-05-12 05:55:47 ... Enter "yes" to proceed:
- 列表:输入 yes 以开始续订过程: Enter "yes" to proceed: true Proceeding. Renewed Dogtag sslserver certificate: Subject: CN=ca1.example.com,O=EXAMPLE.COM 201905222205 Serial: 268369925 Expires: 2021-08-14 02:19:33 ... Becoming renewal master. The ipa-cert-fix command was successful ipa-cert-fix 更新所有过期证书前最多可能需要一分钟的时间。
- 列表:验证所有服务现在是否都在运行: # ipactl status Directory Service: RUNNING krb5kdc Service: RUNNING kadmin Service: RUNNING httpd Service: RUNNING ipa-custodia Service: RUNNING pki-tomcatd Service: RUNNING ipa-otpd Service: RUNNING ipa: INFO: The ipactl command was successful
- 列表:确保 LDAP 复制在拓扑中正常工作后,根据上述流程,首先在一台 CA 服务器上运行 ipa-cert-fix。
- 命令/配置摘录:
# ipa-cert-fix
... The following certificates will be renewed: Dogtag sslserver certificate: Subject: CN=ca1.example.com,O=EXAMPLE.COM 201905222205 Serial: 13 Expires: 2019-05-12 05:55:47 ... Enter "yes" to proceed:- 注意:重要 如果您在不是 CA 续订服务器的 CA(证书授权机构)主机上运行 ipa-cert-fix 工具,并且 实用程序续订共享证书,则该主机会自动成为域中的新 CA 续订服务器。域中必须始终只有一个 CA 续订服务器,以避免不一致。
19.3. 续订后验证 IdM 域中的其他 IdM 服务器
- 要点:恢复续订服务器后,强制重新启动所有其他域副本。验证 certmonger 是否已成功检索新证书。如果特定副本无法访问,请在这些主机上运行 ipa-cert-fix。
- 要点:先决条件
- 列表:您必须以管理员身份登录到服务器。
- 列表:使用 --force 参数重启 IdM: # ipactl restart --force 使用 --force 参数时,ip actl 实用程序会忽略单个服务启动失败。例如,如果服务器也是证书过期的 CA,pki-tomcat 服务将无法启动。这是预期并忽略的,因为使用了 --force 参数。
- 列表:重启后,验证 certmonger 服务 是否已更新证书(certificate 状态显示 MONITORING): # getcert list | egrep '^Request|status:|subject:' # ipactl restart --force Request ID '20190522120745': status: MONITORING subject: CN=IPA RA,O=EXAMPLE.COM 201905222205 Request ID '20190522120834': status: MONITORING subject: CN=Certificate Authority,O=EX…
- 列表:如果服务器也是 CA,以上命令会报告 pki-tomcat 服务使用的证书的 CA_UNREACHABLE : Request ID '20190522120835': status: CA_UNREACHABLE subject: CN=ca2.example.com,O=EXAMPLE.COM 201905222205 ...
- 列表:要续订此证书,请使用 ipa-cert-fix 工具: # ipa-cert-fix # ipactl restart --force Dogtag sslserver certificate: Subject: CN=ca2.example.com,O=EXAMPLE.COM Serial: 3 Expires: 2019-05-11 12:07:11 Enter "yes" to proceed: true Proceeding. Renewed Dogtag sslserver certificate: Subject: CN=ca2.example.com,O=EXAMPLE.COM 201905222205 S…
- 命令/配置摘录:
# ipactl restart --force
# getcert list | egrep '^Request|status:|subject:'第 20 章 如果 web 服务器和 LDAP 服务器证书还没有在 IdM 副本上过期,请替换它们
- 要点:作为身份管理(IdM)系统管理员,您可以手动替换由运行在 IdM 服务器上的 Web (或 httpd)和 LDAP (或目录 )服务使用的证书。如果证书接近过期,并且 certmonger 工具没有配置为自动续订,或者证书由外部证书颁发机构(CA)签名,这可能是必需的。
- 要点:这个示例描述了如何为在 server.idm.example.com IdM 服务器中运行的服务安装证书。您从外部 CA 获取证书。
- 列表:在 IdM 服务器具有复制协议的拓扑中的至少一个其他的 IdM 副本上,Web 和 LDAP 证书仍有效。这是 ipa-server-certinstall 命令的先决条件,它要求 TLS 连接与其他 IdM 副本通信。如果证书无效,则无法建立连接,命令会失败。在这种情况下,请参阅 如果已在整个 IdM 部署中过期,替换 web 服务器和 LDAP 服务器证书。
- 列表:您有到 IdM 服务器的 root 访问权限。
- 列表:您知道 目录管理器 密码。
- 列表:如果新的 httpd/LDAP 证书将由与旧 CA 不同的外部 CA 签名,您可以访问存储外部 CA 证书链的文件。
- 列表:如果新的 httpd/LDAP 证书将由与旧 CA 不同的 CA 签名,请安装新的外部 CA 证书,以及外部 CA 的整个 CA 证书链作为 IdM 的额外 CA 证书。存储证书的文件在 PEM 和 DER 证书、PKCS""7 证书链、PKCS""8 和原始私钥和 PKCSThycotic 格式中接受。 安装 CA 证书: # ipa-cacert-manage install /path/to/ca.crt 重要 如果新的外部 CA 证书的主题与旧 CA 证书相同,但有所不同,因为它使用不同的密钥,则只能在满足以下条件时使用它: 这两个证书具有相同的信任标记。 CA 共享相同的 nickname。 证书中列出的 X509 扩展…
- 列表:安装 CA 证书: # ipa-cacert-manage install /path/to/ca.crt 重要 如果新的外部 CA 证书的主题与旧 CA 证书相同,但有所不同,因为它使用不同的密钥,则只能在满足以下条件时使用它: 这两个证书具有相同的信任标记。 CA 共享相同的 nickname。 证书中列出的 X509 扩展包括授权密钥 标识符 (AKI)扩展。
- 命令/配置摘录:
# ipa-cacert-manage install /path/to/ca.crt
# ipa-cacert-manage install /path/to/intermediate-ca.crt- 注意:注意 httpd 和 LDAP 服务证书在不同的 IdM 服务器上有不同的密钥对和主题名称,因此您必须单独在每个 IdM 服务器上更新证书。
- 注意:重要 如果新的外部 CA 证书的主题与旧 CA 证书相同,但有所不同,因为它使用不同的密钥,则只能在满足以下条件时使用它: 这两个证书具有相同的信任标记。 CA 共享相同的 nickname。 证书中列出的 X509 扩展包括授权密钥 标识符 (AKI)扩展。
第 21 章 如果 web 服务器和 LDAP 服务器证书已在整个 IdM 部署中过期,请替换它们
- 要点:管理员必须手动替换过期的 HTTP 和 LDAP 证书才能恢复系统功能。这个恢复过程涉及生成新的签名请求,获取外部签名,并在拓扑中的每个副本上安装更新的凭证。
- 要点:在没有集成证书颁发机构(CA)的 IdM 部署中,certmonger 服务默认不会跟踪 IdM 服务证书或提供过期警告。如果 IdM 系统管理员没有手动配置证书跟踪或设置通知,证书可能会在没有通知的情况下过期。
- 列表:httpd 和 LDAP 证书已在 拓扑中的所有 IdM 副本上过期。如果没有过期,请参阅 如果还没有在 IdM 副本 上过期,替换 web 服务器和 LDAP 服务器证书。
- 列表:您有访问 IdM 服务器和副本的 root 权限。
- 列表:您知道 目录管理器 密码。
- 列表:您已创建了以下目录和文件的备份: /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ /etc/httpd/alias /var/lib/certmonger /var/lib/ipa/certs/
- 列表:/etc/dirsrv/slapd-IDM-EXAMPLE-COM/
- 列表:/etc/httpd/alias
- 命令/配置摘录:
# ipa-cacert-manage install /path/to/ca.crt
# ipa-cacert-manage install /path/to/intermediate-ca.crt- 注意:注意 httpd 和 LDAP 服务证书在不同的 IdM 服务器上有不同的密钥对和主题名称。因此,您必须单独更新每个 IdM 服务器上的证书。
- 注意:重要 如果新的外部 CA 证书的主题与旧 CA 证书相同,但有所不同,因为它使用不同的密钥,则只能在满足以下条件时使用它: 这两个证书具有相同的信任标记。 CA 共享相同的 nickname。 证书中列出的 X509 扩展包括授权密钥 标识符 (AKI)扩展。
第 22 章 从过期的系统证书中恢复
- 要点:如果身份管理(IdM)证书过期了,核心服务(如 Web UI、LDAP 和证书颁发)失败。ipa-certupdate 和 ipa-cacert-manage 等命令无法正常工作,因为系统无法建立安全连接。以下章节提供了几个关键故障场景的流程。
- 命令/配置摘录:
# tar czvf /root/pki-backup_$(hostname -f)_$(date +%F).tar.gz /etc/dirsrv/slapd-* /etc/pki/pki-tomcat/ /var/lib/ipa/ /var/kerberos/krb5kdc/- 注意:重要 在进行任何更改之前,请创建 IdM 服务器的完整备份。至少,在每台服务器上创建一个关键数据的文件级备份: # tar czvf /root/pki-backup_$(hostname -f)_$(date +%F).tar.gz /etc/dirsrv/slapd-* /etc/pki/pki-tomcat/ /var/lib/ipa/ /var/kerberos/krb5kdc/ 在没有可靠备份的情况下不要继续。
- 注意:警告 使用 ipa-cert-fix 命令要非常小心。ipa-cert-fix 是一个功能强大但具有侵入性的工具,专为特定的故障场景设计:续订服务器上过期的服务证书。 如果 CA 证书本身已过期,请不要运行 ipa-cert-fix。 不要在副本服务器上运行 ipa-cert-fix,除非续订服务器处于不可恢复状态。在这种情况下,创建一个支持问题单。 不要将 ipa-cert-fix 作为常规故障排除工具运行。 滥用此工具可能会使情况更糟。
22.1. 从副本上过期的服务证书中恢复
- 要点:在这种故障场景下,续订服务器是健康的,但一个或多个副本无法续订其证书,并且现在处于离线状态。目标是从服务器手动同步或重新发布必要的证书,以恢复副本。
- 要点:此流程涵盖四个关键证书:RA Agent 证书、Subsystem 证书、Directory Server (LDAP) 证书和 PKI Tomcat (Web Server) 证书。
- 列表:验证 IdM 服务是否正在运行: # ipactl status
- 列表:可选。如果任何服务都没有运行,请强制它们启动: # ipactl start -f -f 或 --force 标志绕过一些启动检查,这在服务因为过期的证书而无法进行通信时是必需的。
- 列表:比较续订服务器和故障副本之间的 RA Agent 和 Subsystem 证书。 在健康的续订服务器和故障副本上,检索 RA Agent 和 subsystem 证书的序列号,并验证它们是否一样。 RA Agent 证书及其相应的 LDAP 条目。序列号是分号分隔的 description 属性字符串中的第二个值,例如 2;SERIAL;…: # openssl x509 -in /var/lib/ipa/ra-agent.pem -noout -serial # ldapsearch -D "cn=directory manager" -W -b "uid=ipara,ou=people,o=ipaca" descriptio…
- 列表:RA Agent 证书及其相应的 LDAP 条目。序列号是分号分隔的 description 属性字符串中的第二个值,例如 2;SERIAL;…: # openssl x509 -in /var/lib/ipa/ra-agent.pem -noout -serial # ldapsearch -D "cn=directory manager" -W -b "uid=ipara,ou=people,o=ipaca" description
- 列表:Subsystem 证书及其相应的 LDAP 条目。序列号是分号分隔的 description 属性字符串中的第二个值,例如 2;SERIAL;…: # certutil -L -d /etc/pki/pki-tomcat/alias/ -n 'subsystemCert cert-pki-ca' | grep "Serial Number" # ldapsearch -D "cn=directory manager" -W -b "uid=pkidbuser,ou=People,o=ipaca" description 如果副本上的序列号与 CA 续订服务器上的序列号不匹配,请执行下一步来同步它们。
- 列表:将健康的证书手动复制到副本。将 ra-agent.pem 和 subsystem 证书从续订服务器复制到故障副本。 复制 RA agent 证书文件: # scp /var/lib/ipa/ra-agent.pem root@failed-replica.idm.example.com:/tmp/ 导出 subsystem 证书: # certutil -L -d /etc/pki/pki-tomcat/alias -n 'subsystemCert cert-pki-ca' -a > /tmp/subsystem.pem 复制 subsystem 证书: # scp /tmp/subsystem.pem root@failed-…
- 命令/配置摘录:
# ldapsearch -Y GSSAPI -b cn=masters,cn=ipa,cn=etc,dc=example,dc=com ipaConfigString=caRenewalMaster dn
# ldapsearch -x -D 'cn=Directory Manager' -W -b cn=masters,cn=ipa,cn=etc,dc=example,dc=com ipaConfigString=caRenewalMaster dn- 注意:注意 如果您不确定哪个服务器是续订服务器,请在任何一个 IdM 服务器上运行以下命令。命令输出是 CA 续订服务器的可分辨名称(DN): # ldapsearch -Y GSSAPI -b cn=masters,cn=ipa,cn=etc,dc=example,dc=com ipaConfigString=caRenewalMaster dn 如果 Kerberos 不可用,请使用以下命令和目录管理器密码: # ldapsearch -x -D 'cn=Directory Manager' -W -b cn=masters,cn=ipa,cn=etc,dc=example,dc=com ipaConfigString=caRenewalMaster dn
- 注意:注意 以上命令会创建 /tmp/ldap.csr。有些 certutil 版本可能会向文件中添加额外的文本。确保文件仅包含 -----BEGIN NEW CERTIFICATE REQUEST----- 块,而不包含任何其他内容。
22.2. 从续订服务器上的过期服务证书中恢复
- 要点:在这种情况下,IdM CA 证书仍有效,但其他服务证书(LDAP, HTTPD)已在续订服务器上过期。ipa-cert-fix 工具专门用于处理此类问题。
- 要点:流程
- 列表:停止续订服务器上的 IdM 服务: # ipactl stop
- 列表:运行 ipa-cert-fix 来: 检查跟踪的证书。 在 LDAP 中重置证书的到期日期。 允许 certmonger 发布新证书。 提示时输入 yes 继续: # ipa-cert-fix 警告 如果您的 CA 已过期,请不要运行 ipa-cert-fix 命令。在这种情况下,请跳过这一步。
- 列表:检查跟踪的证书。
- 列表:在 LDAP 中重置证书的到期日期。
- 列表:允许 certmonger 发布新证书。 提示时输入 yes 继续: # ipa-cert-fix 警告 如果您的 CA 已过期,请不要运行 ipa-cert-fix 命令。在这种情况下,请跳过这一步。
- 列表:运行 ipa-certupdate,将新修复和发布的证书传播到所有系统服务: # ipa-certupdate
- 命令/配置摘录:
# ipactl stop
# ipa-cert-fix- 注意:警告 如果您的 CA 已过期,请不要运行 ipa-cert-fix 命令。在这种情况下,请跳过这一步。
22.3. 从过期的 IdM CA 证书中恢复
- 要点:这是最重要的故障。如果 IdM CA 证书本身已过期,则无法验证或发布证书。恢复过程涉及将 CA 证书续订为自签名证书以恢复系统功能,然后可选择将其使用外部 CA 对其重新签名(如果这是您的最初配置)。
- 要点:流程
- 列表:在续订服务器上,将 CA 证书续订为自签名证书。这个命令使用现有的私钥生成一个带有续订有效期限的新 CA 证书: # ipa-cacert-manage renew --self-signed 如果您的证书接近其到期日期,且续订它并没有将到期日期推后,请参阅 当 IPA 的 CA 证书接近到期日期时,续订不会将到期日期推后 解决方案。
- 列表:在续订服务器上修复过期的服务证书。 停止 IdM 服务: # ipactl stop 运行 ipa-cert-fix 命令以重置 IdM 数据库中过期的服务证书的过期日期: # ipa-cert-fix 发布新证书并将其应用到 IdM 服务: # ipa-certupdate 重启 IdM 服务以完成续订: # ipactl start
- 列表:停止 IdM 服务: # ipactl stop
- 列表:运行 ipa-cert-fix 命令以重置 IdM 数据库中过期的服务证书的过期日期: # ipa-cert-fix
- 列表:发布新证书并将其应用到 IdM 服务: # ipa-certupdate
- 列表:重启 IdM 服务以完成续订: # ipactl start
- 命令/配置摘录:
# ipa-cacert-manage renew --self-signed
# ipactl stop第 23 章 在 IdM CA 服务器中生成 CRL
- 要点:如果您的 IdM 部署使用嵌入的证书颁发机构(CA),您可能需要将证书撤销列表(CRL)的生成从一个身份管理(IdM)服务器移到另一个。例如,当您要将服务器迁移到另一个系统时,可能需要这样做。
- 要点:仅配置一台服务器来生成 CRL。执行 CRL publisher 角色的 IdM 服务器通常与执行 CA 续订服务器角色的服务器相同,但这不是强制要求。在取消 CRL publisher 服务器前,选择并配置另一个服务器来执行 CRL publisher 服务器角色。
23.1. 在 IdM 服务器中停止 CRL 生成
- 要点:使用 ipa-crlgen-manage 命令停止在 IdM CRL 发布程序服务器上生成证书撤销列表(CRL)。您必须在当前服务器上禁用 CRL 生成,然后才能在新服务器上启用它,因为每次只有一个服务器应生成 CRL。
- 要点:先决条件
- 列表:您必须以 root 身份登录。
- 列表:检查您的服务器是否正在生成 CRL: [root@server ~]# ipa-crlgen-manage status CRL generation: enabled Last CRL update: 2019-10-31 12:00:00 Last CRL Number: 6 The ipa-crlgen-manage command was successful
- 列表:停止在服务器上生成 CRL: [root@server ~]# ipa-crlgen-manage disable Stopping pki-tomcatd Editing /var/lib/pki/pki-tomcat/conf/ca/CS.cfg Starting pki-tomcatd Editing /etc/httpd/conf.d/ipa-pki-proxy.conf Restarting httpd CRL generation disabled on the local host. Please make sure to configure CRL generation on another master with…
- 列表:检查服务器是否停止生成 CRL: [root@server ~]# ipa-crlgen-manage status 服务器停止生成 CRL。下一步是在 IdM 副本上启用 CRL 生成。
- 命令/配置摘录:
[root@server ~]# ipa-crlgen-manage status
CRL generation: enabled Last CRL update: 2019-10-31 12:00:00 Last CRL Number: 6 The ipa-crlgen-manage command was successful23.2. 在 IdM 副本服务器中启动 CRL 生成
- 要点:您可以使用 ipa-crlgen-manage 命令在 IdM CA 服务器上开始生成证书撤销列表(CRL)。
- 要点:先决条件
- 列表:RHEL 系统必须是 IdM 证书颁发机构服务器。
- 列表:您必须以 root 身份登录。
- 列表:开始生成 CRL: [root@replica1 ~]# ipa-crlgen-manage enable Stopping pki-tomcatd Editing /var/lib/pki/pki-tomcat/conf/ca/CS.cfg Starting pki-tomcatd Editing /etc/httpd/conf.d/ipa-pki-proxy.conf Restarting httpd Forcing CRL update CRL generation enabled on the local host. Please make sure to have only a single CRL generation…
- 列表:检查是否生成 CRL: [root@replica1 ~]# ipa-crlgen-manage status CRL generation: enabled Last CRL update: 2019-10-31 12:10:00 Last CRL Number: 7 The ipa-crlgen-manage command was successful
- 命令/配置摘录:
[root@replica1 ~]# ipa-crlgen-manage enable
Stopping pki-tomcatd Editing /var/lib/pki/pki-tomcat/conf/ca/CS.cfg Starting pki-tomcatd Editing /etc/httpd/conf.d/ipa-pki-proxy.conf Restarting httpd Forcing CRL update CRL generation enabled on the local host. Please make sure to have only a single CRL generation master. The ipa-crlgen-manage command was successful23.3. 更改 CRL 更新间隔
- 要点:默认情况下,证书撤销列表(CRL)文件每四小时由身份管理证书颁发机构(Idm CA)自动生成。您可以按照以下流程更改此间隔。
- 要点:流程
- 列表:停止 CRL 生成服务器: # systemctl stop pki-tomcatd@pki-tomcat.service
- 列表:打开 /var/lib/pki/pki-tomcat/conf/ca/CS.cfg 文件,并将 ca.crl.MasterCRL.autoUpdateInterval 值改为新的间隔设置。例如,要每 60 分钟生成 CRL: ca.crl.MasterCRL.autoUpdateInterval=60 注意 如果您更新了 ca.crl.MasterCRL.autoUpdateInterval 参数,则更改将在下一次计划的 CRL 更新后生效。
- 列表:启动 CRL 生成服务器: # systemctl start pki-tomcatd@pki-tomcat.service
- 列表:在 IdM 副本服务器中启动 CRL 生成
- 命令/配置摘录:
# systemctl stop pki-tomcatd@pki-tomcat.service
ca.crl.MasterCRL.autoUpdateInterval=60- 注意:注意 如果您更新了 ca.crl.MasterCRL.autoUpdateInterval 参数,则更改将在下一次计划的 CRL 更新后生效。
第 24 章 停用执行 CA 续订服务器和 CRL 发布者角色的服务器
- 要点:在停用当前包含这两个角色的服务器之前,将证书颁发机构(CA)续订服务器和 CRL 发布者角色转移到另一个 CA 副本。
- 要点:在本例中,主机 server.idm.example.com ,其履行 CA 续订服务器和 CRL 发布者角色,必须停用。此流程将 CA 续订服务器和 CRL 发布者角色转移到主机 replica.idm.example.com,并从 IdM 环境中删除 server.idm.example.com。
- 列表:有 IdM 管理员凭证。
- 列表:您有要停用的服务器的 root 密码。
- 列表:在您的 IdM 环境中至少有两个 CA 副本。
- 列表:获取 IdM 管理员凭证: [user@server ~]$ kinit admin Password for admin@IDM.EXAMPLE.COM:
- 列表:可选:如果您不确定哪些服务器执行 CA 续订服务器和 CRL 发布者角色: 显示当前的 CA 续订服务器。您可以从任何 IdM 服务器运行以下命令: [user@server ~]$ ipa config-show | grep 'CA renewal' IPA CA renewal master: server.idm.example.com 测试主机是否为当前的 CRL 发布者。 [user@server ~]$ ipa-crlgen-manage status CRL generation: enabled Last CRL update: 2019-10-31 12:00:00 Last CRL Number: 6 Th…
- 列表:显示当前的 CA 续订服务器。您可以从任何 IdM 服务器运行以下命令: [user@server ~]$ ipa config-show | grep 'CA renewal' IPA CA renewal master: server.idm.example.com
- 命令/配置摘录:
[user@server ~]$ kinit admin
Password for admin@IDM.EXAMPLE.COM:- 注意:注意 您不需要配置同一服务器来执行 CA 续订服务器和 CRL 发布者角色。
第 25 章 使用 certmonger 为服务获取 IdM 证书
- 要点:certmonger 在身份管理中自动化系统和服务证书的生命周期。此服务跟踪过期日期、处理续订请求并安装更新的凭证,以确保不间断的服务操作。
25.1. Certmonger 概述
- 要点:当 Identity Management(IdM)安装集成 IdM 证书颁发机构(CA)时,它将使用 certmonger 服务 来跟踪和续订系统和服务证书。当证书到达过期日期时,certmonger 通过以下 方法管理续订过程:
- 要点:如果原始请求指定了,则执行保存后的命令。例如,保存后命令可以指示 certmonger 重新启动 相关服务,以便服务获取新证书。
- 列表:使用原始请求中提供的选项来重新生成一个证书签名请求(CSR)。
- 列表:使用 IdM API cert-request 命令将 CSR 提交到 IdM CA。
- 列表:从 IdM CA 接收证书。
- 列表:如果原始请求指定了,则执行预先保存的命令。
- 列表:在续订请求中指定的位置安装新证书:在 NSS 数据库或一个文件中。
- 列表:如果原始请求指定了,则执行保存后的命令。例如,保存后命令可以指示 certmonger 重新启动 相关服务,以便服务获取新证书。 证书类型 certmonger 跟踪 证书可分为系统和服务证书。
25.2. 使用 certmonger 为服务获取 IdM 证书
- 要点:为确保浏览器和身份管理(IdM)客户端上运行的 Web 服务之间的通信安全且加密,请使用 TLS 证书。从 IdM 证书颁发机构(CA)获取您的 Web 服务的 TLS 证书。
- 要点:按照以下流程,使用 certmonger 获取在 IdM 客户端上运行的服务(HTTP/my_company.idm.example.com@IDM.EXAMPLE.COM)的 IdM 证书。
- 列表:Web 服务器已注册为 IdM 客户端。
- 列表:您有正在运行的 IdM 客户端的 root 访问权限。
- 列表:请求证书的服务不必在 IdM 中预先存在。
- 列表:在运行 HTTP 服务的 my_company.idm.example.com IdM 客户端中,请求与 HTTP/my_company.idm.example.com@IDM.EXAMPLE.COM 主体对应的服务的证书,并指定: 证书将存储在本地 /etc/pki/tls/certs/httpd.pem 文件中 私钥存储在本地 /etc/pki/tls/private/httpd.key 文件中 将 SubjectAltName 的 extensionRequest 添加到签名请求中,其 DNS 名称为 my_company.idm.example.com : # ipa-getcert request -K HTTP/my_…
- 列表:证书将存储在本地 /etc/pki/tls/certs/httpd.pem 文件中
- 列表:私钥存储在本地 /etc/pki/tls/private/httpd.key 文件中
- 命令/配置摘录:
# ipa-getcert request -K HTTP/my_company.idm.example.com -k /etc/pki/tls/private/httpd.key -f /etc/pki/tls/certs/httpd.pem -g 2048 -D my_company.idm.example.com -C "systemctl restart httpd"
New signing request "20190604065735" added.25.3. 请求服务证书的证书的通信流
- 要点:这些图显示了当 certmonger 从身份管理(IdM)证书认证机构(CA)服务器请求服务证书时发生什么情况的阶段。序列由这些图表组成:
- 要点:未加密的通信 显示初始情况:没有 HTTPS 证书,Web 服务器和浏览器之间的通信未加密。
- 列表:未加密的通信
- 列表:请求服务证书的 certmonger
- 列表:发布服务证书的 IdM CA
- 列表:应用服务证书的 certmonger
- 列表:当旧的证书接近过期时,请求新证书的 certmonger
25.4. 查看由 certmonger 跟踪的证书请求的详情
- 要点:certmonger 服务 监控证书请求。成功签署证书请求后,会生成证书。Certmonger 管理证书请求,包括生成的证书。按照以下流程查看由 certmonger 管理的特定证书请求的详情。
- 要点:流程
- 列表:如果您知道如何指定证书请求,请只列出该特定证书请求的详细信息。例如,您可以指定: 请求 ID 证书的位置 证书 nickname 例如,要查看请求 ID 为 20190408143846 的证书详情,请使用 -v 选项查看您的证书请求失败时的所有错误详情: # getcert list -i 20190408143846 -v Number of certificates and requests being tracked: 16. Request ID '20190408143846': status: MONITORING stuck: no key pair storage: type=NSSDB,location=…
- 列表:请求 ID
- 列表:证书的位置
- 列表:证书 nickname 例如,要查看请求 ID 为 20190408143846 的证书详情,请使用 -v 选项查看您的证书请求失败时的所有错误详情: # getcert list -i 20190408143846 -v Number of certificates and requests being tracked: 16. Request ID '20190408143846': status: MONITORING stuck: no key pair storage: type=NSSDB,location='/etc/dirsrv/slapd-IDM-EXAMPLE-COM',nickname='Server-…
- 列表:证书位置;在上面的示例中,它是 /etc/dirsrv/slapd-IDM-EXAMPLE-COM 目录中的 NSS 数据库
- 列表:证书 nickname;上例中为 Server-Cert
- 命令/配置摘录:
# getcert list -i 20190408143846 -v
Number of certificates and requests being tracked: 16. Request ID '20190408143846': status: MONITORING stuck: no key pair storage: type=NSSDB,location='/etc/dirsrv/slapd-IDM-EXAMPLE-COM',nickname='Server-Cert',token='NSS Certificate DB',pinfile='/etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txt' certificate: type=NSSDB,location='/etc/dirsrv/slapd-IDM-EXAMPLE-COM',nickname='Server-Cert',token='NSS Certificate DB' CA: IPA issuer: CN=Certificate Authority,O=IDM.EXAMPLE.COM subject: CN=server.idm.example.com,O=IDM.EXAMPLE.COM expires: 2021-04-08 16:38:47 CEST dns: server.idm.example.com principal name: ldap/server.idm.example.com@IDM.EXAMP…25.5. 启动和停止证书跟踪
- 要点:使用 getcert stop-tracking 和 getcert start-tracking 命令来监控证书。这两个命令由 certmonger 服务提供。如果您已经从不同的 IdM 客户端上导入了身份管理(IdM)证书认证机构(CA)签发的证书,启用证书跟踪特别有用。启用证书跟踪也可以是以下置备方案的最后一步:
- 要点:流程
- 列表:在 IdM 服务器上,您可以为尚不存在的系统创建一个证书。
- 列表:您可以创建新系统。
- 列表:将新系统注册为 IdM 客户端。
- 列表:您可以将证书和密钥从 上的 IdM 服务器导入到 IdM 客户端。
- 列表:您开始使用 certmonger 来跟踪 证书,以确保其在过期时得到续订。
- 列表:使用 Request ID 20190408143846 禁用对证书的监控: # getcert stop-tracking -i 20190408143846 有关更多选项,请参阅您系统上的 getcert stop-tracking 手册页。
- 命令/配置摘录:
# getcert stop-tracking -i 20190408143846
# getcert start-tracking -c IPA -f /tmp/some_cert.crt -k /tmp/some_key.key- 注意:注意 这两个命令不操作证书。例如,getcert stop-tracking 不会删除证书或将其从 NSS 数据库或文件系统中删除,只是将证书从受监控的证书列表中删除。同样,getcert start-tracking 只会在受监控证书列表中添加证书。
25.6. 手动续订证书
- 要点:当证书即将到期时,certmonger 守护进程 会自动使用证书颁发机构(CA)帮助程序发出续订命令,获取更新的证书,并将上一个证书替换为新证书。
- 要点:您还可以使用 getcert resubmit 命令提前手动续订证书。这样,您可以通过添加主题备用名称(SAN)来更新证书包含的信息。
- 列表:使用 Request ID 20190408143846 续订证书: # getcert resubmit -i 20190408143846 要获取特定证书的 Request ID,请使用 getcert list 命令。详情请查看您系统上的 getcert list 手册页。
- 命令/配置摘录:
# getcert resubmit -i 2019040814384625.7. 使certmonger 恢复跟踪 CA 副本中的 IdM 证书
- 要点:您可以在跟踪证书中断后,使 certmonger 恢复对带有集成证书颁发机构的 IdM 部署至关重要的 Identity Management (IdM)系统证书的跟踪。中断可能是由在续订系统证书期间从 IdM 主机取消滚动,或者复制拓扑无法正常工作造成的。该程序还演示了如何使 证书恢复 跟踪 IdM 服务证书,即 HTTP、LDAP 和 PKINIT 证书。
- 要点:先决条件
- 列表:要恢复跟踪系统证书的主机是一个 IdM 服务器,它也是 IdM 证书颁发机构(CA),而不是 IdM CA 续订服务器。
- 列表:获取子系统 CA 证书的 PIN: # export NSSDB_PIN=$(sed -n 's/^internal=//p' /var/lib/pki/pki-tomcat/conf/password.conf)
- 列表:为 发布 CA、Audit、OSCP、Subsystem 和 Tomcat 服务器 证书添加跟踪: # getcert start-tracking -d /etc/pki/pki-tomcat/alias -n "caSigningCert cert-pki-ca" -c 'dogtag-ipa-ca-renew-agent' -P $NSSDB_PIN -B /usr/libexec/ipa/certmonger/stop_pkicad -C '/usr/libexec/ipa/certmonger/renew_ca_cert "caSigningCert cert-pki-ca"' -T caCACert # getcert…
- 列表:添加对剩余的 IdM 证书、HTTP、LDAP 、 IPA 续订代理 和 PKINIT 证书的 跟踪: # getcert start-tracking -f /var/lib/ipa/certs/httpd.crt -k /var/lib/ipa/private/httpd.key -p /var/lib/ipa/passwds/idm.example.com-443-RSA -c IPA -C /usr/libexec/ipa/certmonger/restart_httpd -T caIPAserviceCert # getcert start-tracking -d /etc/dirsrv/slapd-IDM-EXAMPL…
- 列表:重启证书 : # systemctl restart certmonger
- 列表:等待一分钟,直到 certmonger 启动后,然后检查新证书的状态: # getcert list
- 命令/配置摘录:
# export NSSDB_PIN=$(sed -n 's/^internal=//p' /var/lib/pki/pki-tomcat/conf/password.conf)
# getcert start-tracking -d /etc/pki/pki-tomcat/alias -n "caSigningCert cert-pki-ca" -c 'dogtag-ipa-ca-renew-agent' -P $NSSDB_PIN -B /usr/libexec/ipa/certmonger/stop_pkicad -C '/usr/libexec/ipa/certmonger/renew_ca_cert "caSigningCert cert-pki-ca"' -T caCACert25.8. 使用带有 certmonger 的 SCEP
- 要点:简单证书注册协议(SCEP)是您可以跨不同设备和操作系统使用的证书管理协议。如果您在环境中使用 SCEP 服务器作为外部证书颁发机构(CA),您可以使用 certmonger 获取身份管理(IdM)客户端的证书。
25.8.1. SCEP 概述
- 要点:简单证书注册协议(SCEP)是您可以跨不同设备和操作系统使用的证书管理协议。您可以使用 SCEP 服务器作为外部证书颁发机构(CA)。
- 要点:您可以配置一个身份管理(IdM)客户端,以通过 HTTP 直接从 CA SCEP 服务请求并检索证书。此过程由共享 secret 保护,该 secret 通常仅在有限时间内有效。
- 列表:SCEP URL:CA SCEP 接口的 URL。
- 列表:SCEP 共享的 secret:一个在 CA 和 SCEP 客户端之间共享的 challengePassword PIN,用于获取证书。
25.8.2. 通过 SCEP 请求一个 IdM CA 签名的证书
- 要点:以下示例将 SCEP_example SCEP CA 配置添加到 certmonger,并在 client.idm.example.com IdM 客户端上请求一个新证书。certmonger 支持 NSS 证书数据库格式和基于文件的(PEM)格式,如 OpenSSL。
- 要点:先决条件
- 列表:您知道 SCEP URL。
- 列表:您有 challengePassword PIN 共享 secret。
- 列表:将 CA 配置添加到 certmonger : [root@client.idm.example.com ~]# getcert add-scep-ca -c SCEP_example -u SCEP_URL -c: CA 配置的强制别名。稍后可以将相同的值用于其他 getcert 命令。 -u:服务器的 SCEP 接口的 URL。 重要 使用 HTTPS URL 时,还必须使用 -R 选项指定 SCEP 服务器 CA 证书的 PEM 格式的副本的位置。
- 列表:-c: CA 配置的强制别名。稍后可以将相同的值用于其他 getcert 命令。
- 列表:-u:服务器的 SCEP 接口的 URL。 重要 使用 HTTPS URL 时,还必须使用 -R 选项指定 SCEP 服务器 CA 证书的 PEM 格式的副本的位置。
- 列表:验证 CA 配置是否已成功添加: [root@client.idm.example.com ~]# getcert list-cas -c SCEP_example CA 'SCEP_example': is-default: no ca-type: EXTERNAL helper-location: /usr/libexec/certmonger/scep-submit -u http://SCEP_server_enrollment_interface_URL SCEP CA certificate thumbprint (MD5): A67C2D4B 771AC186 FCCA654A 5E55AAF7 SCEP …
- 命令/配置摘录:
[root@client.idm.example.com ~]# getcert add-scep-ca -c SCEP_example -u SCEP_URL
[root@client.idm.example.com ~]# getcert list-cas -c SCEP_example- 注意:重要 使用 HTTPS URL 时,还必须使用 -R 选项指定 SCEP 服务器 CA 证书的 PEM 格式的副本的位置。
25.8.3. 使用 certmonger 自动续订 AD SCEP 证书
- 要点:当 certmonger 发送 SCEP 证书续订请求时,此请求使用现有的证书私钥进行签名。但是,certmonger 发送的续订请求默认还包括用于最初获取证书的 challengePassword PIN。
- 要点:作为 SCEP 服务器工作的活动目录(AD)网络设备注册服务(NDES)服务器会自动拒绝包含最初 challengePassword PIN 的任何续订请求。因此,续订会失败。
- 列表:RHEL 服务器必须正在运行 RHEL 8.6 或更新版本。
- 列表:在 AD 服务器上打开 regedit。
- 列表:在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MSCEP 子键中,添加一个新的 32 位 REG_DWORD 条目 DisableRenewalSubjectNameMatch,并将其值设为 1。
- 列表:在运行 certmonger 的服务器上,打开 /etc/certmonger/certmonger.conf 文件,并添加以下部分: [scep] challenge_password_otp = yes
- 列表:重启 certmonger: # systemctl restart certmonger
- 命令/配置摘录:
[scep] challenge_password_otp = yes
# systemctl restart certmonger- 注意:注意 除了 AD ,SCEP 服务器也会拒绝包含 challengePassword 的请求。在这些情况下,您可能还需要以这种方式更改 certmonger 配置。
第 26 章 在 IdM 中部署和管理 ACME 服务
- 要点:自动证书管理环境(ACME)是用于自动标识符验证和证书颁发的协议。它的目标是通过缩短证书生命周期并避免证书生命周期管理中的手动过程来提高安全性。
- 要点:使用 RHEL 身份管理(IdM),管理员可从单个系统轻松地部署和管理拓扑范围的 ACME 服务。
26.1. IdM 中的 ACME 服务
- 要点:ACME 使用质询和响应身份验证机制来证明客户端能够控制标识符。在 ACME 中,标识符是通过解决挑战来来获得证书的所有权证明。在身份管理(IdM)中,ACAC 目前支持以下挑战:
- 要点:在 IdM 中,ACAC 服务使用 PKI ACME 响应器。ACME 子系统会自动部署在 IdM 部署中的每个 CA 服务器上,但它不会服务请求,直到管理员启用它。服务器使用名称 ipa-ca.DOMAIN 来发现。所有 IdM CA 服务器都使用这个 DNS 名称注册,因此请求使用 round-robin 负载均衡分发到它们。
- 列表:dns-01,客户端创建 DNS 记录来证明它对标识符有控制
- 列表:http-01,客户端提供 HTTP 资源以证明其对标识符有控制
- 列表:certbot 带有 http-01 和 dns-01 质询
- 列表:mod_md,其只支持 http-01 质询
- 列表:IdM 中的随机序列号
- 注意:注意 IdM 只支持启用了 Random Certificate Serial Numbers (RSNv3)的 ACME。
26.2. 在 IdM 中启用 ACME 服务
- 要点:默认情况下,部署了 ACME 服务,但已禁用。启用 ACME 服务可在整个 IdM 部署中的所有 IdM CA 服务器上启用它。这是通过复制在部署之间传播的。
- 要点:在本例中,您启用了 ACME ,并将其设置为在每个月的第一天的午夜自动删除过期的证书。
- 列表:IdM 部署中的服务器启用了 Random Certificate Serial Numbers(RSNv3)。
- 列表:在运行该流程的 IdM 服务器上您需要有 root 权限。
- 列表:在整个 IdM 部署中启用 ACME: # ipa-acme-manage enable The ipa-acme-manage command was successful
- 列表:将 ACME 设置为从 CA 中自动删除过期的证书: # ipa-acme-manage pruning --enable --cron "0 0 1 * *" 注意 过期的证书会在保留周期后被删除。默认情况下,这是过期后 30 天。
- 列表:要检查 ACME 服务是否已安装并启用,请使用 ipa-acme-manage status 命令: # ipa-acme-manage status ACME is enabled The ipa-acme-manage command was successful
- 命令/配置摘录:
# ipa-acme-manage enable
The ipa-acme-manage command was successful- 注意:注意 过期的证书会在保留周期后被删除。默认情况下,这是过期后 30 天。
26.3. 在 IdM 中禁用 ACME 服务
- 要点:禁止 ACME 服务在整个 IdM 部署中禁用它。这是通过复制在部署之间传播的。
- 要点:先决条件
- 列表:IdM 部署中的服务器启用了 Random Certificate Serial Numbers(RSNv3)。
- 列表:在运行该流程的 IdM 服务器上您需要有 root 权限。
- 列表:在整个 IdM 部署中禁用 ACME: # ipa-acme-manage disable The ipa-acme-manage command was successful
- 列表:可选:禁用自动删除过期的证书: # ipa-acme-manage pruning --disable
- 列表:要检查 ACME 服务是否已安装,但被禁用了,请使用 ipa-acme-manage status 命令: # ipa-acme-manage status ACME is disabled The ipa-acme-manage command was successful
- 命令/配置摘录:
# ipa-acme-manage disable
The ipa-acme-manage command was successful第 27 章 从 CA 请求证书,并使用 RHEL 系统角色创建自签名证书
- 要点:许多服务,如 Web 服务器,都使用 TLS 加密与客户端的连接。通过使用 certificate RHEL 系统角色,您可以在受管节点上自动生成私钥。此外,该角色还会配置 certmonger 服务,以从 CA 请求证书。
- 要点:出于测试目的,您可以使用 certificate 角色创建自签名证书,而不是从 CA 请求一个签名证书。
27.1. 使用 certificate RHEL 系统角色从 IdM CA 请求一个新证书
- 要点:通过使用 证书 RHEL 系统角色,您可以自动创建私钥,并让 certmonger 服务从 Red Hat Enterprise Linux 证书颁发机构(CA)中的身份管理(IdM)请求证书。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:受管节点是 IdM 域的成员,域使用集成了 IdM 的 CA。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Create certificates hosts: managed-node-01.example.com tasks: - name: Create a self-signed certificate ansible.builtin.include_role: name: redhat.rhel_system_roles.certificate vars: certificate_requests: - name: web-server ca: ipa dns: www.example.com p…
- 列表:如果将变量设置为 web-server,则角色会将私钥存储在 /etc/pki/tls/private/web-server.key 中,并将证书存储在 /etc/pki/tls/certs/web-server.crt 文件中。
- 命令/配置摘录:
--- - name: Create certificates hosts: managed-node-01.example.com tasks: - name: Create a self-signed certificate ansible.builtin.include_role: name: redhat.rhel_system_roles.certificate vars: certificate_requests: - name: web-server ca: ipa dns: www.example.com principal: HTTP/www.example.com@EXAMPLE.COM run_before: systemctl stop httpd.service run_after: systemctl start httpd.service
$ ansible-playbook --syntax-check ~/playbook.yml27.2. 使用 certificate RHEL 系统角色请求一个新的自签名证书
- 要点:如果需要用于测试环境的 TLS 证书,您可以使用自签名证书。通过使用 certificate RHEL 系统角色,您可以自动化创建私钥的过程,并让 certmonger 服务创建一个自签名证书。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Create certificates hosts: managed-node-01.example.com tasks: - name: Create a self-signed certificate ansible.builtin.include_role: name: redhat.rhel_system_roles.certificate vars: certificate_requests: - name: web-server ca: self-sign dns: test.example…
- 列表:如果将变量设置为 web-server,则角色会将私钥存储在 /etc/pki/tls/private/web-server.key 中,并将证书存储在 /etc/pki/tls/certs/web-server.crt 文件中。
- 列表:如果将变量设置为一个路径,如 /tmp/web-server,则角色会将私钥存储在 /tmp/web-server.key 中,并将证书存储在 /tmp/web-server.crt 文件中。 请注意,您使用的目录必须设置了 cert_t SELinux 上下文。您可以使用 selinux RHEL 系统角色管理 SELinux 上下文。
- 命令/配置摘录:
--- - name: Create certificates hosts: managed-node-01.example.com tasks: - name: Create a self-signed certificate ansible.builtin.include_role: name: redhat.rhel_system_roles.certificate vars: certificate_requests: - name: web-server ca: self-sign dns: test.example.com
$ ansible-playbook --syntax-check ~/playbook.yml第 28 章 将应用程序限制为只信任证书的子集
- 要点:如果您的 Identity Management(IdM)安装配置了集成证书系统(CS)证书颁发机构(CA),您可以创建轻量级子 CA。您创建的所有子 CA 都从属于证书系统的主 CA,即 ipa CA。
- 要点:在这种情况下,轻量 级子 CA 意味着为特定目的发布证书的子 CA。例如,轻量级子 CA 允许您配置服务,如虚拟专用网络(VPN)网关和 Web 浏览器,以仅接受 子 CA A 发布的证书。通过将其他服务配置为仅接受由 子 CA B 发布的证书,您可以防止它们接受 子 CA、主 CA( 即 ipa CA)和两者之间的任何中间子 CA 发布的证书。
- 列表:创建 IdM 子 CA
- 列表:从 IdM WebUI 下载子 CA 证书
- 列表:创建 CA ACL,指定正确组合用户、服务和 CA,以及使用的证书配置集
- 列表:从 IdM 子 CA 为运行在 IdM 客户端上的 web 服务请求证书
- 列表:设置单实例 Apache HTTP 服务器
- 列表:向 Apache HTTP 服务器添加 TLS 加密
28.1. 管理轻量级子 CA
- 要点:本节描述了如何管理轻量级从属证书颁发机构(sub-CA)。您创建的所有子 CA 都从属到证书系统的主 CA ,ipa CA。您还可以禁用和删除子 CA。
- 注意:注意 如果您删除了子 CA,则该子 CA 的吊销检查将不再工作。只有当没有其 notAfter 过期时间是将来的子 CA 发布的证书时,才删除子 CA。 只有当子 CA 发布的证书仍然未过期时,才应禁用该子CA。如果子 CA 发布的所有证书都已过期,您可以删除该子 CA。 您不能禁用或删除 IdM CA。
28.1.1. 从 IdM WebUI 创建子 CA
- 要点:您可以使用 IdM WebUI 来创建名为 webserver-ca 和 webclient-ca 的新子 CA。
- 要点:先决条件
- 列表:您已以管理员身份登录。
- 列表:如果 IdM CA 与 HSM 集成,系统会自动使用现有的 HSM 令牌来生成子 CA 密钥。这为私钥提供与嵌入式 CA 私钥相同的硬件级别安全性。轻量级子 CA 私钥在 HSM 上生成,使用 HSM 令牌名称作为前缀,如 mytoken:lwca。
- 列表:在 身份验证 菜单中,单击 Certificates。
- 列表:选择 证书授权 并单击 添加。
- 列表:输入 webserver-ca 子 CA 的名称。在 Subject DN 字段中输入 Subject DN,如 CN=WEBSERVER,O=IDM.EXAMPLE.COM。请注意,主题 DN 在 IdM CA 基础架构中必须是唯一的。
- 列表:输入 webclient-ca 子 CA 的名称。在 Subject DN 字段中输入 Subject DN CN=WEBCLIENT,O=IDM.EXAMPLE.COM。
- 命令/配置摘录:
[root@ipaserver ~]# ipa-certupdate
[root@ipaserver ~]# certutil -d /etc/pki/pki-tomcat/alias/ -L- 注意:重要 在创建子 CA 后忘记运行 ipa-certupdate 命令意味着,如果子 CA 证书过期,则子 CA 发布的最终用户证书将被视为无效,即使最终用户证书还没有过期。
- 注意:注意 新子 CA 证书自动传输到安装有证书系统实例的所有副本。
28.1.2. 从 IdM WebUI 删除子 CA
- 要点:通过 Web UI 删除停用的权威以清理拓扑。管理员必须首先在 CLI 中禁用子 CA,以确保系统在永久删除前正确处理撤销链。
- 要点:先决条件
- 列表:您已以管理员身份登录。
- 列表:您已在 IdM CLI 中禁用了子 CA。请参阅 从 IdM CLI 禁用子 CA
- 列表:在 IdM Web UI 中,打开 身份验证 选项卡,然后选择 证书 子选项卡。
- 列表:选择 证书颁发机构 。
- 列表:选择要删除的子 CA,然后单击" 删除 "。 图 28.1. 在 IdM Web UI 中删除子 CA
- 列表:单击 Delete 确认。
- 注意:注意 如果您删除了子 CA,则该子 CA 的吊销检查将不再工作。只有当没有其 notAfter 过期时间是将来的子 CA 发布的证书时,才删除子 CA。 只有当子 CA 发布的证书仍然未过期时,才应禁用该子CA。如果子 CA 发布的所有证书都已过期,您可以删除该子 CA。 您不能禁用或删除 IdM CA。
28.1.3. 从 IdM CLI 创建子 CA
- 要点:您可以使用 IdM CLI 创建名为 webserver-ca 和 webclient-ca 的新子 CA。
- 要点:先决条件
- 列表:您已以管理员身份登录到是 CA 服务器的 IdM 服务器。
- 列表:如果 IdM CA 与 HSM 集成,系统会自动使用现有的 HSM 令牌来生成子 CA 密钥。这为私钥提供与嵌入式 CA 私钥相同的硬件级别安全性。轻量级子 CA 私钥在 HSM 上生成,使用 HSM 令牌名称作为前缀,如 mytoken:lwca。
- 列表:输入 ipa ca-add 命令,再指定 webserver-ca 子 CA 的名称及其 Subject Distinguished Name(DN): [root@ipaserver ~]# ipa ca-add webserver-ca --subject="CN=WEBSERVER,O=IDM.EXAMPLE.COM" ------------------- Created CA "webserver-ca" ------------------- Name: webserver-ca Authority ID: ba83f324-5e50-4114-b109-acca05d6f1dc Subject DN: CN=W…
- 列表:创建 webclient-ca 子 CA 以向 Web 客户端发布证书: [root@ipaserver ~]# ipa ca-add webclient-ca --subject="CN=WEBCLIENT,O=IDM.EXAMPLE.COM" ------------------- Created CA "webclient-ca" ------------------- Name: webclient-ca Authority ID: 8a479f3a-0454-4a4d-8ade-fd3b5a54ab2e Subject DN: CN=WEBCLIENT,O=IDM.EXAMPLE.COM Issuer DN: C…
- 列表:运行 ipa-certupdate 命令,来为 webserver-ca 和 webclient-ca 子 CAs 证书创建 certmonger 追踪请求: [root@ipaserver ~]# ipa-certupdate 重要 如果您在创建子 CA 后忘记了运行 ipa-certupdate 命令,且子 CA 证书已过期,则该子 CA 发布的最终身份证书被视为无效,即使最终身份证书没有过期。
- 列表:验证新子 CA 的签名证书是否已添加到 IdM 数据库中: [root@ipaserver ~]# certutil -d /etc/pki/pki-tomcat/alias/ -L Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI caSigningCert cert-pki-ca CTu,Cu,Cu Server-Cert cert-pki-ca u,u,u auditSigningCert cert-pki-ca u,u,Pu caSigningCert cert-pki-ca ba83f324-5e50-4114-b109-acca05d6f1dc u,u,…
- 命令/配置摘录:
[root@ipaserver ~]# ipa ca-add webserver-ca --subject="CN=WEBSERVER,O=IDM.EXAMPLE.COM"
------------------- Created CA "webserver-ca" ------------------- Name: webserver-ca Authority ID: ba83f324-5e50-4114-b109-acca05d6f1dc Subject DN: CN=WEBSERVER,O=IDM.EXAMPLE.COM Issuer DN: CN=Certificate Authority,O=IDM.EXAMPLE.COM- 注意:重要 如果您在创建子 CA 后忘记了运行 ipa-certupdate 命令,且子 CA 证书已过期,则该子 CA 发布的最终身份证书被视为无效,即使最终身份证书没有过期。
- 注意:注意 新子 CA 证书自动传输到安装有证书系统实例的所有副本。
28.1.4. 从 IdM CLI 禁用子 CA
- 要点:您可以从 IdM CLI 禁用子 CA。如果子 CA 发布的证书还有未过期的,则您不应该删除它,但可以禁用它。如果您删除了子 CA,则对该子 CA 的吊销检查将不再工作。
- 要点:先决条件
- 列表:您已以管理员身份登录。
- 列表:运行 ipa ca-find 命令来确定您要删除的子 CA 的名称: [root@ipaserver ~]# ipa ca-find ------------- 3 CAs matched ------------- Name: ipa Description: IPA CA Authority ID: 5195deaf-3b61-4aab-b608-317aff38497c Subject DN: CN=Certificate Authority,O=IPA.TEST Issuer DN: CN=Certificate Authority,O=IPA.TEST Name: webclient-ca Authorit…
- 列表:运行 ipa ca-disable 命令来禁用您的子 CA,在本例中为 webserver-ca : # ipa ca-disable webserver-ca -------------------------- Disabled CA "webserver-ca" --------------------------
- 命令/配置摘录:
[root@ipaserver ~]# ipa ca-find
------------- 3 CAs matched ------------- Name: ipa Description: IPA CA Authority ID: 5195deaf-3b61-4aab-b608-317aff38497c Subject DN: CN=Certificate Authority,O=IPA.TEST Issuer DN: CN=Certificate Authority,O=IPA.TEST Name: webclient-ca Authority ID: 605a472c-9c6e-425e-b959-f1955209b092 Subject DN: CN=WEBCLIENT,O=IDM.EXAMPLE.COM Issuer DN: CN=Certificate Authority,O=IPA.TEST Name: webserver-ca Authority ID: 02d537f9-c178-4433-98ea-53aa92126fc3 Subject DN: CN=WEBSERVER,O=IDM.EXAMPLE.COM Issuer DN: CN=Certificate Authority,O=IPA.TEST ---------------------------- Number of entries returned 3 ----------------------------28.1.5. 从 IdM CLI 删除子 CA
- 要点:您可以从 IdM CLI 删除轻量级子 CA。
- 要点:先决条件
- 列表:您已以管理员身份登录。
- 列表:要显示子 CA 和 CA 的列表,请运行 ipa ca-find 命令: # ipa ca-find ------------- 3 CAs matched ------------- Name: ipa Description: IPA CA Authority ID: 5195deaf-3b61-4aab-b608-317aff38497c Subject DN: CN=Certificate Authority,O=IPA.TEST Issuer DN: CN=Certificate Authority,O=IPA.TEST Name: webclient-ca Authority ID: 605a472c-9…
- 列表:运行 ipa ca-disable 命令来禁用您的子 CA,在本例中为 webserver-ca : # ipa ca-disable webserver-ca -------------------------- Disabled CA "webserver-ca" --------------------------
- 列表:删除子 CA,在本例中为 webserver-ca : # ipa ca-del webserver-ca ------------------------- Deleted CA "webserver-ca" -------------------------
- 列表:运行 ipa ca-find 来显示 CA 和子 CA 的列表。webserver-ca 不再位于列表中。 # ipa ca-find ------------- 2 CAs matched ------------- Name: ipa Description: IPA CA Authority ID: 5195deaf-3b61-4aab-b608-317aff38497c Subject DN: CN=Certificate Authority,O=IPA.TEST Issuer DN: CN=Certificate Authority,O=IPA.TEST Name: webclient-ca Authori…
- 命令/配置摘录:
# ipa ca-find
------------- 3 CAs matched ------------- Name: ipa Description: IPA CA Authority ID: 5195deaf-3b61-4aab-b608-317aff38497c Subject DN: CN=Certificate Authority,O=IPA.TEST Issuer DN: CN=Certificate Authority,O=IPA.TEST Name: webclient-ca Authority ID: 605a472c-9c6e-425e-b959-f1955209b092 Subject DN: CN=WEBCLIENT,O=IDM.EXAMPLE.COM Issuer DN: CN=Certificate Authority,O=IPA.TEST Name: webserver-ca Authority ID: 02d537f9-c178-4433-98ea-53aa92126fc3 Subject DN: CN=WEBSERVER,O=IDM.EXAMPLE.COM Issuer DN: CN=Certificate Authority,O=IPA.TEST ---------------------------- Number of entries returned 3 ----------------------------- 注意:注意 如果您删除了子 CA,则该子 CA 的吊销检查将不再工作。只有当没有其 notAfter 过期时间是将来的子 CA 发布的证书时,才删除子 CA。 只有当子 CA 发布的证书仍然未过期时,才应禁用该子CA。如果子 CA 发布的所有证书都已过期,您可以删除该子 CA。 您不能禁用或删除 IdM CA。
28.2. 从 IdM WebUI 下载子 CA 证书
- 要点:从 IdM Web UI 检索公共签名证书以建立信任链。管理员必须在客户端系统上安装此文件,以确保应用程序识别和信任由特定子 CA 发布的证书。
- 要点:先决条件
- 列表:您已以管理员身份登录。
- 列表:在 Authentication 菜单中点击 Certificates > Certificates。 证书列表中的子 CA 证书
- 列表:单击子 CA 证书的序列号,以打开证书信息页面。
- 列表:在证书信息页面中,点击 Actions > Download。
- 列表:在 CLI 中,将子 CA 证书移到 /etc/pki/tls/private/ 目录中: # mv path/to/the/downloaded/certificate /etc/pki/tls/private/sub-ca.crt
- 命令/配置摘录:
# mv path/to/the/downloaded/certificate /etc/pki/tls/private/sub-ca.crt28.3. 为 Web 服务器和客户端身份验证创建 CA ACL
- 要点:证书颁发机构访问控制列表(CA ACL)规则定义哪些配置文件可用于向哪些用户、服务或主机发布证书。通过关联配置文件、主体和组,CA ACL 允许主体或组使用特定配置集请求证书。
- 要点:例如,利用 CA ACL,管理员可以将适用于从伦敦办事处工作的员工的配置文件的使用限制为属于伦敦办事处相关组的成员的用户。
28.3.1. 在 IdM CLI 中查看 CA ACL
- 要点:您可以查看 IdM 部署中提供的证书颁发机构访问控制列表(CA ACL)列表以及特定 CA ACL 的详情。
- 要点:流程
- 列表:要查看 IdM 环境中的所有 CA ACL,请输入 ipa caacl-find 命令: $ ipa caacl-find ----------------- 1 CA ACL matched ----------------- ACL name: hosts_services_caIPAserviceCert Enabled: TRUE
- 列表:要查看 CA ACL 的详细信息,请输入 ipa caacl-show 命令并指定 CA ACL 名称。例如,要查看 hosts_services_caIPAserviceCert CA ACL 的详情,请输入: $ ipa caacl-show hosts_services_caIPAserviceCert ACL name: hosts_services_caIPAserviceCert Enabled: TRUE Host category: all Service category: all CAs: ipa Profiles: caIPAserviceCert Users: admin
- 命令/配置摘录:
$ ipa caacl-find
----------------- 1 CA ACL matched ----------------- ACL name: hosts_services_caIPAserviceCert Enabled: TRUE28.3.2. 使用 webserver-ca 发布的证书,为认证 Web 客户端的 Web 服务器创建 CA ACL
- 要点:您可以创建一个 CA ACL,在为 HTTP/my_company.idm.example.com@IDM.EXAMPLE.COM 服务请求证书时,创建一个需要系统管理员使用 webserver-ca 子 CA 和 caIPAserviceCert 配置集的 CA ACL。如果用户从其他子 CA 或不同配置集请求证书,则请求会失败。唯一的例外是在启用了另一个匹配的 CA ACL 时。要查看可用的 CA ACL,请参阅 在 IdM CLI 中查看 CA ACL。
- 要点:先决条件
- 列表:HTTP/my_company.idm.example.com@IDM.EXAMPLE.COM 服务是 IdM 的一部分。
- 列表:您已以管理员身份登录。
- 列表:使用 ipa caacl 命令创建 CA ACL,并指定其名称: $ ipa caacl-add TLS_web_server_authentication -------------------------------------------- Added CA ACL "TLS_web_server_authentication" -------------------------------------------- ACL name: TLS_web_server_authentication Enabled: TRUE
- 列表:使用 ipa caacl-mod 命令修改 CA ACL 以指定 CA ACL 的说明: $ ipa caacl-mod TLS_web_server_authentication --desc="CAACL for web servers authenticating to web clients using certificates issued by webserver-ca" ----------------------------------------------- Modified CA ACL "TLS_web_server_authentication" -----------------------------…
- 列表:将 webserver-ca 子 CA 添加到 CA ACL 中: $ ipa caacl-add-ca TLS_web_server_authentication --ca=webserver-ca ACL name: TLS_web_server_authentication Description: CAACL for web servers authenticating to web clients using certificates issued by webserver-ca Enabled: TRUE CAs: webserver-ca ------------------------- Number of…
- 列表:使用 ipa caacl-add-service 指定主体可以请求证书的服务: $ ipa caacl-add-service TLS_web_server_authentication --service=HTTP/my_company.idm.example.com@IDM.EXAMPLE.COM ACL name: TLS_web_server_authentication Description: CAACL for web servers authenticating to web clients using certificates issued by webserver-ca Enabled: TRUE CA…
- 命令/配置摘录:
$ ipa caacl-add TLS_web_server_authentication
-------------------------------------------- Added CA ACL "TLS_web_server_authentication" -------------------------------------------- ACL name: TLS_web_server_authentication Enabled: TRUE- 注意:注意 CA ACL 的重点是指定允许哪些 CA 和配置文件组合用于来自特定主体或组的请求。CA ACL 不会影响证书验证或信任。它们不会影响签发的证书的使用方式。
28.3.3. 为用户 Web 浏览器创建 CA ACL,使用 webclient-ca 发布的证书向 Web 服务器进行身份验证
- 要点:您可以创建一个 CA ACL,要求系统管理员在请求证书时使用 webclient-ca 子 CA 和 IECUserRoles 配置集。如果用户从其他子 CA 或不同配置集请求证书,则请求会失败。唯一的例外是在启用了另一个匹配的 CA ACL 时。要查看可用的 CA ACL,请参阅 在 IdM CLI 中查看 CA ACL。
- 要点:先决条件
- 列表:您已以管理员身份登录。
- 列表:使用 ipa caacl 命令创建 CA ACL 并指定其名称: $ ipa caacl-add TLS_web_client_authentication -------------------------------------------- Added CA ACL "TLS_web_client_authentication" -------------------------------------------- ACL name: TLS_web_client_authentication Enabled: TRUE
- 列表:使用 ipa caacl-mod 命令修改 CA ACL 以指定 CA ACL 的说明: $ ipa caacl-mod TLS_web_client_authentication --desc="CAACL for user web browsers authenticating to web servers using certificates issued by webclient-ca" ----------------------------------------------- Modified CA ACL "TLS_web_client_authentication" -----------------------…
- 列表:将 webclient-ca 子 CA 添加到 CA ACL 中: $ ipa caacl-add-ca TLS_web_client_authentication --ca=webclient-ca ACL name: TLS_web_client_authentication Description: CAACL for user web browsers authenticating to web servers using certificates issued by webclient-ca Enabled: TRUE CAs: webclient-ca ------------------------- Num…
- 列表:使用 ipa caacl-add-profile 命令为请求的证书指定证书配置集: $ ipa caacl-add-profile TLS_web_client_authentication --certprofiles=IECUserRoles ACL name: TLS_web_client_authentication Description: CAACL for user web browsers authenticating to web servers using certificates issued by webclient-ca Enabled: TRUE CAs: webclient-ca Profi…
- 列表:使用 ipa caacl-mod 命令修改 CA ACL,以指定 CA ACL 适用于所有 IdM 用户: $ ipa caacl-mod TLS_web_client_authentication --usercat=all ----------------------------------------------- Modified CA ACL "TLS_web_client_authentication" ----------------------------------------------- ACL name: TLS_web_client_authentication Description: CAACL …
- 命令/配置摘录:
$ ipa caacl-add TLS_web_client_authentication
-------------------------------------------- Added CA ACL "TLS_web_client_authentication" -------------------------------------------- ACL name: TLS_web_client_authentication Enabled: TRUE- 注意:注意 CA ACL 的重点是指定允许哪些 CA 和配置文件组合用于来自特定主体或组的请求。CA ACL 不会影响证书验证或信任。它们不会影响签发的证书的使用方式。
28.4. 使用 certmonger ,从 IdM 子 CA 获取服务的证书
- 要点:使用 certmonger 服务从 webserver-ca 子 CA 获取 TLS 证书,以保护 Web 服务通信并限制浏览器信任。
- 要点:为确保浏览器和在 IdM 客户端上运行的 Web 服务之间的通信安全且加密,请使用 TLS 证书。如果要将 Web 浏览器限制为信任 webserver-ca 子 CA 发布但没有其它 IdM 子 CA 发布的证书,请从 webserver-ca 子 CA 获取 Web 服务的 TLS 证书。
- 列表:Web 服务器已注册为 IdM 客户端。
- 列表:您有正在运行的 IdM 客户端的 root 访问权限。
- 列表:请求证书的服务不必在 IdM 中预先存在。
- 列表:在运行 HTTP 服务的 my_company.idm.example.com IdM 客户端中,请求与 HTTP/my_company.idm.example.com@IDM.EXAMPLE.COM 主体对应的服务的证书,并指定: 证书将存储在本地 /etc/pki/tls/certs/httpd.pem 文件中 私钥存储在本地 /etc/pki/tls/private/httpd.key 文件中 The webserver-ca 子 CA 将作为发行证书颁发机构 将 SubjectAltName 的 extensionRequest 添加到签名请求中,其 DNS 名称为 my_company.idm.example.com :…
- 列表:证书将存储在本地 /etc/pki/tls/certs/httpd.pem 文件中
- 列表:私钥存储在本地 /etc/pki/tls/private/httpd.key 文件中
- 命令/配置摘录:
# ipa-getcert request -K HTTP/my_company.idm.example.com -k /etc/pki/tls/private/httpd.key -f /etc/pki/tls/certs/httpd.pem -g 2048 -D my_company.idm.example.com -X webserver-ca -C "systemctl restart httpd"
New signing request "20190604065735" added.28.5. 配置单实例 Apache HTTP 服务器
- 要点:要通过您的 Web 服务器分发静态内容,请将 Apache HTTP 服务器配置为分发这些内容。
- 要点:默认情况下,Apache HTTP 服务器为与服务器关联的所有域提供相同的内容。如果要为不同的域提供不同的内容,请配置基于名称的虚拟主机。详情请参阅 配置基于 Apache 名称的虚拟主机。
- 列表:在配置传输层安全(TLS)协议之前,您已经创建了防火墙规则以启用基本的 Web 服务连接。
- 列表:安装 httpd 软件包: # dnf install httpd
- 列表:如果使用 firewalld,请在本地防火墙中打开 TCP 端口 80 : # firewall-cmd --permanent --add-port=80/tcp # firewall-cmd --reload
- 列表:启用并启动 httpd 服务: # systemctl enable --now httpd
- 列表:可选:将 HTML 文件添加到 /var/www/html/ 目录中。 注意 在 向/var/www/html/ 添加内容时,在httpd默认运行的情况下,文件和目录必须可被用户读取。内容所有者可以是 root 用户和 root 用户组,也可以是管理员选择的其他用户或组。如果内容所有者是 root 用户和 root 用户组,则文件必须可被其他用户读取。所有文件和目录都必须具有 httpd_sys_content_t SELinux 上下文,该上下文默认适用于 /var/www 目录中的所有内容。
- 列表:在 http://server_IP_or_host_name/ 处连接至 Web 浏览器。 如果 /var/www/html/ 目录为空,或者不包含 index.html或index.htm文件,则 Apache 会显示 Red Hat Enterprise Linux 测试页面。如果 /var/www/html/ 包含具有不同名称的 HTML 文件,您可以通过输入该文件的 URL 来加载它们,如 http://server_IP_or_host_name/example.html。 详情请查看您系统的 httpd.service (8) 手册页。
- 命令/配置摘录:
# dnf install httpd
# firewall-cmd --permanent --add-port=80/tcp- 注意:注意 在 向/var/www/html/ 添加内容时,在httpd默认运行的情况下,文件和目录必须可被用户读取。内容所有者可以是 root 用户和 root 用户组,也可以是管理员选择的其他用户或组。如果内容所有者是 root 用户和 root 用户组,则文件必须可被其他用户读取。所有文件和目录都必须具有 httpd_sys_content_t SELinux 上下文,该上下文默认适用于 /var/www 目录中的所有内容。
28.6. 在 Apache HTTP 服务器中添加 TLS 加密
- 要点:您可以通过安装 mod_ssl 来保护 Web 流量。将虚拟主机配置为使用 IdM 发布的私钥和证书,以使用子 CA 凭据为域启用加密 HTTPS 连接。
- 要点:先决条件
- 列表:Apache HTTP 服务器已安装并运行。
- 列表:私钥存储在 /etc/pki/tls/private/example.com.key 文件中。 有关创建私钥和证书签名请求(CSR)的详细信息,以及如何从证书颁发机构(CA)请求证书,请参阅您的 CA 文档。
- 列表:TLS 证书存储在 /etc/pki/tls/certs/example.com.crt 文件中。如果您使用不同的路径,请按照流程的对应步骤操作。
- 列表:CA 证书存储在 /etc/pki/tls/certs/ca.crt 文件中。如果您使用不同的路径,请按照流程的对应步骤操作。
- 列表:客户端和 Web 服务器会将服务器的主机名解析为 Web 服务器的 IP 地址。
- 列表:如果服务器运行 Red Hat Enterprise Linux 10 (RHEL)和联邦信息处理标准(FIPS)模式,客户端必须支持 扩展主 Secret (EMS)扩展或使用传输层安全(TLS) 1.3。没有 EMS 的 TLS 1.2 连接会失败。详情请查看红帽知识库解决方案 TLS 扩展"Extended Master Secret "。
- 命令/配置摘录:
# dnf install mod_ssl
ServerName example.com- 注意:警告 如果未授权用户访问私钥,撤销证书,创建一个新私钥,然后请求新证书。否则,TLS 连接就不再安全。
28.7. 在 Apache HTTP 服务器中设置支持的 TLS 协议版本
- 要点:红帽企业 Linux (RHEL) 上的 Apache HTTP 服务器具有系统级密码策略。此策略定义与浏览器兼容的安全默认值。例如,在 Apache HTTP Server 中,DEFAULT 策略定义仅启用 TLSv1.2 和 TLSv1.3 协议版本。
- 要点:您可以手动配置 Apache HTTP 服务器支持的 TLS 协议版本。在以下情况下,您需要在环境中只启用特定的 TLS 协议版本:
- 列表:如果您的环境要求客户端也可以使用弱 TLS1 (TLSv1.0)或TLS1.1协议。
- 列表:如果你想将 Apache 配置为只支持TLSv1.2或TLSv1.3协议。
- 列表:您已在服务器上启用了传输层安全(TLS)加密。
- 列表:如果红帽企业 Linux (RHEL) 服务器以联邦信息处理标准 (FIPS) 模式运行,则 FIPS 只允许符合密码标准的连接。在此模式下,客户端必须使用 TLS 1.3,或者,如果使用 TLS 1.2,则支持扩展主密钥 (EMS) 扩展。FIPS不允许在没有EMS支持的情况下进行TLS 1.2连接。如需更多信息,请参阅红帽知识库解决方案强制执行 TLS 扩展"Extended Master Secret" 。
- 列表:编辑 /etc/httpd/conf/httpd.conf 文件,并添加您要为其设置 TLSv1.3 协议版本的 < VirtualHost > 指令: SSLProtocol -All TLSv1.3
- 列表:重启 httpd 服务: # systemctl restart httpd
- 命令/配置摘录:
SSLProtocol -All TLSv1.3
# systemctl restart httpd28.8. 在 Apache HTTP 服务器上设置支持的密码
- 要点:默认情况下,Apache HTTP 服务器使用系统范围的加密策略来定义安全默认值,这些值也与最新的浏览器兼容。有关系统范围的加密策略允许的密码列表,请查看 /etc/crypto-policies/back-ends/openssl.config 文件。
- 要点:您可以手动配置 Apache HTTP 服务器支持的密码。
- 列表:您已在服务器上启用了传输层安全(TLS)加密。
- 列表:安装nmap软件包: # dnf install nmap
- 列表:编辑 /etc/httpd/conf/httpd.conf 文件,并将 SSLCipherSuite 参数添加到您要为其设置 TLS 密码的 <VirtualHost > 指令中: SSLCipherSuite "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!SHA1:!SHA256" 这个示例只启用 EECDH+AESGCM、EDH+AESGCM、AES256+EECDH 和 AES256+EDH 密码,并禁用所有使用 SHA1 和 SHA256 消息身份验证代码(MAC)的密码。
- 列表:重启 httpd 服务: # systemctl restart httpd
- 列表:显示支持的密码: # nmap --script ssl-enum-ciphers -p 443 example.com ... PORT STATE SERVICE 443/tcp open https | ssl-enum-ciphers: | TLSv1.2: | ciphers: | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (ecdh_x25519) - A | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A | TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) - A …
- 列表:安装 Apache HTTP 服务器手册
- 命令/配置摘录:
# dnf install nmap
SSLCipherSuite "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!SHA1:!SHA256"28.9. 配置 TLS 客户端证书身份验证
- 要点:要只允许经过身份验证的用户访问 web 服务器上的资源,请为 /var/www/html/Example/ 目录配置客户端证书身份验证。
- 要点:如果 Apache HTTP 服务器使用传输层安全(TLS) 1.3 协议,一些客户端需要额外的配置。例如,在 Mozilla Firefox 中,将 about:config 菜单中的 security.tls.enable_post_handshake_auth 参数设置为 true。
- 列表:您已在服务器上启用了 TLS 加密。
- 列表:编辑 /etc/httpd/conf/httpd.conf 文件来配置客户端身份验证: <Directory "/var/www/html/Example/"> SSLVerifyClient require </Directory> SSLVerifyClient 要求 将服务器配置为需要客户端证书,然后客户端才能访问 /var/www/html/Example/ 目录中的内容。
- 列表:重启 httpd 服务: # systemctl restart httpd
- 列表:在没有客户端身份验证的情况下访问 https://example.com/Example/ URL: $ curl \https://example.com/Example/ curl: (56) OpenSSL SSL_read: error:1409445C:SSL routines:ssl3_read_bytes:tlsv13 alert certificate required, errno 0 这个错误表示 web 服务器需要客户端证书验证。
- 列表:通过传递客户端私钥和证书以及 CA 证书,通过客户端身份验证访问相同的 URL: $ curl --cacert ca.crt --key client.key --cert client.crt https://example.com/Example/ 如果请求成功,curl 工具会显示存储在 /var/www/html/Example/ 目录中的 index.html 文件。
- 命令/配置摘录:
<Directory "/var/www/html/Example/"> SSLVerifyClient require </Directory>
# systemctl restart httpd28.10. 从 IdM 子 CA 请求新的用户证书,并将其导出到客户端
- 要点:作为身份管理(IdM)管理员,您可以配置在 IdM 客户端上运行的 Web 服务器,以请求使用 Web 浏览器访问服务器的用户对特定 IdM 子 CA 发布的证书进行身份验证。按照以下流程,从特定的 IdM 子 CA 请求用户证书,并将证书和对应的私钥导出到用户希望使用 Web 浏览器访问 Web 服务器的主机上。之后,将证书和私钥导入到浏览器。
- 要点:流程
- 列表:可选:创建一个新目录,如 ~/certdb/,并使其成为一个临时证书数据库。当系统提示时,创建一个 NSS 证书数据库密码来加密后续步骤中生成的证书的密钥: # mkdir ~/certdb/ # certutil -N -d ~/certdb/ Enter a password which will be used to encrypt your keys. The password should be at least 8 characters long, and should contain at least one non-alphabetic character. Enter new password: Re-enter…
- 列表:创建证书签名请求(CSR),并将输出重定向到文件。例如,要为 IDM.EXAMPLE.COM 域中的 idm_user 用户创建一个名称为 certificate_request.csr 的 4096 位 CSR,请将证书私钥的昵称设为 idm_user 以便于查找,并将主题设为 CN=idm_user,O=IDM.EXAMPLE.COM : # certutil -R -d ~/certdb/ -a -g 4096 -n idm_user -s "CN=idm_user,O=IDM.EXAMPLE.COM" > certificate_request.csr
- 列表:提示时,输入与您在使用 certutil 创建临时数据库时输入的相同的密码。然后继续随机输入,直到被告知停止: Enter Password or Pin for "NSS Certificate DB": A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard un…
- 列表:将证书请求文件提交到服务器。指定要与新发布的证书关联的 Kerberos 主体、存储证书的输出文件,以及可选的证书配置集。指定您要签发证书的 IdM 子 CA。例如,要为 idm_user@IDM.EXAMPLE.COM 主体从 webclient-ca 获取 IECUserRoles 配置集的证书(这个配置集带有添加了用户角色扩展),并将证书保存到 ~/idm_user.pem 文件中: # ipa cert-request certificate_request.csr --principal=idm_user@IDM.EXAMPLE.COM --profile-id=IECUserRoles --ca=webclient-c…
- 列表:将证书添加到 NSS 数据库。使用 -n 选项设置与之前创建 CSR 时使用的相同的昵称,以便证书与 NSS 数据库中的私钥匹配。-t 选项设置信任级别。详情请查看 certutil(1)man page。-i 选项指定输入证书文件。例如,要将带有在 ~/idm_user.pem 文件中定义的 idm_user 别名的证书添加到 ~/certdb/ 数据库的 NSS数据库: # certutil -A -d ~/certdb/ -n idm_user -t "P,," -i ~/idm_user.pem
- 列表:验证 NSS 数据库中的密钥是否没有将 (orphan) 显示为其昵称。例如,要验证存储在 ~/certdb/ 数据库中的证书不是孤立的: # certutil -K -d ~/certdb/ < 0> rsa 5ad14d41463b87a095b1896cf0068ccc467df395 NSS Certificate DB:idm_user
- 命令/配置摘录:
# mkdir ~/certdb/
# certutil -N -d ~/certdb/ Enter a password which will be used to encrypt your keys. The password should be at least 8 characters long, and should contain at least one non-alphabetic character. Enter new password: Re-enter password:第 29 章 快速使特定一组相关证书无效
- 要点:通过从专用轻量级子 CA 发出证书来隔离证书。如果应用程序使用 OCSP 验证状态,则立即撤销子 CA 会导致所有下游凭证无效。禁用子 CA 会停止新的颁发,同时保留密钥以签署撤销响应。
- 要点:作为系统管理员,您可以按照以下步骤快速使特定的相关证书组使:
- 列表:设计您的应用,以便他们仅信任由特定轻量身份管理(IdM)子 CA 发布的证书。之后,您只需撤销签发这些证书的 Identity Management(IdM)子 CA 的证书,即可使所有这些证书无效。
- 列表:为确保正在取消的 IdM 子 CA 发布的所有证书都立即无效,请配置依赖此类证书的应用程序使用 IdM OCSP 响应者。例如,若要将 Firefox 浏览器配置为使用 OCSP 响应器,请确保在 Firefox Preferences 中选中了 查询 OCSP 响应器服务器以确认证书复选框当前有效。 在 IdM 中,证书撤销列表(CRL)每四小时更新一次。要使 IdM 子 CA 发布的所有证书无效,请撤销 IdM 子 CA 证书。另外,禁用相关的 CA ACL,并考虑禁用 IdM 子 CA。禁用子 CA 可防止子 CA 发布新证书,但允许为之前发布的证书生成在线证书状态协议(OCSP)响应,因为子 CA 的签名密钥被保留。
- 注意:重要 如果您的环境中使用 OCSP,则不要删除子 CA。删除子 CA 会删除子 CA 的签名密钥,从而导致为该子 CA 发布的证书生成 OCSP 响应。 删除子 CA 时的唯一场景是希望创建一个具有相同主题区分名称(DN)但新的签名密钥的新子 CA,而不是禁用它。
29.1. 在 IdM CLI 中禁用 CA ACL
- 要点:当您要停用 IdM 服务或一组 IdM 服务时,请考虑禁用任何现有的相应 CA ACL。
- 要点:按照此流程禁用 TLS_web_server_authentication CA ACL,其限制 IdM 客户端上运行的 Web 服务器请求 webserver-ca IdM 子 CA 发布的证书,并禁用限制 IdM 用户请求 webclient-ca IdM 子 CA 发布的用户证书的 TLS_web_client_authentication CA ACL 。
- 列表:可选:要查看 IdM 环境中的所有 CA ACL,请输入 ipa caacl-find 命令: $ ipa caacl-find ----------------- 3 CA ACLs matched ----------------- ACL name: hosts_services_caIPAserviceCert Enabled: TRUE ACL name: TLS_web_server_authentication Enabled: TRUE ACL name: TLS_web_client_authentication Enabled: TRUE
- 列表:可选:要查看 CA ACL 的详情,请输入 ipa caacl-show 命令,并指定 CA ACL 名称: $ ipa caacl-show TLS_web_server_authentication ACL name: TLS_web_server_authentication Description: CAACL for web servers authenticating to web clients using certificates issued by webserver-ca Enabled: TRUE CAs: webserver-ca Profiles: caIPAserviceCert Servi…
- 列表:要禁用 CA ACL,输入 ipa caacl-disable 命令并指定 CA ACL 名称。 要禁用 TLS_web_server_authentication CA ACL,请输入: $ ipa caacl-disable TLS_web_server_authentication ------------------------------------------------- Disabled CA ACL "TLS_web_server_authentication" ------------------------------------------------- 要禁用 TLS_web_client_authent…
- 列表:要禁用 TLS_web_server_authentication CA ACL,请输入: $ ipa caacl-disable TLS_web_server_authentication ------------------------------------------------- Disabled CA ACL "TLS_web_server_authentication" -------------------------------------------------
- 列表:要禁用 TLS_web_client_authentication CA ACL,请输入: $ ipa caacl-disable TLS_web_client_authentication ------------------------------------------------- Disabled CA ACL "TLS_web_client_authentication" -------------------------------------------------
- 命令/配置摘录:
$ ipa caacl-find
----------------- 3 CA ACLs matched ----------------- ACL name: hosts_services_caIPAserviceCert Enabled: TRUE ACL name: TLS_web_server_authentication Enabled: TRUE ACL name: TLS_web_client_authentication Enabled: TRUE- 注意:重要 对于禁用 hosts_services_caIPAserviceCert CA ACL,请格外小心。禁用 hosts_services_caIPAserviceCert,没有另一个 CA ACL 允许 IdM 服务器使用带有 caIPAserviceCert 配置集的 ipa CA,这意味着 IdM HTTP 和 LDAP 证书的证书续订会失败。过期的 IdM HTTP 和 LDAP 证书最终将导致 IdM 系统失败。
29.2. 禁用 IdM 子 CA
- 要点:在撤销 IdM 子 CA 的 CA 证书以使由该子 CA 发布的所有证书无效后,如果您不再需要 IdM sub-CA,请考虑禁用它。您可以稍后重新启用子 CA。
- 要点:禁用子 CA 可防止子 CA 发布新证书,但允许为之前发布的证书生成在线证书状态协议(OCSP)响应,因为子 CA 的签名密钥被保留。
- 列表:以 IdM 管理员身份登录。
- 列表:输入 ipa ca-disable 命令并指定 sub-CA 的名称: $ ipa ca-disable webserver-CA -------------------- Disabled CA "webserver-CA" --------------------
- 列表:将应用程序限制为只信任证书的子集
- 列表:管理 IdM 中证书的有效性
- 列表:在 IdM CLI 中禁用 CA ACL
- 列表:禁用 IdM 子 CA
- 命令/配置摘录:
$ ipa ca-disable webserver-CA
-------------------- Disabled CA "webserver-CA" --------------------第 30 章 使用 IdM Healthcheck 验证证书
- 要点:您可以使用 Healthcheck 工具识别身份管理(IdM)服务器上由 certmonger 工具维护的证书问题。
30.1. IdM 证书健康检查测试
- 要点:Healthcheck 工具包括多个测试,用于验证身份管理(IdM)中 certmonger 维护的证书的状态。
- 要点:此测试套件检查证书过期、验证、信任和其他配置。Healthcheck 可以为同一底层问题报告多个错误。
- 列表:使用 certmonger 为服务获取 IdM 证书
- 命令/配置摘录:
openssl verify -verbose -show_chain -CAfile /etc/ipa/ca.crt [cert file]- 注意:注意 Certmonger 加载并维护自己的证书过期视图。此检查不会验证磁盘中的证书。
- 注意:注意 此测试会检查磁盘中的证书。如果证书缺失或不可读,健康检查会返回一个错误。
30.2. 使用 Healthcheck 工具处理证书
- 要点:您可以使用 Healthcheck 工具运行独立手动测试,以检查身份管理(IdM)服务器上的证书。
- 要点:先决条件
- 列表:您有 root 特权。
- 列表:要运行证书测试,请输入: # ipa-healthcheck --source=ipahealthcheck.ipa.certs --source=ipahealthcheck.ipa.certs 选项确保 IdM Healthcheck 仅执行 certmonger 证书测试。 成功测试会显示空括号: [] 失败的测试会显示以下输出: { "source": "ipahealthcheck.ipa.certs", "check": "IPACertfileExpirationCheck", "result": "ERROR", "kw": { "key": 1234, "dbdir": "/path/to/nssdb…
- 列表:--source=ipahealthcheck.ipa.certs 选项确保 IdM Healthcheck 仅执行 certmonger 证书测试。 成功测试会显示空括号: [] 失败的测试会显示以下输出: { "source": "ipahealthcheck.ipa.certs", "check": "IPACertfileExpirationCheck", "result": "ERROR", "kw": { "key": 1234, "dbdir": "/path/to/nssdb", "error": [error], "msg": "Unable to open NSS database '/path…
- 列表:IdM 中的 Healthcheck
- 命令/配置摘录:
# ipa-healthcheck --source=ipahealthcheck.ipa.certs
[]- 注意:注意 当尝试检查问题时,在所有 IdM 服务器上运行此 Healthcheck 测试套件。
第 31 章 使用 IdM Healthcheck 验证系统证书
- 要点:您可以使用 Healthcheck 工具识别身份管理(IdM)服务器上系统证书的问题。
31.1. 系统证书健康检查测试
- 要点:Healthcheck 工具包括几个验证系统或 Dogtag、证书的测试。
- 要点:您可以在 ipa-healthcheck --list-sources 命令的输出中的 ipahealthcheck.dogtag.ca 源下找到所有与证书相关的测试。
- 列表:auditSigningCert cert-pki-ca against ca.audit_signing.cert
- 列表:ocspSigningCert cert-pki-ca against ca.ocsp_signing.cert
- 列表:caSigningCert cert-pki-ca against ca.signing.cert
- 列表:subsystemCert cert-pki-ca against ca.subsystem.cert
- 列表:针对 ca.sslserver.cert 的 Server-Cert cert-pki-ca
- 列表:transportCert cert-pki-kra against ca.connector.KRA.transportCert
31.2. 使用 Healthcheck 进行系统证书
- 要点:您可以使用 Healthcheck 工具运行独立手动测试,以检查身份管理(IdM)服务器上的系统证书。
- 要点:流程
- 列表:要运行系统证书测试,请输入: # ipa-healthcheck --source=ipahealthcheck.dogtag.ca --source=ipahealthcheck.dogtag.ca 选项确保 Healthcheck 仅执行证书测试。 测试成功示例: { "source: ipahealthcheck.dogtag.ca", "check: DogtagCertsConfigCheck", "result: SUCCESS", "uuid: 9b366200-9ec8-4bd9-bb5e-9a280c803a9c", "when: 20191008135826Z", "duration: 0.2522…
- 列表:IdM 中的 Healthcheck
- 命令/配置摘录:
# ipa-healthcheck --source=ipahealthcheck.dogtag.ca
{ "source: ipahealthcheck.dogtag.ca", "check: DogtagCertsConfigCheck", "result: SUCCESS", "uuid: 9b366200-9ec8-4bd9-bb5e-9a280c803a9c", "when: 20191008135826Z", "duration: 0.252280", "kw:" { "key": "Server-Cert cert-pki-ca", "configfile": "/var/lib/pki/pki-tomcat/conf/ca/CS.cfg" } }- 注意:注意 当尝试查找问题时,在所有 IdM 服务器上运行证书测试。
第 32 章 了解 IdM 内部使用的证书
- 要点:您可以安装带有集成证书颁发机构(CA)或没有 CA 的身份管理(IdM)服务器。访问和管理 IdM 所需的证书会根据您的 CA 是否是集成的而进行不同的管理:
- 列表:集成的 CA:证书由 certmonger 自动创建和跟踪。certmonger 会自动续订证书,确保 IdM 服务持续有效。
- 列表:没有 CA:从第三方授权请求证书。在这种情况下,您需要监控其过期,并确保它们被续订,以确保 IdM 服务的持续有效。
32.1. 关于 IdM 中的内部证书
- 要点:Red Hat Enterprise Linux Identity Management (IdM)使用通过网络访问的许多服务,包括 LDAP 服务器和 HTTP 服务器。您可以使用 SSL/TLS 端口访问这些服务,其需要服务器证书。在安装 IdM 服务器的过程中需要 HTTP 和 LDAP 服务器证书。
- 要点:您可以根据您安装和配置 IdM 的方式以多种方式获取证书:
- 列表:带有可以由外部 CA 自签名或签名的集成的 CA : IdM 为 IdM 管理的用户、主机和服务发布所有证书,您不需要提供证书文件。 certmonger 自动监控证书的到期日期,并在需要时自动续订。
- 列表:带有外部签名的 CA:安装是一个多个步骤过程。 您需要使用 --external-ca 选项运行安装来生成 CSR。 将 CSR 提交给外部 CA,并以 PEM 文件或 Base64 编码证书的形式检索发布的证书和 CA 证书链。 再次运行 IdM 服务器安装,指定新发布的 CA 证书和 CA 链文件的位置和名称。您的 IdM 证书颁发机构被配置为外部 CA 的子 CA,这个子 CA 发布所需的 HTTP 和 LDAP 服务器证书。 certmonger 自动监控证书的到期日期,并在需要时自动续订。
- 列表:您需要使用 --external-ca 选项运行安装来生成 CSR。
- 列表:将 CSR 提交给外部 CA,并以 PEM 文件或 Base64 编码证书的形式检索发布的证书和 CA 证书链。
- 列表:再次运行 IdM 服务器安装,指定新发布的 CA 证书和 CA 链文件的位置和名称。您的 IdM 证书颁发机构被配置为外部 CA 的子 CA,这个子 CA 发布所需的 HTTP 和 LDAP 服务器证书。 certmonger 自动监控证书的到期日期,并在需要时自动续订。
- 列表:没有 CA:要求您从第三方认证机构请求以下证书: LDAP 服务器证书 Apache 服务器证书 PKINIT 证书 发布 LDAP 和 Apache 服务器证书的 CA 完整 CA 证书链 这些证书不会被 certmonger 跟踪,管理员负责在过期日期前续订证书。
32.2. IdM 内部的证书
- 要点:您的内部证书可以取决于您是如何安装 IdM 的,以及该安装中包含了哪些组件。根据该安装,您可能在您的系统上存储了以下证书。
- 要点:IdM CA 证书
- 注意:注意 您不必手动将外部 CA 证书添加到所有所需位置,因为在安装过程中会自动完成。但是,如果外部 CA 证书在以后更新了,您应该遵循 使用外部 CA 续订 IdM CA 续订服务器证书 中的步骤,以确保新证书被添加到需要它的每个地方。
- 表格样本(共 6 行):
- caSigningCert | 描述
- 文件系统位置 | /etc/pki/pki-tomcat/alias NSS 数据库中的 nickname=caSigningCert cert-pki-ca /etc/ipa/nssdb/ 和 /etc/ipa/ca.crt 中的 nickname=REALM.NAME IPA CA (从 LDAP 填充)
- LDAP 位置 | cn=REALM.NAME IPA CA,cn=certificates,cn=ipa,cn=etc,dc=realm,dc=name 和 ou=authorities,ou=ca,o=ipaca
- 发布者 | 由外部 CA 自签名或签名
32.3. IdM 内部证书续订过程
- 要点:默认情况下,certmonger 跟踪内部证书,触发续订并请求 IdM CA 发布新证书。
- 要点:如果您使用外部 CA,且您的内部证书由这个 CA 发布,则它们不会自动续订。在这种情况下,您应该监控证书的到期日期,以确保在证书过期前续订它们。续订过程会非常耗时,如果您没有仔细跟踪到期日期,您的证书将过期,某些服务将不再可用。
- 注意:警告 如果您的内部 Red Hat Enterprise Linux Identity Management (IdM)证书过期了,则 IdM 无法启动。
- 注意:注意 如果您在证书过期前使用 getcert 手动续订共享证书,则不会在其他副本上触发续订进程,您必须在其他副本上运行 getcert,来执行从 LDAP 下载更新的证书。
32.4. 其他资源
- 列表:使用 IdM CA 续订服务器
- 列表:IdM 离线时续订过期的系统证书
- 列表:如果 web 服务器和 LDAP 服务器证书还没有在 IdM 副本上过期,请替换它们
- 列表:如果 web 服务器和 LDAP 服务器证书已在整个 IdM 部署中过期,请替换它们
完整目录
- 发布证书、配置基于证书的身份验证和控制证书的有效性
- 对红帽文档提供反馈
- 第 1 章 身份管理中的公钥证书
- 1.1. IdM 中的证书颁发机构
- 1.2. 证书和 Kerberos 的比较
- 1.3. 使用证书验证 IdM 中用户的优缺点
- 第 2 章 使用 Ansible 管理 IdM 证书
- 2.1. 使用 Ansible 为 IdM 主机、服务和用户请求 SSL 证书
- 2.2. 使用 Ansible 为 IdM 主机、服务和用户撤销 SSL 证书
- 2.3. 使用 Ansible 为 IdM 用户、主机和服务恢复 SSL 证书
- 2.4. 使用 Ansible 为 IdM 用户、主机和服务检索 SSL 证书
- 2.5. 其他资源
- 第 3 章 使用集成的 IdM CA 为用户、主机和服务管理证书
- 3.1. 使用 IdM Web UI 为用户、主机或服务请求新证书
- 3.2. 使用 certutil 从 IdM CA 中为用户、主机或服务请求新证书
- 3.3. 使用 openssl 从 IdM CA 中为用户、主机或服务请求新证书
- 第 4 章 管理 IdM 用户、主机和服务的外部签名证书
- 4.1. 使用 IdM CLI ,将外部 CA 发布的证书添加到 IdM 用户、主机或服务
- 4.2. 使用 IdM Web UI 将外部 CA 发布的证书添加到 IdM 用户、主机或服务中
- 4.3. 使用 IdM CLI 从 IdM 用户、主机或服务帐户中删除外部 CA 发布的证书
- 4.4. 使用 IdM Web UI 从 IdM 用户、主机或服务帐户中删除外部 CA 发布的证书
- 4.5. 其他资源
- 第 5 章 转换证书格式以便和 IdM 一起工作
- 5.1. IdM 中的证书格式和编码
- 5.2. 在 IdM CLI 中转换外部证书,并将其加载到 IdM 用户帐户
- 5.3. 在 IdM Web UI 中转换外部证书以加载到 IdM 用户帐户
- 5.4. 准备将证书加载到浏览器
- 5.4.1. 将证书和私钥从 NSS 数据库导出到 PKCS #12 文件中
- 5.4.2. 将证书和私钥 PEM 文件合并到 PKCS #12 文件中
- 5.4.3. 其它资源
- 5.5. IdM 中与证书相关的命令和格式
- 第 6 章 在身份管理中创建和管理证书配置文件
- 6.1. 什么是证书配置文件?
- 6.2. 创建证书配置文件
- 6.3. 什么是 CA 访问控制列表?
- 6.4. 定义 CA ACL 以控制对证书配置文件的访问
- 6.5. 使用证书配置文件和 CA ACL 发布证书
- 6.6. 修改证书配置文件
- 6.7. 证书配置文件配置参数
- 第 7 章 管理 IdM 中证书的有效性
- 7.1. 管理 IdM CA 发布的现有证书的有效性
- 7.2. 管理 IdM CA 发布的未来证书的有效性
- 7.3. 在 IdM WebUI 中查看证书的过期日期
- 7.4. 在 CLI 中查看证书的到期日期
- 7.5. 吊销带有集成 IdM CA 的证书
- 7.5.1. 证书吊销原因
- 7.5.2. 使用 IdM Web UI 吊销带有集成 IdM CA 的证书
- 7.5.3. 使用 IdM CLI 吊销带有集成 IdM CA 的证书
- 7.5.4. 其他资源
- 7.6. 恢复带有集成 IdM CA 的证书
- 7.6.1. 使用 IdM WebUI 恢复带有集成 IdM CA 的证书
- 7.6.2. 使用 IdM CLI 恢复带有集成 IdM CA 的证书
- 第 8 章 为智能卡验证配置身份管理
- 8.1. 为智能卡验证配置 IdM 服务器
- 8.2. 使用 Ansible 为智能卡验证配置 IdM 服务器
- 8.3. 为智能卡验证配置 IdM 客户端
- 8.4. 使用 Ansible 为智能卡验证配置 IdM 客户端
- 8.5. 在 IdM Web UI 的用户条目中添加证书
- 8.6. 在 IdM CLI 中向用户条目中添加证书
- 8.7. 安装用来管理和使用智能卡的工具
- 8.8. 准备智能卡并将证书和密钥上传到智能卡
- 8.9. 使用智能卡登录到 IdM
- 8.10. 在 IdM 客户端中使用智能卡验证登录到 GDM
- 8.11. 在 su 命令中使用智能卡验证
- 第 9 章 为 IdM 中智能卡验证配置 ADCS 发布的证书
- 9.1. 先决条件
- 9.2. 信任配置和证书使用量所需的 Windows 服务器设置
- 9.3. 使用 sftp 从 Active Directory 复制证书
- 9.4. 使用 ADCS 证书为智能卡身份验证配置 IdM 服务器和客户端
- 9.5. 转换 PFX 文件
- 9.6. 安装用来管理和使用带有 ADCS 证书的智能卡的工具
- 9.7. 准备智能卡并将 ADCS 证书和密钥上传到智能卡
- 9.8. 在 sssd.conf 中配置超时
- 9.9. 为智能卡身份验证创建证书映射规则
- 第 10 章 身份管理中的证书映射规则
- 10.1. 用于配置身份验证的证书映射规则
- 10.2. IdM 中身份映射规则的组件
- 10.3. 从证书获取数据,以便在匹配规则中使用
- 10.4. 使用 Active Directory 域信任的证书映射规则
- 第 11 章 为存储在 IdM 中的用户配置证书映射
- 11.1. 先决条件
- 11.2. 在 IdM Web UI 中为存储在 IdM 中的用户添加证书映射规则
- 11.3. 在 IdM CLI 中为存储在 IdM 中的用户添加证书映射规则
- 11.4. 在 IdM 中为存储在 IdM Web UI 中的用户,将证书映射数据添加到用户条目中
- 11.5. 在 IdM CLI 中,为存储在 IdM 中的用户将证书映射数据添加到用户条目中
- 第 12 章 为 AD 用户条目包含整个证书的用户配置证书映射
- 12.1. 先决条件
- 12.2. 在 IdM Web UI 中,为其 AD 条目包含整个证书的用户添加证书映射规则
- 12.3. 在 IdM CLI 中,为其 AD 条目包含整个证书的用户添加证书映射规则
- 第 13 章 如果将 AD 配置为将用户帐户映射到用户帐户,则配置证书映射
- 13.1. 先决条件
- 13.2. 如果 AD 被配置为将用户证书映射到用户帐户,请在 IdM Web UI 中添加证书映射规则
- 13.3. 如果 AD 被配置为将用户证书映射到用户帐户,请在 IdM CLI 中添加证书映射规则
- 13.4. 检查 AD 端的证书映射数据
- 第 14 章 如果 AD 用户条目不包含证书或映射数据,则配置证书映射
- 14.1. 先决条件
- 14.2. 如果 AD 用户条目不包含证书或映射数据,请在 IdM Web UI 中添加证书映射规则
- 14.3. 如果 AD 用户条目不包含证书或映射数据,请在 IdM CLI 中添加证书映射规则
- 14.4. 在 IdM Web UI 中添加证书到 AD 用户的 ID 覆盖中
- 14.5. 在 IdM CLI 中在 AD 用户的 ID 覆盖中添加证书
- 第 15 章 将多个身份映射规则合并到一个规则中
- 第 16 章 使用存储在 IdM 客户端桌面的证书配置身份验证
- 16.1. 在 Web UI 中为证书验证配置身份管理服务器
- 16.2. 请求新的用户证书并将其导出到客户端
- 16.3. 确保证书和用户链接在一起
- 16.4. 配置浏览器以启用证书身份验证
- 16.5. 以 IdM 用户身份使用证书向身份管理 Web UI 进行身份验证
- 16.6. 配置 IdM 客户端以使用证书启用对 CLI 的身份验证
- 第 17 章 使用 IdM CA 续订服务器
- 17.1. IdM CA 续订服务器解释
- 17.2. 更改并重置 IdM CA 续订服务器
- 第 18 章 管理外部签名的 CA 证书
- 18.1. 在 IdM 中从外部签名的 CA 切换到自签名 CA
- 18.2. 在 IdM 中从自签名 CA 切换到外部签名的 CA
- 18.3. 使用外部 CA 续订 IdM CA 续订服务器证书
- 18.4. 更新 IdM 中的外部 CA 公共证书
- 18.5. 其它资源
- 第 19 章 IdM 离线时续订过期的系统证书
- 19.1. 先决条件
- 19.2. 在 CA 续订服务器上续订过期的系统证书
- 19.3. 续订后验证 IdM 域中的其他 IdM 服务器
- 第 20 章 如果 web 服务器和 LDAP 服务器证书还没有在 IdM 副本上过期,请替换它们
- 第 21 章 如果 web 服务器和 LDAP 服务器证书已在整个 IdM 部署中过期,请替换它们
- 第 22 章 从过期的系统证书中恢复
- 22.1. 从副本上过期的服务证书中恢复
- 22.2. 从续订服务器上的过期服务证书中恢复
- 22.3. 从过期的 IdM CA 证书中恢复
- 第 23 章 在 IdM CA 服务器中生成 CRL
- 23.1. 在 IdM 服务器中停止 CRL 生成
- 23.2. 在 IdM 副本服务器中启动 CRL 生成
- 23.3. 更改 CRL 更新间隔
- 第 24 章 停用执行 CA 续订服务器和 CRL 发布者角色的服务器
- 第 25 章 使用 certmonger 为服务获取 IdM 证书
- 25.1. Certmonger 概述
- 25.2. 使用 certmonger 为服务获取 IdM 证书
- 25.3. 请求服务证书的证书的通信流
- 25.4. 查看由 certmonger 跟踪的证书请求的详情
- 25.5. 启动和停止证书跟踪
- 25.6. 手动续订证书
- 25.7. 使certmonger 恢复跟踪 CA 副本中的 IdM 证书
- 25.8. 使用带有 certmonger 的 SCEP
- 25.8.1. SCEP 概述
- 25.8.2. 通过 SCEP 请求一个 IdM CA 签名的证书
- 25.8.3. 使用 certmonger 自动续订 AD SCEP 证书
- 第 26 章 在 IdM 中部署和管理 ACME 服务
- 26.1. IdM 中的 ACME 服务
- 26.2. 在 IdM 中启用 ACME 服务
- 26.3. 在 IdM 中禁用 ACME 服务
- 第 27 章 从 CA 请求证书,并使用 RHEL 系统角色创建自签名证书
- 27.1. 使用 certificate RHEL 系统角色从 IdM CA 请求一个新证书
- 27.2. 使用 certificate RHEL 系统角色请求一个新的自签名证书
- 第 28 章 将应用程序限制为只信任证书的子集
- 28.1. 管理轻量级子 CA
- 28.1.1. 从 IdM WebUI 创建子 CA
- 28.1.2. 从 IdM WebUI 删除子 CA
- 28.1.3. 从 IdM CLI 创建子 CA
- 28.1.4. 从 IdM CLI 禁用子 CA
- 28.1.5. 从 IdM CLI 删除子 CA
- 28.2. 从 IdM WebUI 下载子 CA 证书
- 28.3. 为 Web 服务器和客户端身份验证创建 CA ACL
- 28.3.1. 在 IdM CLI 中查看 CA ACL
- 28.3.2. 使用 webserver-ca 发布的证书,为认证 Web 客户端的 Web 服务器创建 CA ACL
- 28.3.3. 为用户 Web 浏览器创建 CA ACL,使用 webclient-ca 发布的证书向 Web 服务器进行身份验证
- 28.4. 使用 certmonger ,从 IdM 子 CA 获取服务的证书
- 28.5. 配置单实例 Apache HTTP 服务器
- 28.6. 在 Apache HTTP 服务器中添加 TLS 加密
- 28.7. 在 Apache HTTP 服务器中设置支持的 TLS 协议版本
- 28.8. 在 Apache HTTP 服务器上设置支持的密码
- 28.9. 配置 TLS 客户端证书身份验证
- 28.10. 从 IdM 子 CA 请求新的用户证书,并将其导出到客户端
- 28.1. 管理轻量级子 CA
- 第 29 章 快速使特定一组相关证书无效
- 29.1. 在 IdM CLI 中禁用 CA ACL
- 29.2. 禁用 IdM 子 CA
- 第 30 章 使用 IdM Healthcheck 验证证书
- 30.1. IdM 证书健康检查测试
- 30.2. 使用 Healthcheck 工具处理证书
- 第 31 章 使用 IdM Healthcheck 验证系统证书
- 31.1. 系统证书健康检查测试
- 31.2. 使用 Healthcheck 进行系统证书
- 第 32 章 了解 IdM 内部使用的证书
- 32.1. 关于 IdM 中的内部证书
- 32.2. IdM 内部的证书
- 32.3. IdM 内部证书续订过程
- 32.4. 其他资源
