第 5 章 转换证书格式以和 IdM 一起工作
这个用户故事描述了如何确保您作为 IdM 系统管理员使用正确的带有特定 IdM 命令的证书的格式。例如,这在以下情况下非常有用:
- 您将外部证书加载到用户配置文件中。详情请参阅 转换外部证书以加载到 IdM 用户帐户中 。
- 在为智能卡验证配置 IdM 服务器 或 为智能卡验证配置 IdM 客户端时 ,您在使用外部 CA 证书,以便用户可以使用其上带有由外部证书颁发机构签发的证书的智能卡向 IdM 进行身份验证。
- 您从 NSS 数据库将证书导出为 pkcs #12 格式,其中包括证书和私钥。详情请查看将 NSS 数据库中的证书和私钥导出到 PKCS #12 文件中。
5.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 #8
和 PKCS #12
证书。
编码格式 | 人类可读 | 常用的文件扩展名 | 接受编码格式的 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