wake-up-neo.com

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

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

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

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

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

301
jlp

您将需要使用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

435
jdehlin

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。

36
Seymour

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

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

https://www.digicert.com/util

29
joelnet

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

IIS的SSL Certs一次性使用PFX - 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。他们是一样的东西。只需更改扩展名或使用extension drop-down选择你的.CRT。现在提供一个合适的“友好名称”(* .yourdomain.com,yourdomain.com,foo.yourdomain.com等)。这IS重要!这必须与您为CSR设置的内容以及CA为您提供的内容相匹配。如果您要求使用通配符,则您的CA必须已批准并生成通配符,您必须使用相同的通配符。如果您的CSR是为foo.yourdomain.com生成的,那么您必须在此步骤中提供相同的CSR。

26
rainabba

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
6
granadaCoder

您需要使用makecert工具。

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

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

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

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

这是一篇文章。

https://Azure.Microsoft.com/documentation/articles/cloud-services-certs-create/

6
BentOnCoding

我得到了你的要求的链接. 将CRT和KEY文件合并到带有OpenSSL的PFX中

从以上链接中提取: /

首先,我们需要从现有的.crt文件中提取根CA证书,因为我们稍后需要它。因此,打开.crt并单击“证书路径”选项卡。

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

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

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

这是我们需要OpenSSL的地方。我们可以 在Windows上下载并安装它 ,或者只是在OSX上打开终端。

编辑: /

  1. 有一个 有关如何安装证书的分步信息的支持链接。

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

    重要说明: :要以.pfx格式导出证书,您需要按照申请证书的同一台机器上的步骤

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

6
sudhAnsu63

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

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

4
Siim Nelis

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

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

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

4
user1613797

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

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

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

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

3
Ryan Elkins

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

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

1
William

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

1
Bill Mahoney

我知道有几个用户已经谈过安装这个和那个并添加命令行程序和下载...

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

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

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

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

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

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

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

0
TheNerdyNerd

有一个Export-PfxCertificate cmdlet可用于Powershell,似乎可以完成这项工作。

0
Usurer

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

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

希望这可以帮助!

0
Jose Parra