第 20 章 将应用程序限制为只信任证书的子集
如果您的 Identity Management(IdM)安装配置了集成证书系统(CS)证书颁发机构(CA),您可以创建轻量级子 CA。您创建的所有子 CA 都从属于证书系统的主 CA,即 ipa CA。
在这种情况下,轻量 级子 CA 意味着为特定目的发布证书的子 CA。例如,轻量级子 CA 允许您配置服务,如虚拟专用网络(VPN)网关和 Web 浏览器,以仅接受 子 CA A 发布的证书。通过将其他服务配置为仅接受由 子 CA B 发布的证书,您可以防止它们接受 子 CA、主 CA( 即 ipa
CA)和两者之间的任何中间子 CA 发布的证书。
如果您撤销了子 CA 的中间证书,则正确配置的客户端会自动将此子 CA 发布的所有证书视为无效。所有其他直接由 root CA、ipa 或其他 子 CA 发布的证书保持有效。
本节使用 Apache Web 服务器的示例来说明如何将应用限制为仅信任某一证书子集。完成本节以限制 IdM 客户端上运行的 Web 服务器使用 webserver-ca IdM 子 CA 发布的证书,并要求用户使用 web client-ca IdM 子 CA 发布的用户证书向 web 服务器进行身份验证。
您需要执行的步骤有:
- 创建 IdM 子 CA
- 从 IdM WebUI 下载子 CA 证书
- 创建 CA ACL,指定正确组合用户、服务和 CA,以及使用的证书配置集
- 从 IdM 子 CA 为运行在 IdM 客户端上的 web 服务请求证书
- 设置单实例 Apache HTTP 服务器
- 向 Apache HTTP 服务器添加 TLS 加密
- 在 Apache HTTP 服务器中设置支持的 TLS 协议版本
- 在 Apache HTTP 服务器上设置受支持的密码
- 在 web 服务器中配置 TLS 客户端证书身份验证
- 从 IdM 子 CA 为用户请求证书,并将证书导出到客户端
- 将用户证书导入到浏览器中,并将浏览器配置为信任子 CA 证书
20.1. 管理轻量级子 CA
这部分论述了如何管理轻量级从属证书颁发机构(sub-CA)。您创建的所有子 CA 都被从属到证书系统的主 CA( ipa
CA)。您还可以禁用和删除子 CA。
-
如果您删除子 CA,撤销对该子 CA 的调用检查将不再工作。只有当没有其
notAfter
过期时间是将来的子 CA 发布的证书时,才删除子 CA。 - 当仍存在由该子 CA 发布的证书时,您应该只禁用子 CA。如果子 CA 发布的所有证书都已过期,您可以删除该子 CA。
- 您无法禁用或删除 IdM CA。
有关管理子 CA 的详情,请参考:
20.1.1. 从 IdM WebUI 创建子 CA
按照以下流程,使用 IdM WebUI 创建名为 webserver-ca 和 webclient-ca 的新子 CA。
先决条件
- 确保您已获取管理员的凭据。
流程
- 在 身份验证 菜单中,单击 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。
在命令行界面中,运行
ipa-certupdate
命令为 webserver-ca 和 webclient-ca 子 CA 证书创建 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,u ocspSigningCert cert-pki-ca u,u,u subsystemCert cert-pki-ca u,u,u注意新子 CA 证书自动传输到安装有证书系统实例的所有副本。
20.1.2. 从 IdM WebUI 中删除子 CA
按照以下流程删除 IdM Web UI 中的轻量级子 CA。
-
如果您删除子 CA,撤销对该子 CA 的调用检查将不再工作。只有当没有其
notAfter
过期时间是将来的子 CA 发布的证书时,才删除子 CA。 - 当仍存在由该子 CA 发布的证书时,您应该只禁用子 CA。如果子 CA 发布的所有证书都已过期,您可以删除该子 CA。
- 您无法禁用或删除 IdM CA。
先决条件
- 确保您已获取管理员的凭据。
- 您已在 IdM CLI 中禁用 sub-CA。请参阅 通过 IdM CLI 禁用子CA
流程
-
在 IdM WebUI 中,打开
Authentication
选项卡,然后选择证书
子选项卡。 -
选择
证书颁发机构
(CA) 选择要删除的子 CA,
再单击删除
。图 20.1. 删除 IdM Web UI 中的子 CA
-
单击
Delete
以确认。
子 CA 已从 证书颁发机构
列表中删除。
20.1.3. 通过 IdM CLI 创建子 CA
按照以下流程,使用 IdM CLI 创建名为 webserver-ca 和 webclient-ca 的新子 CA。
先决条件
- 确保您已获取管理员的凭据。
- 确保您已登录到 CA 服务器的 IdM 服务器。
流程
输入
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=WEBSERVER,O=IDM.EXAMPLE.COM Issuer DN: CN=Certificate Authority,O=IDM.EXAMPLE.COM- 名称
- CA 的名称。
- 授权 ID
- 自动创建 CA 独立 ID。
- 主题 DN
- 主题区分名称(DN)。主题 DN 在 IdM CA 基础架构中必须是唯一的。
- 签发者 DN
- 签发子 CA 证书的父 CA。所有子 CA 都是作为 IdM root CA 的子 CA 创建的。
创建 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: CN=Certificate Authority,O=IDM.EXAMPLE.COM运行 ipa-certupdate 命令,为 webserver-ca 和 webclient-ca 子 CAs 证书创建 certmonger 跟踪请求:
[root@ipaserver ~]#
ipa-certupdate
重要如果您在创建子 CA 和子 CA 证书过期后忘记运行 ipa-certupdate 命令,则该子 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,u ocspSigningCert cert-pki-ca u,u,u subsystemCert cert-pki-ca u,u,u
注意新子 CA 证书自动传输到安装有证书系统实例的所有副本。
20.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 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 ----------------------------
运行
ipa ca-disable
命令以禁用您的子 CA,在这个示例中是webserver-ca
:ipa ca-disable webserver-ca -------------------------- Disabled CA "webserver-ca" --------------------------
20.1.5. 通过 IdM CLI 删除子 CA
按照以下流程,从 IdM CLI 删除轻量级子 CA。
-
如果您删除子 CA,撤销对该子 CA 的调用检查将不再工作。只有当没有其
notAfter
过期时间是将来的子 CA 发布的证书时,才删除子 CA。 - 当仍存在由该子 CA 发布的证书时,您应该只禁用子 CA。如果子 CA 发布的所有证书都已过期,您可以删除该子 CA。
- 您无法禁用或删除 IdM CA。
先决条件
- 确保您已获取管理员的凭据。
流程
要显示 sub-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-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 ----------------------------
运行
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
以显示 CAs 和 sub-CAs 列表。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 Authority ID: 605a472c-9c6e-425e-b959-f1955209b092 Subject DN: CN=WEBCLIENT,O=IDM.EXAMPLE.COM Issuer DN: CN=Certificate Authority,O=IPA.TEST ---------------------------- Number of entries returned 2 ----------------------------