Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 当ARM模板托管在密钥库中时,如何在ARM模板中定义证书资源?_Azure_Azure Web App Service_Azure Resource Manager - Fatal编程技术网

Azure 当ARM模板托管在密钥库中时,如何在ARM模板中定义证书资源?

Azure 当ARM模板托管在密钥库中时,如何在ARM模板中定义证书资源?,azure,azure-web-app-service,azure-resource-manager,Azure,Azure Web App Service,Azure Resource Manager,我正在尝试为我的资源组定义ARM模板。最终,我尝试通过导航到门户内应用程序服务的SSL证书选项卡来复制我必须手动执行的操作 我已将一个PFX文件上载到我的KeyVault的“机密”选项卡。我已授予访问全球RM服务负责人的权限 目前,这就是我的Microsoft.Web/certificates资源在我的模板中的样子。它只是定义为资源组顶层的资源,而不是网站的子资源或类似的资源: { "type":"Microsoft.Web/certificates",

我正在尝试为我的资源组定义ARM模板。最终,我尝试通过导航到门户内应用程序服务的SSL证书选项卡来复制我必须手动执行的操作

我已将一个PFX文件上载到我的KeyVault的“机密”选项卡。我已授予访问全球RM服务负责人的权限

目前,这就是我的
Microsoft.Web/certificates
资源在我的模板中的样子。它只是定义为资源组顶层的资源,而不是网站的子资源或类似的资源:

    {
        "type":"Microsoft.Web/certificates",
        "name": "signingCredentials",
        "location": "[parameters('region')]",
        "apiVersion": "2015-08-01",
        "properties": {
            "keyVaultId": "<My KeyVault ID>",
            "keyVaultSecretName": "<My Secret Name>"
        }
    }
{
“类型”:“Microsoft.Web/certificates”,
“名称”:“签名凭证”,
“位置”:“[参数('区域')]”,
“apiVersion”:“2015-08-01”,
“财产”:{
“KeyVault ID”:“,
“KeyVault SecretName”:”
}
}
当我尝试部署此模板时,会收到以下消息:

参数KeyVault Certificate具有无效值

我还没有找到关于这个参数的任何文档以及它期望的值。我假设它在资源的
属性部分中丢失。到目前为止,我在这个主题上找到的任何东西都只引用了
keyVaultId
keyVaultSecretName

我做错了什么?我想实现的目标可能实现吗

参数KeyVault Certificate具有无效值

这个问题似乎不是由模板引起的。我们可以参考以检查它。从错误消息中,它向我显示证书名称不正确。我们可以使用
获取AzureKeyVaultSecret
获取其名称。详情如下:


正如上面的屏幕截图,值“kvcertificate”是我们期望的值。

问题似乎不是由我的模板引起的,而是与证书如何通过UI上传到KeyVault有关。为我提供了使用powershell将文件直接上载到KeyVault的脚本

$pfxFilePath = "F:\KeyVault\PrivateCertificate.pfx"
$pwd = "[2+)t^BgfYZ2C0WAu__gw["
$flag = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable 
$collection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection  
$collection.Import($pfxFilePath, $pwd, $flag) 
$pkcs12ContentType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12 
$clearBytes = $collection.Export($pkcs12ContentType) 
$fileContentEncoded = [System.Convert]::ToBase64String($clearBytes) 
$secret = ConvertTo-SecureString -String $fileContentEncoded -AsPlainText –Force 
$secretContentType = 'application/x-pkcs12' 
Set-AzureKeyVaultSecret -VaultName akurmitestvault -Name keyVaultCert -SecretValue $Secret -ContentType $secretContentType # Change the Key Vault name and secret name

使用Jambor回答中的
获取AzureKeyVault
脚本,我看不到UI中上传的证书之间有任何差异。我甚至将我上传的证书的内容类型从证书更改为应用程序/x-pcks2,但仍然不起作用。看起来这可能是UI中的一个bug,或者只是powershell脚本处理它的方式不同。

下面的信息是否有问题?不管我做什么,我仍然有问题try@KenWin0x539我已成功使用powershell脚本上载证书。问题不在我的模板语法中。我的答案如下。杰姆博尔,不幸的是,情况似乎并非如此。问题似乎与我通过门户UI上载的证书有关。如果我通过powershell脚本上传文件,它会工作,我尝试了这个解决方案,但仍然收到相同的错误消息。我正在尝试使用通过PS>New SelfSignedCertificate创建的自签名证书,但我认为这不会导致问题。如果您直接从门户中的密钥库创建证书,请确保选择PKCS#12版本(非PEM),此答案为我指明了正确的方向,谢谢