首页 文章

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

提问于
浏览
272

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

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

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

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

14 回答

  • 34

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

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

  • 6

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

  • 390

    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 .

  • 4

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

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

    https://www.digicert.com/util

  • 6

    你不需要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 "Server Certificates" UI到"Generate Certificate Request"(此请求的详细信息超出了本文的范围,但这些详细信息至关重要) . 这将为您提供为IIS准备的CSR . 然后,您将该CSR提供给CA并要求提供证书 . 然后你拿走他们给你的CER / CRT文件,在你生成请求的同一个地方返回IIS,"Complete Certificate Request" . 它可能会要求.CER,你可能会有.CRT . 他们是一样的东西 . 只需更改扩展名或使用 . 扩展下拉列表以选择.CRT . 现在提供一个合适的"friendly name"(* .yourdomain.com,yourdomain.com,foo.yourdomain.com等) . 这是重要的!这必须与您为CSR设置的内容以及CA为您提供的内容相匹配 . 如果您要求使用通配符,则您的CA必须已批准并生成通配符,您必须使用相同的通配符 . 如果您的CSR是为foo.yourdomain.com生成的,那么您必须在此步骤中提供相同的CSR .

  • 6

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

    Extracts from the above link:

    首先,我们需要从现有的.crt文件中提取根CA证书,因为我们稍后需要它 . 因此,打开.crt并单击“认证路径”选项卡 . 单击最顶层的证书(在本例中为VeriSign),然后单击“查看证书” . 选择Details选项卡,然后单击Copy to File ...选择Base-64编码的X.509(.CER)证书将其另存为rootca.cer或类似名称 . 将其放在与其他文件相同的文件夹中 . 将它从rootca.cer重命名为rootca.crt现在我们的文件夹中应该有3个文件,我们可以从中创建PFX文件 . 这是我们需要OpenSSL的地方 . 我们可以在Windows上下载并安装它,或者只是在OSX上打开终端 .

    EDIT:

    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

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

    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
    
  • 0

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

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

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

  • 26

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

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

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

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

  • 0

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

  • 1

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

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

  • 1

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

    • 以管理员身份运行MMC

    • 使用MMC生成CSR . 按照this instructions使证书可导出 .

    • 从CA(crt p7b)获得证书后,导入它们(个人\证书和中级证书颁发机构\证书)

    • 重要提示:右键单击新证书(个人\证书)所有任务...管理私钥,并为您的帐户或所有人分配权限(有风险!) . 完成后,您可以返回先前的权限 .

    • 现在,右键单击证书并选择All Tasks..Export,您应该能够将包含私钥的证书导出为PFX文件,并且可以将其上载到Azure!

    希望这可以帮助!

  • 21

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

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

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

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

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

    选择当前类型= PEM更改为= PFX上传您的证书上传您的私钥如果您有ROOT CA证书或中间证书也上传它们设置您选择的密码,在IIS中使用单击reCaptcha以证明您不是机器人单击转换

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

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

相关问题