我正在尝试导出自签名证书,以便将其导入到我的开发环境中的其他服务器(将使用"真实"生产证书),但它会引发以下错误:
Export-PfxCertificate:无法导出不可导出的私钥
要求是我需要导出证书和"允许导出私钥",但我很好奇我缺少什么。我的PowerShell如下:
$pwd = ConvertTo-SecureString -String ‘1234’ -Force -AsPlainText
$path = 'cert:\localMachine\my\' + '1E7439053EE57AEE6EA0E1F3CDF5DB4234B6731E'
Export-PfxCertificate -cert $path -FilePath c:\Certificates\cert.pfx -Password $pwd
答案 0 :(得分:10)
问题不在于powershell代码。问题出在证书上。
首次导入或创建证书时,必须将私钥标记为可导出,以便您能够导出私钥。
您收到的错误消息表明私钥无法在您尝试使用的证书上导出。
答案 1 :(得分:2)
我进行了快速搜索,您可以使用certutil
或更高版本可能是http://community.idera.com/powershell/powertips/b/tips/posts/exporting-certificate-with-private-key的解决方案。
该帖子的相关代码已粘贴在下方。 100%归属于该页面的作者。
dir cert:\currentuser\my |
Where-Object { $_.hasPrivateKey } |
Foreach-Object { [system.IO.file]::WriteAllBytes(
"$home\$($_.thumbprint).pfx",
($_.Export('PFX', 'secret')) ) }
答案 2 :(得分:1)
检查下面的代码。
#Ask for the Name
$name = Read-Host "Certificate Name "
# Check if the Path exists
$Path = "D:\Provisioning\certmgmt\$name.txt"
$TestPath = Test-Path $Path
if ($TestPath -ne "true")
{
Write-Host "The Path $Path do not exist" -ForegroundColor Red
Pause
exit
}
# Import the certificate
$result = Import-Certificate -FilePath $Path -CertStoreLocation "Cert:\LocalMachine\My"
# Get the serialnumber of the certificate
$Thumbprint = $result.Thumbprint
# Set the FriendlyName
(Get-ChildItem -Path Cert:\LocalMachine\My\$Thumbprint).FriendlyName = $name
# Export the Certificate
$answer = Read-Host "Export Certificate? (Y/N)"
if ($answer -eq "N" -or $answer -eq "n")
{
exit
}
try
{
$mypwd = ConvertTo-SecureString -String "password" -Force -AsPlainText
Get-ChildItem -Path cert:\localMachine\my\$Thumbprint | Export-PfxCertificate -FilePath C:\$name.pfx -Password $mypwd
}
catch
{
Write-Host $Error -ForegroundColor Red
pause
exit
}
Write-Host "Export the Certifikate was successful" -ForegroundColor Green
答案 3 :(得分:0)
也许为时已晚,但是您是否尝试以管理员身份运行PowerShell脚本? (如果可以从mmc控制台导出私钥,则Export-PfxCertificate也会导出私钥。)
答案 4 :(得分:0)
我知道这是一个较旧的问题,但是我想发布解决方案,因为我遇到了同样的问题。 尝试导出PFX文件时,我也遇到了令人恐惧的 Export-PfxCertificate:无法导出不可导出的私钥错误。 在Windows计算机上加载我的代码签名证书后,问题开始了。 当我导出时,“导出到PFX”选项显示为灰色,无需进一步说明。然后,我按照此处列出的许多说明进行操作,包括 Powershell Export-PfxCertificate 。这些都不起作用。 我终于回到了证书提供者GoDaddy,他们告诉我在我的原始证书签名请求(CSR)中,我没有选中 使私钥可导出 。 GoDaddy慷慨地,免费地允许我提交新的CSR(选中该选项)以“重新生成”我现有的证书。在几个小时内,我签发了新证书。我将其安装在我的计算机上,并且能够直接从Windows MMC导出(无需PowerShell)。 我已经包含了此框的屏幕截图,在创建CSR时必须选中此框的屏幕截图(在不同平台上可能看起来有所不同。)