Export-PfxCertificate:无法导出不可导出的私钥

时间:2018-02-21 20:56:40

标签: powershell ssl-certificate

我正在尝试导出自签名证书,以便将其导入到我的开发环境中的其他服务器(将使用"真实"生产证书),但它会引发以下错误:

  

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

5 个答案:

答案 0 :(得分:10)

问题不在于powershell代码。问题出在证书上。

首次导入或创建证书时,必须将私钥标记为可导出,以便您能够导出私钥。

您收到的错误消息表明私钥无法在您尝试使用的证书上导出。

Example Issue

答案 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时必须选中此框的屏幕截图(在不同平台上可能看起来有所不同。)

enter image description here