如何从证书和私钥创建.pfx文件?

时间:2011-06-10 14:38:19

标签: windows security iis certificate ssl-certificate

我需要.pfx文件在IIS上的网站上安装https。

我有两个单独的文件:证书(.cer或pem)和私钥(.crt),但IIS只接受.pfx文件。

我显然安装了证书,它在证书管理器(mmc)中可用,但是当我选择证书导出向导时,我无法选择PFX格式(它是灰色的)

是否有任何工具可以做到这一点或C#以编程方式执行此操作?

16 个答案:

答案 0 :(得分:439)

您需要使用openssl。

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt

密钥文件只是一个包含私钥的文本文件。

如果您有根CA和中间证书,那么也可以使用多个-in参数包含它们

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt

您可以从此处安装openssl:openssl

答案 1 :(得分:36)

Microsoft Pvk2Pfx命令行实用程序似乎具有您需要的功能:

Pvk2Pfx(Pvk2Pfx.exe)是一个命令行工具,将.spc,.cer和.pvk文件中包含的公钥和私钥信息复制到个人信息交换(.pfx)文件中。
http://msdn.microsoft.com/en-us/library/windows/hardware/ff550672(v=vs.85).aspx

注意:如果您需要/想要/更喜欢C#解决方案,那么您可能需要考虑使用http://www.bouncycastle.org/ api。

答案 2 :(得分:30)

如果您正在寻找Windows GUI,请查看DigiCert。我只是用它而且非常简单。

在SSL标签下,我首先导入证书。然后,一旦我选择了证书,我就可以导出为PFX,无论是否有密钥文件。

https://www.digicert.com/util

答案 3 :(得分:27)

您不需要openssl或makecert或其中任何一个。您也不需要CA提供给您的个人密钥。我几乎可以保证问题在于您希望能够使用CA提供的密钥和cer文件,但它们不是基于“IIS方式”。我已经厌倦了在这里看到糟糕和困难的信息,我决定写博客主题和解决方案。当你意识到发生了什么并看到它有多容易时,你会想拥抱我:)

一次性使用PFX的IIS的SSL Certs - SSL和IIS解释 - http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

使用IIS“服务器证书”UI来“生成证书请求”(此请求的详细信息超出了本文的范围,但这些详细信息至关重要)。这将为您提供为IIS准备的CSR。然后,您将该CSR提供给您的CA并要求提供证书。然后你拿走他们给你的CER / CRT文件,在你生成请求的同一个地方返回IIS,“完成证书申请”。它可能要求.CER,你可能有.CRT。他们是一样的东西。只需更改扩展程序或使用扩展名下拉列表选择.CRT即可。现在提供一个合适的“友好名称”(* .yourdomain.com,yourdomain.com,foo.yourdomain.com等)。这是重要的!这必须与您为CSR设置的内容以及CA为您提供的内容相匹配。如果您要求使用通配符,则您的CA必须已批准并生成通配符,您必须使用相同的通配符。如果您的CSR是为foo.yourdomain.com生成的,那么您必须在此步骤中提供相同的内容。

答案 4 :(得分:6)

您需要使用makecert工具。

以管理员身份打开命令提示符,然后键入以下内容:

makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a sha1 -len 2048 -ss My "<CertificateName>.cer"

其中<CertifcateName> =要创建的证书的名称。

然后,您可以通过在“开始”菜单中键入certmgr.msc,单击“个人”&gt;打开管理控制台的“证书管理器”管理单元。证书&gt;并且您的证书应该可用。

这是一篇文章。

https://azure.microsoft.com/documentation/articles/cloud-services-certs-create/

答案 5 :(得分:6)

我收到了您的要求链接。Combine CRT and KEY Files into a PFX with OpenSSL

从以上链接中摘录:

  

首先,我们需要从现有的CA提取根CA证书   .crt文件,因为我们以后需要这个。所以打开.crt并单击   在“证书路径”选项卡上。

     

单击最顶层的证书(在本例中为VeriSign),然后单击“查看”   证书。选择Details选项卡,然后单击Copy to File ...

     

选择Base-64编码的X.509(.CER)证书将其另存为rootca.cer   或类似的东西。将其放在与其他文件相同的文件夹中。

     

将它从rootca.cer重命名为rootca.crt现在我们应该有3个文件   我们可以从中创建PFX文件的文件夹。

     

这是我们需要OpenSSL的地方。我们可以download and install it on Windows,或者只是在OSX上打开终端。

修改

  1. support link with step by step information on how to do install the certificate.

  2. 成功安装后,导出证书,选择.pfx格式,包含私钥。

    Important Note: : To export the certificate in .pfx format you need to follow the steps on the same machine from which you have requested the certificate

  3. 导入的文件可以上传到服务器。

答案 6 :(得分:6)

https://msdn.microsoft.com/en-us/library/ff699202.aspx

((文章的相关引言如下))

接下来,您必须创建用于对部署进行签名的.pfx文件。打开命令提示符窗口,然后键入以下命令:

PVK2PFX –pvk yourprivatekeyfile.pvk –spc yourcertfile.cer –pfx yourpfxfile.pfx –po yourpfxpassword

