Red Hat Training

A Red Hat training course is available for RHEL 8

第 48 章 转换证书格式以使用 IdM

这个用户故事描述了如何确保您作为 IdM 系统管理员使用了带有特定 IdM 命令的证书的正确格式。例如,这在以下情况下非常有用:

48.1. IdM 中的证书格式和编码

包括 IdM 中智能卡验证在内的证书验证通过比较用户提供的证书或证书数据(保存在用户的 IdM 配置集)来进行。

系统配置

IdM 配置集中存储的内容仅是证书,而不是对应的私钥。在身份验证期间,用户还必须显示自己拥有相应的私钥。用户通过显示包含证书和私钥的 PKCS #12 文件或提供两个文件来执行此操作:一个包含证书,另一个包含私钥。

因此,将证书加载到用户配置集等进程只接受不包含私钥的证书文件。

同样,当系统管理员为您提供外部 CA 证书时,他将仅提供公共数据:不带私钥的证书。用于配置 IdM 服务器或 IdM 客户端进行智能卡验证的 ipa-advise 程序需要输入文件包含外部 CA 的证书,而不是私钥。

证书编码

有两种常见的证书编码:隐私增强型电子邮件(PEM)和区分的编码规则(DER)。base64 格式与 PEM 格式 几乎相同,但不包含 -----BEGIN CERTIFICATE-----/-----END CERTIFICATE----- 标头和页脚。

已使用 DER 编码的证书是二进制 X509 数字证书文件。作为二进制文件,证书不可读。DER 文件有时使用 .der 文件名扩展名,但带有 .crt.cer 文件名扩展名的文件有时也会包含 DER 证书。包含键的 DER 文件可以命名为 .key

使用 PEM Base64 编码的证书是一个人类可读的文件。该文件包含前缀为"-----BEGIN …"行的 ASCII(Base64)ARM 数据。PEM 文件有时使用 .pem 文件名扩展名,但带有 .crt.cer 文件名扩展名的文件有时也包含 PEM 证书。包含密钥的 PEM 文件可以命名为 .key

不同的 ipa 命令对其接受的证书类型有不同的限制。例如,ipa user-add-cert 命令只接受以 base64 格式编码的证书,但 ipa-server-certinstall 接受 PEM、DER、PKCS #7、PKCS #8PKCS #12 证书。

表 48.1. 证书编码

编码格式人类可读通用文件名扩展接受编码格式的 IdM 命令示例

PEM/base64

.pem, .crt, .cer

ipa user-add-cert, ipa-server-certinstall, …​

DER

.der, .crt, .cer

ipa-server-certinstall, …​

第 48.4 节 “IdM 中的与证书相关的命令和格式” 使用命令接受的证书格式列出更多 ipa 命令。

用户身份验证

在使用 Web UI 访问 IdM 时,用户证明自己通过将两者都存储在浏览器的数据库中,证明自己拥有与证书对应的私钥。

当使用 CLI 访问 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