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

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

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

有什么工具可以做到这一点吗?或者c#中有编程的例子吗?


需要使用makecert工具。

以管理员身份打开命令提示符,输入以下命令:

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

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

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

这是一篇文章。

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


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

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

现在,在证书管理单元的本地计算机版本下导航到导入的证书。右键单击证书,选择“All Tasks > Export”。导出向导的第二页应该询问您是否要导出私钥。选择Yes。PFX选项现在将是唯一可用的选项(如果选择no,则显示灰色,并且当前用户帐户下无法导出私钥)。

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


您需要使用openssl。

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

密钥文件只是一个文本文件,其中包含您的私钥。

如果您有根CA和中间cert,那么也可以使用多个in参数将它们包括在内

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

如果你有一个捆绑的crt文件,你可以在nginx中使用,你可以把它和cert一起传入:

cat domain.name.crt | tee -a domain.name.bundled.crt
cat intermediate.crt | tee -a domain.name.bundled.crt
cat rootca.crt | tee -a domain.name.bundled.crt
openssl pkcs12 -export -out domain.name.pfx \
  -inkey domain.name.key \
  -in domain.name.bundled.crt 

您可以从这里安装openssl: openssl


我有你要求的链接。使用OpenSSL将CRT和KEY文件合并为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格式导出证书,您需要在请求证书的同一台机器上执行以下步骤。 导入的文件可以上传到服务器。


微软Pvk2Pfx命令行实用程序似乎有你需要的功能:

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

注意:如果你需要/想要/更喜欢c#解决方案,那么你可能会考虑使用http://www.bouncycastle.org/ api。


你不需要openssl或makecert或任何。你也不需要CA给你的个人密钥。我几乎可以保证,问题是你希望能够使用CA提供的密钥和cer文件,但它们不是基于“IIS方式”。

SSL证书IIS与PFX一劳永逸- SSL和IIS解释- http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

Use IIS "Server Certificates" UI to "Generate Certificate Request" (the details of this request are out of the scope of this article but those details are critical). This will give you a CSR prepped for IIS. You then give that CSR to your CA and ask for a certificate. Then you take the CER/CRT file they give you, go back to IIS, "Complete Certificate Request" in the same place you generated the request. It may ask for a .CER and you might have a .CRT. They are the same thing. Just change the extension or use the . extension drop-down to select your .CRT. Now provide a proper "friendly name" (*.yourdomain.example, yourdomain.example, foo.yourdomain.example, etc..) THIS IS IMPORTANT! This MUST match what you setup the CSR for and what your CA provided you. If you asked for a wildcard, your CA must have approved and generated a wildcard and you must use the same. If your CSR was generated for foo.yourdomain.example, you MUST provide the same at this step.


如果您正在寻找Windows图形用户界面,请查看DigiCert。我只用了这个,非常简单。

在SSL选项卡下,我首先导入了证书。然后,一旦我选择了证书,我就可以将其导出为PFX,包括带或不带密钥文件。

https://www.digicert.com/util


这是迄今为止最简单的转换方法。Cer到*。可以文件:

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

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


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

(文章相关引语如下))

Next, you have to create the .pfx file that you will use to sign your deployments. Open a Command Prompt window, and type the following command: PVK2PFX –pvk yourprivatekeyfile.pvk –spc yourcertfile.cer –pfx yourpfxfile.pfx –po yourpfxpassword where: 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文章以获得完整的文档。

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

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

Run MMC as Admin Generate the CSR using MMC. Follow this instructions to make the certificate exportable. Once you get the certificate from the CA (crt + p7b), import them (Personal\Certificates, and Intermediate Certification Authority\Certificates) IMPORTANT: Right-click your new certificate (Personal\Certificates) All Tasks..Manage Private Key, and assign permissions to your account or Everyone (risky!). You can go back to previous permissions once you have finished. Now, right-click the certificate and select All Tasks..Export, and you should be able to export the certificate including the private key as a PFX file, and you can upload it to Azure!

希望这能有所帮助!


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


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

比如这个openssl pkcs12 -inkey rootCA。输入rootCA。-export -out rootCA.pfx . pem


从这个链接:

https://serverfault.com/a/224127/569310 https://stackoverflow.com/a/49784278/7856894 https://stackoverflow.com/a/17284371/7856894

如果需要,可以在OpenSSL中使用这个简单的命令序列来生成filessl。key (SSL证书密钥文件)、filessl. key和filessl. key。SSL证书文件:

openssl genrsa 2048 > filessl.key
chmod 400 filessl.key
openssl req -new -x509 -nodes -sha256 -days 365 -key filessl.key -out filessl.crt

在此之前,您必须响应交互式表单(您可以从其他帖子中找到类似req.cnf的参考信息:https://stackoverflow.com/a/49784278/7856894)

然后,继续执行最后一个命令,它会要求您输入Export Password:

openssl pkcs12 -export -out filessl.pfx -inkey filessl.key -in filessl.crt

准备好了,它生成了.pfx(或. p12)格式的SSL证书文件:


我想推广“X证书和密钥管理器”或xca.exe,它就像OpenSSL的GUI版本。你可以通过以下步骤生成pfx文件:

在“private Keys”页签导入私钥; 在“Certificates”页签中导入证书; 生成pfx文件,选择证书,然后“导出”,格式选择PKCS #12。

就是这样。


我正在使用libreSSL v2.8.3在macbook上尝试openssl,并得到错误“没有证书匹配私钥”。我有一个域证书,2个中间证书和1个根证书。所以我使用以下命令成功地工作:

openssl pkcs12 -export -clcerts -inkey private.csr.key -in domain.name.crt -certfile intermediate1.crt -certfile intermediate2.crt -certfile root.crt -out domain.name.p12 -name "Your Name"

它将要求在导入过程中使用的密码。该命令将生成一个.p12文件,该文件可以重命名为.pfx,因为两者是相同的。


Windows不需要安装OpenSSL的解决方案

我最近试图解决同样的问题——我只有一台windows笔记本电脑,没有安装openssl(也没有足够的管理权限来安装它)。原来windows有一个内置的实用程序,叫做certutil,它能够将。crt和。key文件组合成。pfx。医生来了。

您需要创建一个新文件夹,并将.crt和关键文件放在其中。重命名两个文件,使其具有相同的名称(但扩展名不同):

{{sitename}}.crt
{{siteName}}.key

如果你的密钥文件是一个普通的txt -只是改变扩展名。key。

之后,在该文件夹中打开cmd并运行certutil -mergepfx [INPUTFILE] [OUTPUTFILE]

例子:

证书文件:“mySite.crt”

密钥文件:mySite.key

certutil命令:certutil -mergepfx mySite。crt mySite.pfx

注意:您将被要求为新创建的.pfx文件提供密码-不要忘记记忆/存储它-因为在目标系统上导入证书时将需要它。


我写了一个小控制台应用程序,它可以将PEM证书文件和私钥文件转换为一个.pfx PKCS12证书文件。 它使用BouncyCastle库。

我的Github回购:https://github.com/nklkli/PEM-to-PKCS12

请随意修改代码以创建密码保护的*.pfx。