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

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

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

我显然安装了证书,它在证书pipe理器(mmc)中是可用的,但是当我select证书导出向导时,我不能selectPFX格式(它是灰色的)

有没有什么工具可以做到这一点,或C#的例子做这个编程?

你将需要使用openssl。

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

密钥文件只是一个带有私钥的文本文件。

你可以从这里安装openssl: openssl

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

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

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

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

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

https://www.digicert.com/util

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

对于使用PFX的IIS,一劳永逸地使用SSL Certs – SSL和IIS解释 – http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

使用IIS“服务器证书”用户界面来“生成证书请求”(这个请求的细节超出了本文的范围,但这些细节是至关重要的)。 这会给你一个IIS准备好的CSR。 然后,您将该CSR交给您的CA,并要求提供证书。 然后你把他们给你的CER / CRT文件,回到IIS,“完成证书请求”在你生成请求的地方。 它可能会要求一个.CER,你可能会有一个.CRT。 他们是一样的东西。 只需更改扩展名或使用 扩展名下拉select您的.CRT。 现在提供一个适当的“友好名称”(*。yourdomain.com,yourdomain.com,foo.yourdomain.com等)。这是重要的! 这必须与您为您设置CSR以及您的CA提供的内容相匹配。 如果您要求通配符,则您的CA必须已经批准并生成通配符,并且必须使用相同的通配符。 如果您的CSR是为foo.yourdomain.com生成的,则必须在此步骤中提供相同的内容。

我得到了你的要求的链接。 将CRT和KEY文件结合到OpenSSL的PFX中

以上链接摘录:

首先,我们需要从现有的.crt文件中提取根CA证书,因为我们稍后需要。 所以打开.crt并点击Certification Path标签。

单击最上面的证书(在这种情况下,VeriSign),然后点击查看证书。 select详细信息选项卡并点击复制到文件…

selectBase-64编码的X.509(.CER)证书将其另存为rootca.cer或类似内容。 将它放在与其他文件相同的文件夹中。

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

这是我们需要OpenSSL的地方。 我们可以下载并安装在Windows上 ,或者直接在OSX上打开terminal。

编辑:

  1. 关于如何安装证书的逐步信息支持链接。

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

    重要注意事项:要以.pfx格式导出证书,您需要遵循您请求证书的同一台计算机上的步骤 。

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

您需要使用makecert工具。

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

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

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

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

这是一篇文章。

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

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

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

执行它,select一个文件,并得到你的* .pfx!

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

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

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

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

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

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

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

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

哪里:

 -pvk yourprivatekeyfile.pvk is the private key file that you created in step 4. -spc yourcertfile.cer is the certificate file you created in step 4. -pfx yourpfxfile.pfx is the name of the .pfx file that will be created. -po yourpfxpassword is the password that you want to assign to the .pfx file. You will be prompted for this password when you add the .pfx file to a project in Visual Studio for the first time. 

(可选(而不是为OP,但为未来的读者),你可以从头创build.cer和.pvk文件(你可以在上面做这个)。 注意mm / dd / yyyy是开始date和结束date的占位符。 有关完整的文档,请参阅msdn文章。

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

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

像这样openssl pkcs12 -inkey rootCA.key -in rootCA.pem -export -out rootCA.pfx

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

我知道一些用户已经讨论了安装这个,并添加命令行程序和下载…

就我个人而言,我很懒,find所有这些方法繁琐和缓慢,再加上我不想下载任何东西,并find正确的CMD行,如果我不必。

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

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

以下是请求的场景使用的步骤。

  1. select当前types= PEM
  2. 更改= PFX
  3. 上传您的证书
  4. 上传您的私钥
  5. 如果您有ROOT CA证书或中级证书也可以上传
  6. 设置您在IIS中使用的密码
  7. 点击reC​​aptcha来certificate你不是一个机器人
  8. 点击转换

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

希望这有助于其他喜欢懒惰的技术人员。

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

  • 以pipe理员身份运行MMC
    • 使用MMC生成CSR。 按照此说明使证书可导出。
  • 从CA(​​crt + p7b)获取证书后,将其导入(Personal \ Certificates和Intermediate Certification Authority \ Certificates)
  • 重要:右键单击您的新证书(个人\证书)所有任务…pipe理私钥,并为您的帐户或Everyone(风险!)分配权限。 完成后,您可以返回到之前的权限。
  • 现在,右键单击证书并select“所有任务…导出”,然后您应该能够将证书(包括私钥)导出为PFX文件,然后将其上传到Azure!

希望这可以帮助!

虽然使用IIS生成一个新的CSR可能是最简单的(比如@rainabba说的),假设你有中间证书,那里有一些在线转换器 – 例如: https : //www.sslshopper.com/ssl-converter。 HTML

这将允许您从您的证书和私钥创build一个PFX,而无需安装另一个程序。