2

我正在使用以下代码在 Azure 云服务上安装 .pfx 文件:

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

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

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

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

4

2 回答 2

3

你总是可以把它放在 a 中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 指出的那样,它们通常不是你应该拥有的东西。

于 2015-04-10T03:27:13.140 回答
1

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

于 2015-04-10T03:35:56.903 回答