受域保护的pfx需要什么密码?

时间:2018-07-24 12:16:09

标签: powershell visual-studio-2017 certificate code-signing pfx

我尝试通过powershell创建自签名代码签名证书,以通过Visual Studio 2017对.NET程序集进行签名,之后将其作为 pfx 。使用 -ProtectTo 参数将 pfx 导出为受域保护的证书。代码如下:

$pfxLocation = [System.IO.Path]::Combine([System.Environment]::GetFolderPath("Desktop"),"Certificates\")
New-Item -ItemType Directory -Path $pfxLocation -Force
$certificate = New-SelfSignedCertificate `
               -CertStoreLocation "Cert:\LocalMachine" `
               -FriendlyName "This is a code-signing certificate" `
               -Subject "CN=Me" `
               -Type CodeSigningCert `
               -NotBefore ([System.DateTime]::Today) `
               -NotAfter ([System.DateTime]::Today.AddMonths(6).AddDays(1)) `
               -KeyExportPolicy Exportable
Move-Item -Destination "Cert:\LocalMachine\Root" -Path $certificate.PSPath
$newCertificateLocation = "Cert:\LocalMachine\Root\" + $certificate.Thumbprint
Get-ChildItem $newCertificateLocation | Export-PfxCertificate -FilePath ([System.IO.Path]::Combine($pfxLocation,"certificate.pfx")) -ProtectTo "Domain\Domain group 1", "Domain\Domain group 2"

但是,Visual Studio仍然要求密码不存在。

VS2017 password request

使用 -ProtectTo 参数指定的域组之一中来自域用户的密码被拒绝:

VS2017 rejects password

那么它要求输入什么密码,为什么根本不需要输入密码?由于它是受域保护的,因此不应包含任何内容,而这正是我的目标。

更新

基本上,这个想法是使用输出 pfx 进行自动构建代理的代码签名,对于这种构建,必须缺少密码。

2 个答案:

答案 0 :(得分:0)

这对您有用吗?

PUT /user/1/reorder/2

答案 1 :(得分:0)

此导出 PFX 无需密码。通过GUI导入时,可以使用空密码。

$cert = @(Get-ChildItem -Path 'Cert:\CurrentUser\My\07BAE0886EECC2019F0AE6CC68FE5C3EA98308F8')[0]
$certBytes = $cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pfx)
[System.IO.File]::WriteAllBytes('S:\cert.pfx', $certBytes)