18.8. 将 SCEP 与 certmonger 搭配使用
简单证书注册协议(SCEP)是一种证书管理协议,您可以在不同的设备和操作系统间使用。如果您在环境中使用 SCEP 服务器作为外部证书颁发机构(CA),您可以使用 certmonger 为身份管理(IdM)客户端获取证书。
18.8.1. SCEP 概述 复制链接链接已复制到粘贴板!
简单证书注册协议(SCEP)是一种证书管理协议,您可以在不同的设备和操作系统间使用。您可以使用 SCEP 服务器作为外部证书颁发机构(CA)。
您可以配置身份管理(IdM)客户端,以通过 HTTP 直接从 CA SCEP 服务请求和检索证书。此过程是由一个共享 secret 保护的,该 secret 通常只在有限时间内有效。
在客户端,SCEP 要求您提供以下组件:
- SCEP URL:CA SCEP 接口的 URL。
-
SCEP 共享 secret:一个在 CA 和 SCEP 客户端之间共享的
challengePasswordPIN,用于获取证书。
然后,客户端通过 SCEP 检索 CA 证书链,并将证书签名请求发送到 CA。
使用 certmonger 配置 SCEP 时,您可以创建一个指定签发的证书参数的新 CA 配置配置集。
18.8.2. 通过 SCEP 请求 IdM CA 签名证书 复制链接链接已复制到粘贴板!
以下示例为 certmonger 添加 SCEP_example SCEP CA 配置,并在 client.idm.example.com IdM 客户端上请求新证书。certmonger 支持 NSS 证书数据库格式和基于文件的(PEM)格式,如 OpenSSL。
先决条件
- 您知道 SCEP URL。
-
您有
challengePasswordPIN 共享 secret。
流程
将 CA 配置添加到
certmonger:[root@client.idm.example.com ~]# getcert add-scep-ca -c SCEP_example -u SCEP_URL
[root@client.idm.example.com ~]# getcert add-scep-ca -c SCEP_example -u SCEP_URLCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
-c: 为 CA 配置强制别名。之后,相同的值可以与其他getcert命令一起使用。 -U :服务器的 SCEP 接口的 URL。重要在使用 HTTPS URL 时,还必须使用
-R选项指定 SCEP 服务器 CA 证书的 PEM 格式副本的位置。
-
验证 CA 配置是否已成功添加:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果成功添加了配置,certmonger 会从远程 CA 检索 CA 链。然后,CA 链在命令输出中显示为 thumbprints。通过未加密的 HTTP 访问服务器时,请手动将 thumbprints 与 SCEP 服务器中显示的内容进行比较,以防止中间人攻击。
从 CA 请求证书:
如果您使用 NSS:
[root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -d /etc/pki/nssdb -n ExampleCert -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.com
[root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -d /etc/pki/nssdb -n ExampleCert -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用选项来指定证书请求的以下参数:
-
-i : 可选:任务的名称:请求的跟踪 ID。稍后可以将相同的值用于getcert list命令。 -
-c: 将请求提交到的 CA 配置。 -
-d:使用 NSS 数据库存储证书和密钥的目录。 -
-n: NSS 数据库中使用的证书的 Nickname。 -
-n: CSR 中的 Subject 名称。 -
-L: CA 发布的时间限制的一次性质询PasswordPIN。 -
-d :证书的主题备用名称,通常与主机名相同。
-
如果使用 OpenSSL:
[root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -f /etc/pki/tls/certs/server.crt -k /etc/pki/tls/private/private.key -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.com
[root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -f /etc/pki/tls/certs/server.crt -k /etc/pki/tls/private/private.key -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用选项来指定证书请求的以下参数:
-
-i : 可选:任务的名称:请求的跟踪 ID。稍后可以将相同的值用于getcert list命令。 -
-c: 将请求提交到的 CA 配置。 -
-f:证书的存储路径。 -
-k:密钥的存储路径。 -
-n: CSR 中的 Subject 名称。 -
-L: CA 发布的时间限制的一次性质询PasswordPIN。 -
-d :证书的主题备用名称,通常与主机名相同。
-
验证
验证证书是否已发布并正确存储在本地数据库中:
如果您使用的 NSS,请输入:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用 OpenSSL,请输入:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 状态 MONITORING 表示成功检索发布的证书。
getcert-list (1)手册页列出了其他可能的状态及其含义。
18.8.3. 使用 certmonger 自动更新 AD SCEP 证书 复制链接链接已复制到粘贴板!
当 certmonger 发送 SCEP 证书续订请求时,这个请求将使用现有的证书私钥签名。但是,certmonger 发送的续订请求还包括最初获取证书的 challengePassword PIN。
用作 SCEP 服务器的 Active Directory (AD)网络设备注册服务(NDES)服务器会自动拒绝包含原始 challengePassword PIN 的续订请求。因此,续订会失败。
要使 AD 的续订正常工作,您需要配置 certmonger 来发送签名的续订请求,而无需 challengePassword PIN。您还需要配置 AD 服务器,使其不会在续订时比较主题名称。
AD 以外的 SCEP 服务器可能会拒绝包含 challengePassword 的请求。在这些情况下,您可能还需要以这种方式更改 certmonger 配置。
先决条件
- RHEL 服务器必须运行 RHEL 8.6 或更高版本。
流程
-
在 AD 服务器上打开
regedit。 -
在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MSCEP 子键中,添加一个新的 32 位 REG_DWORD 条目
DisableRenewalSubjectNameMatch,并将其值设为1。 在运行
certmonger的服务器上,打开/etc/certmonger/certmonger.conf文件,并添加以下部分:[scep] challenge_password_otp = yes
[scep] challenge_password_otp = yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 certmonger:
systemctl restart certmonger
# systemctl restart certmongerCopy to Clipboard Copied! Toggle word wrap Toggle overflow