如何从证书和私钥创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,无论是否有密钥文件。
你不需要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。
编辑:
-
有关于如何安装证书的逐步信息的支持链接。
-
成功安装后,导出证书,select
.pfx
格式,包含私钥。重要注意事项:要以.pfx格式导出证书,您需要遵循您请求证书的同一台计算机上的步骤 。
-
导入的文件可以上传到服务器。
您需要使用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
以下是请求的场景使用的步骤。
- select当前types= PEM
- 更改= PFX
- 上传您的证书
- 上传您的私钥
- 如果您有ROOT CA证书或中级证书也可以上传
- 设置您在IIS中使用的密码
- 点击reCaptcha来certificate你不是一个机器人
- 点击转换
这就是你应该有一个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,而无需安装另一个程序。