在调用Add-AzureCertificate之前,确定.pfx文件是否需要密码

时间:2015-04-10 02:51:29

标签: powershell azure azure-automation powershell-workflow

我使用以下代码在Azure Cloud Service上安装.pfx文件:

Add-AzureCertificate -serviceName $CloudServiceName -certToDeploy $PfxFile.FullName -ErrorAction 'Stop' -Password $applicationCertsPassword

我认为它会抛出异常,因为.pfx文件不需要密码。

如何确定.pfx文件是否需要密码?

修改 我想事先确定.pfx文件是否有密码,这样我就可以避免在没有catch块中的密码参数的情况下再次运行命令行开关。

2 个答案:

答案 0 :(得分:3)

您总是可以将它放在Try{}中,然后在Catch{}中没有密码的情况下执行相同的命令,但这是一种脏脚本。

Try{
    Add-AzureCertificate -serviceName $CloudServiceName -certToDeploy $PfxFile.FullName -ErrorAction 'Stop' -Password $applicationCertsPassword
}
Catch{
    Add-AzureCertificate -serviceName $CloudServiceName -certToDeploy $PfxFile.FullName -ErrorAction 'Stop'
}

我认为我可能会做的是尝试将证书作为没有密码的对象加载,如果失败,我会知道它有密码。

$OldEA = $ErrorActionPreference
$ErrorActionPreference = SilentlyContinue
If([System.Security.Cryptography.X509Certificates.X509Certificate2]::CreateFromCertFile($pfxfile.fullname)){"No Password"}
$ErrorActionPreference = $OldEA

非常确定能够达到你想要的效果。我没有碰巧有没有密码的PFX文件现在可以验证,因为正如Jan指出的那样,它们实际上不是你应该拥有的东西。

答案 1 :(得分:1)

用于上载到Azure云服务的.pfx证书文件必须包含私钥,因此必须受密码保护。上传后,系统会要求您输入密码。