22.11. 请求新的用户证书并将其导出到客户端
作为 Identity Management(IdM)管理员,您可以配置在 IdM 客户端上运行的 web 服务器,要求在使用 Web 浏览器访问服务器时使用特定 IdM 子 CA 发布的证书进行身份验证。按照以下流程,从特定的 IdM 子 CA 请求用户证书,并将主机上的证书和对应的私钥导出到用户希望使用 Web 浏览器访问 Web 服务器的主机上。之后,将证书和私钥导入到浏览器。
步骤
可选:创建一个新目录,如
~/certdb/,并使其作为临时证书数据库。当被要求时,创建一个 NSS 证书 DB 密码来加密在后续步骤中生成的证书的密钥:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建证书签名请求(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 -R -d ~/certdb/ -a -g 4096 -n idm_user -s "CN=idm_user,O=IDM.EXAMPLE.COM" > certificate_request.csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 提示时,输入您在使用
certutil创建临时数据库时输入相同的密码。然后继续键入随机输入,直到被告知停止:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将证书请求文件提交到服务器。指定要与新签发的证书关联的 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-ca --certificate-out=~/idm_user.pem
# ipa cert-request certificate_request.csr --principal=idm_user@IDM.EXAMPLE.COM --profile-id=IECUserRoles --ca=webclient-ca --certificate-out=~/idm_user.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将证书添加到 NSS 数据库。使用
-n选项设置您在之前创建 CSR 时使用的相同的 nickname,以便证书与 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
# certutil -A -d ~/certdb/ -n idm_user -t "P,," -i ~/idm_user.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 NSS 数据库中的密钥没有显示
(orphan)作为其 nickname。例如,验证存储在~/certdb/数据库中的证书是否为孤立:certutil -K -d ~/certdb/ < 0> rsa 5ad14d41463b87a095b1896cf0068ccc467df395 NSS Certificate DB:idm_user
# certutil -K -d ~/certdb/ < 0> rsa 5ad14d41463b87a095b1896cf0068ccc467df395 NSS Certificate DB:idm_userCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
pk12util命令将证书从 NSS 数据库导出到 PKCS12 格式。例如,要将来自/root/certdbNSS 数据库的带有idm_user别名的证书导出到~/idm_user.p12文件中:pk12util -d ~/certdb -o ~/idm_user.p12 -n idm_user Enter Password or Pin for "NSS Certificate DB": Enter password for PKCS12 file: Re-enter password: pk12util: PKCS12 EXPORT SUCCESSFUL
# pk12util -d ~/certdb -o ~/idm_user.p12 -n idm_user Enter Password or Pin for "NSS Certificate DB": Enter password for PKCS12 file: Re-enter password: pk12util: PKCS12 EXPORT SUCCESSFULCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将证书传递给您要启用
idm_user的证书身份验证的主机:scp ~/idm_user.p12 idm_user@client.idm.example.com:/home/idm_user/
# scp ~/idm_user.p12 idm_user@client.idm.example.com:/home/idm_user/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 因为安全原因,在证书传输到的主机上,将存储 .pkcs12 文件的目录的访问权限设置为 'other' 组不能访问它:
chmod o-rwx /home/idm_user/
# chmod o-rwx /home/idm_user/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为安全起见,请从服务器中删除临时 NSS 数据库和 .pkcs12 文件:
rm ~/certdb/ rm ~/idm_user.p12
# rm ~/certdb/ # rm ~/idm_user.p12Copy to Clipboard Copied! Toggle word wrap Toggle overflow