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

问题描述 投票:302回答:15

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

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

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

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

windows security iis certificate ssl-certificate
15个回答
449
投票

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


3
投票

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

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

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

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


1
投票

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


1
投票

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

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


0
投票

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

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

希望这可以帮助!


0
投票

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

就个人而言,我很懒,发现所有这些方法既麻烦又慢,而且我不想下载任何东西,如果我不需要,找到正确的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上的导入过程中使用它。

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


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。


30
投票

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

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

https://www.digicert.com/util


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生成的,那么您必须在此步骤中提供相同的CSR。


7
投票

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
投票

我得到了你的要求链接.Combine CRT and KEY Files into a PFX with OpenSSL

以上链接的摘录:

首先,我们需要从现有的.crt文件中提取根CA证书,因为我们稍后需要它。因此,打开.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
投票

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


4
投票

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

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

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


4
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.