SSL 证书 - 在 Azure KeyVault 中导入根和链?

SSL Certificates - Import Root and Chain in Azure KeyVault?

我已使用命令 "mport-AzureKeyVaultCertificate -VaultName $vaultName -Name $certificateName -FilePath" 在我的 Azure KeyVault 中成功导入了数字签名证书(附带根证书和链证书)。该证书是由 public 证书颁发机构颁发给我的。

我尝试运行完全相同的命令来导入根证书和链证书,但我做不到。

我的问题是:有没有办法将根证书和中间证书导入 KeyVault?或者他们需要从其他地方进口?

谢谢

将您的证书、CA 捆绑文件和私钥文件按顺序连接到一个 .pem 文件中:

cat <cert>.crt <bundle>.cabundle <private>.key > <full-cert>.pem

使用 Azure CLI 2.0 az 工具导入密钥保管库:

az keyvault certificate import --vault-name <your-vault> --name <cert-name> --file <cert-file>.pem

您应该发现 az 工具在您的保管库中创建了三个条目,所有条目的名称都为 <cert-name> (i) 包含 <cert>.crt 文件的证书,(ii) 私有文件密钥和 (iii) 包含完整根 + 链 + 私钥的秘密,如果需要,您稍后可以 download

有两种基本情况:

  1. 导入颁发的证书(采用 PEM 或 PFX 格式)- 请参阅 Tutorial: Import a certificate in Azure Key Vault
  2. 使用 Azure KeyVault 创建 CSR(证书请求),将其发送给颁发者并合并收到的证书 - 请参阅Create and merge a CSR in Key Vault

它们都允许将证书链添加到密钥库(与证书一起),然后再下载和提取。请注意,无法 open/download 将证书与密钥库分开链接。相反,应该下载证书并从文件中提取证书。

导入操作非常简单:Azure 门户和 Az CLI 都支持 PFX 和 PEM 文件,包含私钥、颁发者创建的新证书和 CA 证书。

但是合并有一些细微差别。
在 Azure KeyVault 中创建时,证书内容类型可以设置为 PKCS12 或 PEM。结果合并后的证书是 exported/downloaded

  • 对使用 PKCS12 内容类型创建的证书使用 PFX 格式
  • 为使用 PEM 内容类型创建的证书使用 PEM 格式

但是,用于合并操作的链容器的格式不依赖于该内容类型。它仅取决于用于执行合并的方法:

以下命令可用于创建包含链的 P7B 文件:

openssl crl2pkcs7 -nocrl -certfile test.crt -out test.p7b -certfile inter.crt -certfile ca.crt

正在从导入的证书中提取链:
将证书导入 Azure keyvault 时,export/download 该证书使用相同的格式。

从合并的证书中提取链:
应从 Azure keyvault(PFX 或 PEM,具体取决于证书内容类型)下载证书。当在 PEM 中下载与链合并的证书时,它包含整个链,其格式已经允许轻松提取单个证书。
在 PFX 中下载证书时,要提取单个证书,可以使用以下命令将其转换为 PEM 格式,仅包含证书(省略私钥):

openssl pkcs12 -in downloaded-cert.pfx -nokeys -nodes -out chain.pem

然后chain.pem可以用文本编辑器打开,提取单个证书到单独的crt文件。