关于windows:如何从证书和私钥创建.pfx文件?

How to create .pfx file from certificate and private key?

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

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

我显然安装了证书,它在证书管理器(MMC)中可用,但是当我选择证书导出向导时,我不能选择pfx格式(它变灰了)

有什么工具可以做到这一点吗?或者有一些程序化的例子可以做到这一点?


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


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。


如果你正在寻找一个Windows图形用户界面,请查看Digicert。我刚用过这个,很简单。

在ssl选项卡下,我首先导入了证书。然后,一旦我选择了证书,我就可以将其导出为pfx,包括键文件和不包括键文件。

网址:https://www.digicert.com/util


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

针对带有pfx的IIS的SSL证书一次到位-SSL和IIS已解释-http://rainabba.blogspot.com/2014/03/ssl-certs-for-IIS-with-pfx-one-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。


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

(本文相关引文如下)

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

1
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 creating.
  • 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,但适用于未来的读者),您可以从头创建.cer和.pvk文件(您可以在前面完成)。注意,mm/dd/yyyy是开始和结束日期的占位符。有关完整文档,请参阅msdn文章。

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

我得到了一个与你要求的链接,用openssl把crt和密钥文件合并成pfx。

从上述链接中提取:

First we need to extract the root CA certificate from the existing
.crt file, because we need this later. So open up the .crt and click
on the Certification Path tab.

Click the topmost certificate (In this case VeriSign) and hit View
Certificate. Select the Details tab and hit Copy to File…

Select Base-64 encoded X.509 (.CER) certificate Save it as rootca.cer
or something similar. Place it in the same folder as the other files.

Rename it from rootca.cer to rootca.crt Now we should have 3 files in
our folder from which we can create a PFX file.

Here is where we need OpenSSL. We can either download and install it
on Windows, or simply open terminal on OSX.

编辑:

  • 有一个支持链接,其中包含有关如何安装证书的逐步信息。

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

    重要提示::要以.pfx格式导出证书,需要在请求证书的同一台计算机上执行这些步骤。

  • 导入的文件可以上载到服务器。


  • 您需要使用makecert工具。

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

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

    其中,=要创建的证书的名称。

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

    这是一篇文章。

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


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

    像这样


    这是迄今为止将*.cer转换为*.pfx文件的最简单方法:

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

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


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

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

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

    系统将要求您设置pfx文件的密码,然后设置证书名。


    虽然使用IIS(如@rainabba所说)生成新的CSR可能最简单,但假设您拥有中间证书,那么就有一些在线转换器存在,例如:网址:https://www.sslshopper.com/ssl-converter.html

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


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


    PowerShell提供了一个Export-PfxCertificateCmdlet,似乎可以完成这项工作。


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

    就我个人而言,我很懒惰,发现所有这些方法都很繁琐和缓慢,而且如果不需要的话,我不想下载任何东西,也不想找到正确的命令行。

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

    链接如下:https://www.rapidsslonline.com/ssl-tools/ssl-converter.php

    下面是用于所请求场景的步骤。

  • Select Current Type = PEM
  • Change for = PFX
  • Upload your certificate
  • Upload your private key
  • If you have ROOT CA cert or intermediate certs upload them too
  • Set a password of your choosing, used in IIS
  • Click the reCaptcha to prove you're not a bot
  • Click Convert
  • 也就是说,您应该下载一个pfx,并在IIS的导入过程中使用它。

    希望这能帮助其他志同道合、懒惰的技术人员。


    在大多数情况下,如果无法将证书导出为pfx(包括私钥),则是因为mmc/iis找不到/没有访问私钥(用于生成CSR)的权限。以下是我解决此问题所遵循的步骤:

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

    希望这有帮助!