我已使用命令“mport-AzureKeyVaultCertificate -VaultName $vaultName -Name $certificateName -FilePath”成功将数字签名证书(附带根证书和链证书)导入到我的 Azure KeyVault 中。该证书已由公共(public)证书颁发机构颁发给我。
我尝试运行完全相同的命令来导入根证书和链证书,但我无法这样做。
我的问题是:有没有办法将根证书和中间证书导入到 KeyVault 中?或者它们需要从其他地方进口?
谢谢
最佳答案
有两种基本场景:
- 导入颁发的证书(PEM 或 PFX 格式) - 请参阅 Tutorial: Import a certificate in Azure Key Vault
- 使用 Azure KeyVault 创建 CSR(证书请求),将其发送给颁发者并合并收到的证书 - 请参阅 Create and merge a CSR in Key Vault
它们都允许将证书链添加到 keystore (与证书一起),然后下载和提取。请注意,无法与 keystore 分开打开/下载链证书。相反,应该下载证书并从文件中提取证书。
对于导入操作非常简单:Azure Portal 和 Az CLI 都支持 PFX 和 PEM 文件,其中包含私钥、颁发者创建的新证书和 CA 证书。
但是合并有一些细微差别。
在 Azure KeyVault 中创建时,可以将证书内容类型设置为 PKCS12 或 PEM。结果合并证书被导出/下载
- 使用 PFX 格式创建通过 PKCS12 内容类型创建的证书
- 使用 PEM 格式创建通过 PEM 内容类型创建的证书
但是,用于合并操作的链容器的格式不依赖于该内容类型。它仅取决于用于执行合并的方法:
- Az CLI 支持 PEM 格式(包含单个证书或整个链)和 crt(仅包含一个证书,不包含链)
az keyvault certificate pending merge --vault-name test-kv --name test --file test- chain.pem
- Azure 门户 UI 允许上传 PEM、P7B 和 crt。但只有合并 P7B 才能保留链条。如果合并 PEM,则仅使用 PEM 容器中指定的第一个证书(其他证书将被忽略)
- Azure KeyVault REST API 使用一系列 Base64 编码的证书来表示链 ( https://learn.microsoft.com/en-us/azure/key-vault/certificates/create-certificate-scenarios#merge-when-a-pending-request-is-created---manual-certificate-creation )
以下命令可用于创建包含链的 P7B 文件:
openssl crl2pkcs7 -nocrl -certfile test.crt -out test.p7b -certfile inter.crt -certfile ca.crt
从导入的证书中提取链:
将证书导入到 Azure keyvault 时,将使用相同的格式导出/下载该证书。
从合并证书中提取链:
应从 Azure keyvault 下载证书(PFX 或 PEM,具体取决于证书内容类型)。当在 PEM 中下载与链合并在一起的证书时,它包含整个链,其格式已经允许轻松提取单个证书。
当在 PFX 中下载证书时,要提取单个证书,可以使用以下命令将其转换为 PEM 格式,仅包含证书(省略私钥):
openssl pkcs12 -in downloaded-cert.pfx -nokeys -nodes -out chain.pem
然后可以使用文本编辑器打开 chain.pem,并且可以将各个证书提取到单独的 crt 文件中。
关于azure - SSL 证书 - 在 Azure KeyVault 中导入根和链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47232905/