5.6. 执行批量颁发
在某些情况下,管理员可能需要同时提交和生成大量证书。证书系统提供的工具组合可用于向 CA 发送包含证书请求的文件。这个示例流程使用 PKCS10Client
命令来生成请求,并使用 sslget
命令将请求发送到 CA。
需要多个变量来识别 CA (主机、端口)以及用于身份验证的项目(代理证书和证书数据库和密码)。例如,要导出这些变量:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF > ${d}/pwd.txt password EOF
# cat << EOF > ${d}/pwd.txt password EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为带有 SSL 客户端证书的代理创建 NSS 数据库用于自动证书颁发:
pki -d ${d}-c ${p} client-init
# pki -d ${d}-c ${p} client-init
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从以前的 CA 安装中导入 admin PKCSburst 文件:
pk12util -i ~/ca_admin_cert.p12 -d ${d}
# pk12util -i ~/ca_admin_cert.p12 -d ${d}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导出 CA 证书:
pki-server cert-export ca_signing -i subca1 --cert-file ${d}/myca.crt
# pki-server cert-export ca_signing -i subca1 --cert-file ${d}/myca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导入证书:
pki -d ${d} -n "${nick}" -C ${d}/pwd.txt client-cert-import myCA --ca-cert ${d}/myca.crt
# pki -d ${d} -n "${nick}" -C ${d}/pwd.txt client-cert-import myCA --ca-cert ${d}/myca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 admin 证书信任链:
certutil -O -d ${d}/ -n "PKI Administrator for example.test"
# certutil -O -d ${d}/ -n "PKI Administrator for example.test" "myCA" [CN=CA Signing Certificate,OU=subca1,O=Sub CA1 Example Test] "PKI Administrator for example.test" [CN=PKI Administrator,E=caadmin@example.test,OU=subca1,O=Sub CA1 Example Test]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用标头和页脚创建单个 CSR 文件:
time for i in {1..10}; do /usr/bin/PKCS10Client -d ${d} -p ${p} -o ${f}.${i} -n "cn=testms${i}.example.test"; done
time for i in {1..10}; do /usr/bin/PKCS10Client -d ${d} -p ${p} -o ${f}.${i} -n "cn=testms${i}.example.test"; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 按顺序向 CA 提交这些 CSR 文件:
tail -f /var/log/pki/subca1/ca/transactions & time for i in {1..10}; do pki -U https://${cahost}:${caport}/ca -d ${d} -n "${nick}" -C ${d}/pwd.txt ca-cert-request-submit --profile caAgentServerCert --csr-file ${f}.${i} ; done
tail -f /var/log/pki/subca1/ca/transactions & time for i in {1..10}; do pki -U https://${cahost}:${caport}/ca -d ${d} -n "${nick}" -C ${d}/pwd.txt ca-cert-request-submit --profile caAgentServerCert --csr-file ${f}.${i} ; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.1. 在 Cisco 路由器上注册证书 复制链接链接已复制到粘贴板!
简单的证书注册协议(SCEP)由 Cisco 设计,是路由器用来为路由器注册证书的证书颁发机构(如 CA)的一种方式。
通常,路由器安装程序会在路由器中输入 CA 的 URL 和质询密码(也称为一次性 PIN)并发出命令以启动注册。然后,路由器通过 SCEP 与 CA 通信来生成、请求和检索证书。路由器也可以使用 SCEP 检查待处理请求的状态。
5.6.2. 启用 SCEP 注册 复制链接链接已复制到粘贴板!
出于安全考虑,在 CA 中默认禁用 SCEP 注册。要允许注册路由器,必须手动为 CA 启用 SCEP 注册。
停止 CA 服务器,以便您可以编辑配置文件。
pki-server stop instance_name
# pki-server stop instance_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开 CA 的
CS.cfg
文件。vim /var/lib/pki/ instance_name/ca/conf/CS.cfg
# vim /var/lib/pki/ instance_name/ca/conf/CS.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
ca.scep.enable
设置为 true。如果没有该参数,则使用 参数添加一行。ca.scep.enable=true
ca.scep.enable=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 CA 服务器。
pki-server start instance_name
pki-server start instance_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.3. 为 SCEP 配置安全设置 复制链接链接已复制到粘贴板!
通过几个不同的参数,管理员可以设置 SCEP 连接的特定安全要求,如不使用同一证书进行注册身份验证和常规证书注册,或者设置允许的加密算法以防止降级连接强度。这些参数在下表中列出。
参数 | 描述 |
---|---|
ca.scep.encryptionAlgorithm | 设置默认或首选加密算法。 |
ca.scep.allowedEncryptionAlgorithms | 设置以逗号分隔的加密算法列表。 |
ca.scep.hashAlgorithm | 设置默认或首选哈希算法。 |
ca.scep.allowedHashAlgorithms | 设置以逗号分隔的哈希算法列表。 |
ca.scep.nickname | 提供用于 SCEP 通信的证书 nickname。除非设置了此参数,否则默认为使用 CA 的密钥对和证书。 |
ca.scep.nonceSizeLimit | 设置 SCEP 请求允许的最大非ce 大小(以字节为单位)。默认值为 16 字节。 |
为 SCEP 注册设置连接的安全设置:
停止 CA 服务器,以便您可以编辑配置文件。
pki-server stop instance_name
# pki-server stop instance_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开 CA 的
CS.cfg
文件。vim /var/lib/pki/ instance_name/ca/conf/CS.cfg
# vim /var/lib/pki/ instance_name/ca/conf/CS.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置所需的安全参数,如上表中所示。如果该参数不存在,请将其添加到
CS.cfg
文件中。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 CA 服务器。
pki-server start instance_name
pki-server start instance_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.4. 为 SCEP 注册配置路由器 复制链接链接已复制到粘贴板!
不是所有版本的路由器 IOS 都有相关的加密功能。确保固件镜像具有认证机构互操作性功能。证书系统 SCEP 支持已在运行 IOS C2600 软件(C2600-JK9S-M)、版本 12.2 (40), RELEASE SOFTWARE (fc1)的 Cisco 2611 路由器上测试。
在路由器中注册 SCEP 证书前,请确保正确配置了路由器:
- 路由器必须使用 IP 地址、DNS 服务器和路由信息进行配置。
- 路由器的日期/时间必须正确。
- 必须配置路由器的主机名和 dnsname。
有关配置路由器硬件的说明,请参阅路由器文档。
5.6.5. 为路由器生成 SCEP 证书 复制链接链接已复制到粘贴板!
以下流程详细介绍了如何为路由器生成 SCEP 证书。
- 选择一个随机 PIN。
将 PIN 和路由器的 ID 添加到
flatfile.txt
文件中,以便路由器可以直接对 CA 进行身份验证。例如:vim /var/lib/pki/ instance_name/ca/conf/flatfile.txt
# vim /var/lib/pki/ instance_name/ca/conf/flatfile.txt UID:172.16.24.238 PWD:Uojs93wkfd0IS
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保在
PWD
行后插入空行。路由器的 IP 地址可以是 IPv4 地址或 IPv6 地址。
第 11.2.4 节 “配置平面文件身份验证” 中描述了使用平面文件身份验证。
登录到路由器的控制台。在本例中,路由器的名称为
scep
:scep>
scep>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用特权命令。
scep> enable
scep> enable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入配置模式。
scep# conf t
scep# conf t
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 root 开始,为证书链中的每个 CA 导入 CA 证书。例如,以下命令将链中的两个 CA 证书导入到路由器中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置 CA 身份,并输入用于访问 SCEP 注册配置文件的 URL。例如,对于 CA:
scep(config)# crypto ca identity CA scep(ca-identity)# enrollment url http://server.example.com:8080/ca/cgi-bin scep(ca-identity)# crl optional
scep(config)# crypto ca identity CA scep(ca-identity)# enrollment url http://server.example.com:8080/ca/cgi-bin scep(ca-identity)# crl optional
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 CA 的证书。
scep(config)# crypto ca authenticate CA Certificate has the following attributes: Fingerprint: 145E3825 31998BA7 F001EA9A B4001F57 % Do you accept this certificate? [yes/no]: yes
scep(config)# crypto ca authenticate CA Certificate has the following attributes: Fingerprint: 145E3825 31998BA7 F001EA9A B4001F57 % Do you accept this certificate? [yes/no]: yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成 RSA 密钥对。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最后,在路由器上生成证书。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 关闭配置模式。
scep(config)# exit
scep(config)# exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为确保路由器已正确注册,请列出路由器中存储的所有证书。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.6. 使用子 CA 复制链接链接已复制到粘贴板!
在路由器可以向 CA 进行身份验证之前,CA 的证书链中的每个 CA 证书都必须导入到路由器中,从 root 开始。例如,以下命令将链中的两个 CA 证书导入到路由器中:
如果 CA 证书没有设置 CRL 发行版点扩展,请通过将其设置为 optional
来关闭 CRL 要求:
scep(ca-root)# crl optional
scep(ca-root)# crl optional
之后,设置 CA 身份,如 第 5.6.5 节 “为路由器生成 SCEP 证书” 所述。
5.6.7. 重新注册路由器 复制链接链接已复制到粘贴板!
在使用新证书重新注册路由器之前,必须删除现有的配置。
删除(零化)现有密钥。
scep(config)# crypto key zeroize rsa % Keys to be removed are named scep.server.example.com. Do you really want to remove these keys? [yes/no]: yes
scep(config)# crypto key zeroize rsa % Keys to be removed are named scep.server.example.com. Do you really want to remove these keys? [yes/no]: yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 CA 身份。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.8. 启用调试 复制链接链接已复制到粘贴板!
路由器通过启用 debug 语句在 SCEP 操作过程中提供额外的调试。
5.6.9. 使用 SCEP 发布 ECC 证书 复制链接链接已复制到粘贴板!
默认情况下,ECC CA 不支持 SCEP out。但是,可以使用指定的 RSA 证书来处理以下两个区域的每个区域来解决这个问题:
- 加密/解密证书 - 指定具有加密/解密功能的 RSA 证书;(以下示例中的scepRSAcert)
- 签名证书 - 获取在客户端中使用的 RSA 证书以签名目的,而不是自签名;(以下示例中的signingCert 证书)
例如,对于 scepRSAcert
证书是 encrypt/decrypt 证书,signingCert
是签名证书:
sscep enroll -c ca.crt -e scepRSAcert.crt -k local.key -r local.csr -K sign.key -O sign.crt -E 3des -S sha256 -l cert.crt -u 'http://example.example.com:8080/ca/cgi-bin/pkiclient.exe'
sscep enroll -c ca.crt -e scepRSAcert.crt -k local.key -r local.csr -K sign.key -O sign.crt -E 3des -S sha256 -l cert.crt -u 'http://example.example.com:8080/ca/cgi-bin/pkiclient.exe'