我已使用命令“mport-AzureKeyVaultCertificate -VaultName $vaultName -Name $certificateName -FilePath”成功将数字签名证书(附带根证书和链证书)导入到我的 Azure KeyVault 中。该证书已由公共证书颁发机构颁发给我。
我尝试运行完全相同的命令来导入根证书和链证书,但我做不到。
我的问题是:有没有办法将根证书和中间证书导入到 KeyVault 中?或者它们需要从其他地方进口?
谢谢
有两种基本场景:
它们都允许将证书链添加到密钥库(与证书一起),然后下载和提取。请注意,无法与密钥库分开打开/下载链证书。相反,应该下载证书并从文件中提取证书。
对于导入操作非常简单:Azure Portal 和 Az CLI 都支持 PFX 和 PEM 文件,其中包含私钥、颁发者创建的新证书和 CA 证书。
但是合并存在一些细微差别。
在 Azure KeyVault 中创建时,可以将证书内容类型设置为 PKCS12 或 PEM。结果合并证书被导出/下载
但是,用于合并操作的链容器的格式不依赖于该内容类型。它仅取决于用于执行合并的方法:
az keyvault certificate pending merge --vault-name test-kv --name test --file test-
chain.pem
以下命令可用于创建包含链的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 文件中。
按顺序将您的证书、CA 捆绑文件和私钥文件连接到
.pem
文件中:
cat <cert>.crt <bundle>.cabundle <private>.key > <full-cert>.pem
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
。
az keyvault 证书导入...不允许我上传 .pem 文件。
我需要从 certbot 生成的内容(在我的例子中)生成一个 .pem 文件,将其转换为 pfx 文件,然后上传......
也许这可能对某人有帮助:
cat certs/live/mydomain.co.uk/{fullchain.pem,privkey.pem} > certs/mydomain.pem
openssl pkcs12 -in certs/mydomain.pem -keypbe NONE -cetpbe NONE -nomaciter -passout pass:Secretp4ss -out certs/mydomain.pfx -export
az keyvault certificate import --vault-name myvault -n my-vault-cert -f certs/mydomain.pfx --password Secretp4ss
注意,如果使用 certbot,需要告诉它使用
--rsa-key-size 2048 --key-type rsa