其中:

  
      
  • pvk - yourprivatekeyfile.pvk是您在步骤4中创建的私钥文件。
  •   
  • spc - yourcertfile.cer是您在步骤4中创建的证书文件。
  •   
  • pfx - yourpfxfile.pfx是将要创建的.pfx文件的名称。
  •   
  • po - yourpfxpassword是要分配给.pfx文件的密码。第一次将.pfx文件添加到Visual Studio中的项目时,系统将提示您输入此密码。
  •   

(可选(不适用于OP,但对于未来的读者),您可以从头开始创建.cer和.pvk文件)(您可以在上面之前完成此操作)。请注意,mm / dd / yyyy是开始日期和结束日期的占位符。有关完整文档,请参阅msdn文章。

makecert -sv yourprivatekeyfile.pvk -n "CN=My Certificate Name" yourcertfile.cer -b mm/dd/yyyy -e mm/dd/yyyy -r

答案 7 :(得分:4)

这是BY FAR将* .cer转换为* .pfx文件的最简单方法:

只需从DigiCert下载便携式证书转换器: https://www.digicert.com/util/pfx-certificate-management-utility-import-export-instructions.htm

执行它,选择一个文件并获得* .pfx !!

答案 8 :(得分:4)

我从.key和.pem文件创建了.pfx文件。

喜欢这个openssl pkcs12 -inkey rootCA.key -in rootCA.pem -export -out rootCA.pfx

答案 9 :(得分:3)

当您说证书在MMC中可用时,它是否可在“当前用户”或“本地计算机”下使用?我发现只有在本地计算机下才能导出私钥。

您可以将证书的管理单元添加到MMC,并选择应为其管理证书的帐户。选择本地计算机。如果您的证书不存在,请通过右键单击商店并选择所有任务&gt;导入它。进口。

现在导航到证书管理单元的本地计算机版本下的导入证书。右键单击证书并选择所有任务&gt;出口。导出向导的第二页应询问您是否要导出私钥。选择是。 PFX选项现在将是唯一可用的选项(如果选择“否”,则显示为灰色,导出私钥的选项在“当前用户”帐户下不可用)。

系统会要求您为PFX文件设置密码,然后设置证书名称。

答案 10 :(得分:1)

我遇到了同样的问题。我的问题是,在扩展的ssl验证过程完成之前,生成初始证书请求的计算机已崩溃。我需要生成一个新的私钥,然后从证书提供程序导入更新的证书。如果您的计算机上不存在私钥,则无法将证书导出为pfx。他们的选择是灰色的。

答案 11 :(得分:1)

尽管使用IIS生成新的CSR可能最容易(如@rainabba所说),假设您拥有中间证书,那里有一些在线转换器 - 例如: https://www.sslshopper.com/ssl-converter.html

这将允许您从证书和私钥创建PFX,而无需安装其他程序。

答案 12 :(得分:0)

在大多数情况下,如果您无法将证书导出为PFX(包括私钥),则因为MMC / IIS无法找到/无法访问私钥(用于生成CSR) 。以下是我为解决此问题而采取的步骤:

  • 以管理员身份运行MMC
  • 从CA(crt + p7b)获取证书后,导入它们(个人\证书和中级证书颁发机构\证书)
  • 重要提示:右键单击新证书(个人\证书)所有任务...管理私钥,并为您的帐户或所有人分配权限(有风险!)。完成后,您可以返回先前的权限。
  • 现在,右键单击证书并选择All Tasks..Export,您应该可以将包含私钥的证书导出为PFX文件,然后将其上传到Azure!

希望这有帮助!

答案 13 :(得分:0)

我知道有几个用户已经讨论过安装这个以及添加命令行程序和下载...

就我个人而言,我很懒,发现所有这些方法既繁琐又慢,而且我不想下载任何东西,如果我不需要,也找不到正确的cmd线。

我个人IIS服务器上的最佳方法是使用RapidSSLOnline。这是一个服务器上的工具,允许您上传证书和私钥,并能够为您生成可以直接导入IIS的pfx文件。

链接在这里: https://www.rapidsslonline.com/ssl-tools/ssl-converter.php

以下是所请求方案的步骤。

  
      
  1. 选择当前类型= PEM
  2.   
  3. 更改= PFX
  4.   
  5. 上传您的证书
  6.   
  7. 上传您的私钥
  8.   
  9. 如果您有ROOT CA证书或中间证书也上载
  10.   
  11. 设置您在IIS中使用的密码
  12.   
  13. 点击reC​​aptcha以证明您不是机器人
  14.   
  15. 点击转换
  16.   

那就是你应该下载PFX并在IIS的导入过程中使用它。

希望这有助于其他志同道合,懒惰的技术人员。

答案 14 :(得分:0)

Powershell有一个Export-PfxCertificate cmdlet似乎可以完成任务。

答案 15 :(得分:-6)

对于免费提供的来自SSL的pfx文件,我发现这个https://decoder.link/converter最简单。

只需确保选择了PEM-> PKCS#12,然后上传证书,ca_bundle和密钥文件并进行转换。

记住密码,然后使用您使用的密码上传并添加绑定。