Menu Close

第 4 章 转换证书格式以和 IdM 一起工作

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

4.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)保护的数据行。PEM 文件有时使用 .pem 文件扩展名,但带有 .crt.cer 文件扩展名的文件有时也包含 PEM 证书。包含密钥的 PEM 文件可以命名为 .key

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

表 4.1. 证书编码

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

PEM/base64

.pem, .crt, .cer

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

DER

.der, .crt, .cer

ipa-server-certinstall, …​

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