目录

简介

先决条件

要求

使用的组件

背景信息

问题

解决方案

步骤1:找到.pfx证书

第二步：从.pfx文件中提取证书和密钥

第三步：在文本编辑器中验证证书

第四步：验证记事本中的私钥

第五步：拆分CA证书

第六步：合并PKCS12文件中的证书

步骤 7.在FMC中导入PKCS12文件

验证

简介

本文档介绍如何对由FMC管理的Firepower威胁防御设备上的证书颁发机构(CA)导入错误进行故障排除和修复。

先决条件

要求

Cisco 建议您了解以下主题：

- 公用密钥基础结构 (PKI)

- Firepower Management Center (FMC)

- Firepower Threat Defense (FTD)

- OpenSSL

使用的组件

本文档中的信息基于以下软件版本：

- MacOS x 10.14.6

- FMC 6.4

- OpenSSL

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

背景信息

注意：在FTD设备上，在生成证书签名请求(CSR)之前需要CA证书。

- 如果CSR在外部服务器（例如Windows Server或OpenSSL）中生成，则手动注册方法将失败，因为FTD不支持手动密钥注册。必须使用其他方法，例如PKCS12。

问题

在此特定场景中，FMC在CA证书状态（如图所示）中显示一个红十字，表示证书注册无法安装CA证书。如果证书未正确打包，或PKCS12文件不包含正确的颁发者证书（如图所示），则通常会出现此错误。

注意：在较新的FMC版本中，已解决此问题以匹配ASA行为，该行为会创建另一个信任点，其根CA包含在.pfx证书的信任链中。

解决方案

步骤1:找到.pfx证书

获取在FMC GUI中注册的pfx证书保存，然后在Mac终端(CLI)中查找该文件。

ls

第二步：从.pfx文件中提取证书和密钥

从pfx文件提取客户端证书（非CA证书）（需要用于生成.pfx文件的密码）。

openssl pkcs12 -in cert.pfx -clcerts -nokeys -out id.pem

身份导出

提取CA证书（而不是客户端证书）。

openssl pkcs12 -in cert.pfx -cacerts -nokeys -out certs.pem

缓存导出

从pfx文件中提取私钥（需要步骤2中的相同口令）。

openssl pkcs12 -in cert.pfx -nocerts -out key.pem

密钥导出

现在存在四个文件：cert.pfx（原始pfx捆绑包）、certs.pem（CA证书）、id.pem（客户端证书）和key.pem（私钥）。

导出后的ls

第三步：在文本编辑器中验证证书

使用文本编辑器（例如nano certs.pem）验证证书。

对于此特定场景，certs.pem仅包含子CA（颁发CA）。

从步骤5开始，本文描述文件certs.pem包含2个证书（一个根CA和一个子CA）的方案的过程。

证书视图

第四步：验证记事本中的私钥

使用文本编辑器（例如nano certs.pem）验证key.pem文件的内容。

第五步：拆分CA证书

对于certs.pem文件具有2个证书（1个根CA和1个子CA）的情况，需要从信任链中删除根CA才能在FMC中导入pfx格式的证书，同时仅将子CA保留在链中以用于验证。

将certs.pem拆分为多个文件，下一个命令将证书重命名为cacert-XX。

split -p "-----BEGIN CERTIFICATE-----" certs.pem cacert-

拆分

拆分后的ls

使用下面描述的命令将.pem扩展名添加到这些新文件。

for i in cacert-*;do mv "$i" "$i.pem";done

重命名脚本

检查这两个新文件，并使用所述的命令确定哪个文件包含根CA，哪个文件包含子CA。

首先，查找id.pem文件（即身份证书）的颁发者。

openssl x509 -in id.pem -issuer -noout

颁发者视图

现在，找到两个cacert-files（CA证书）的主题。

openssl x509 -in cacert-aa.pem -subject -noout

openssl x509 -in cacert-ab.pem -subject -noout

主题检查

将Subject与id.pem文件的颁发者（如前面的图像所示）匹配的cacert文件是随后用于创建PFX证书的子CA。

删除没有匹配主题的cacert文件。在本例中，该证书是cacert-aa.pem。

rm -f cacert-aa.pem

第六步：合并PKCS12文件中的证书

在新的pfx文件中合并子CA证书（在本例中，名称为cacert-ab.pem）以及ID证书(id.pem)和私钥(key.pem)。您必须使用密码保护此文件。如果需要，请更改cacert-ab.pem文件名以匹配您的文件。

openssl pkcs12 -export -in id.pem -certfile cacert-ab.pem -inkey key.pem -out new-cert.pfx

pfx-creation

步骤 7.在FMC中导入PKCS12文件

在FMC中，导航到Device > Certificates，并将证书导入所需的防火墙，如图所示。

证书注册

插入新证书的名称。

注册

添加新证书，然后等待注册过程将新证书部署到FTD。

new-cert

新证书必须可见，在CA字段中不能有红十字。

验证

使用本部分可确认配置能否正常运行。

在Windows中，您可能会遇到以下问题：即使.pfx文件仅包含ID证书，操作系统仍会显示证书的整个链（如果其存储中包含subCA， CA链）。

要检查.pfx文件中的证书列表，可以使用certutil或openssl等工具。

certutil -dump cert.pfx

certutil是一个命令行实用程序，它提供.pfx文件中的证书列表。您必须看到包含ID、SubCA、CA（如果有）的整个链。

或者，您可以使用openssl命令，如下面的命令所示。

openssl pkcs12 -info -in cert.pfx

要验证证书状态以及CA和ID信息，您可以选择图标并确认已成功导入：