将.pfx转换为.cer


155

是否可以将.pfx(个人信息交换)文件转换为.cer(安全证书)文件?除非我没有记错,否则.cer是否会以某种方式嵌入.pfx中?如果可能的话,我想以某种方式提取它。

Answers:


90

我相信,最简单的方法是使用Windows管理控制台中的证书管理器将其导入然后导出。


5
我尝试这样做,但是当我选择导出私钥时,我将禁用.cer(DER编码)选项。和midletsigner效用需要provatekey无论如何..
Jigar乔希

3
导入时必须选中该框,该框上显示“将该键标记为可导出”
Andrew Cox 2010年

11
如何在Windows中访问证书管理器:msdn.microsoft.com/en-us/library/ms788967.aspx
James White,

12
打开Windows证书管理器的更简单方法是在命令提示符下键入“ certmgr.msc”。
2015年

@AndrewCox,但是,在将其标记为可导出与不将其标记为可导出之间,幕后有什么区别。还是仅仅是UI选项?
Pacerier '16

212

PFX文件是PKCS#12个人信息交换语法标准捆绑包。它们可以包括任意数量的私钥以及随附的X.509证书和证书颁发机构链(设置证书)。

如果要提取客户端证书,则可以使用OpenSSL的PKCS12工具

openssl pkcs12 -in input.pfx -out mycerts.crt -nokeys -clcerts

上面的命令将以PEM格式输出证书。macOS和Window都处理“ .crt”文件扩展名。

您在问题中提到了“ .cer”扩展名,该扩展名通常用于DER编码文件。二进制编码。首先尝试“ .crt”文件,如果不接受,可以轻松地将其从PEM转换为DER:

openssl x509 -inform pem -in mycerts.crt -outform der -out mycerts.cer

9
+1用于解释文件的含义,除了提供命令之外。
约书亚·德雷克

“ Mac验证错误:密码无效?” 当我尝试过。我不知道任何密码,只有供应商提供的文件。
Brian Knoblauch

1
当您尝试将证书转换为其私钥时,IT似乎放弃了“ -nokeys”,例如与Fiddler一起使用
Gert van den Berg

@Berk,除了OpenSSL,Windows cmd还能执行任何操作吗?
Pacerier '16

45

如果您在PowerShell中工作,则可以在给定pfx文件InputBundle.pfx的情况下使用类似以下的内容来生成DER编码的(二进制)证书文件OutputCert.der

Get-PfxCertificate -FilePath InputBundle.pfx | 
Export-Certificate -FilePath OutputCert.der -Type CERT

添加了换行符以使内容更加清晰,但是您当然可以将所有内容都放在一行中。

如果您需要ASCII / Base64编码的PEM格式的证书,则可以按照其他地方的说明,采取额外的步骤,例如:https : //superuser.com/questions/351548/windows-integrated-utility-to-convert从上到下

如果需要导出为与DER编码不同的格式,则可以将-TypeExport-Certificate 的参数更改为使用.NET支持的类型,如help Export-Certificate -Detailed

-Type <CertType>
    Specifies the type of output file for the certificate export as follows. 
     -- SST: A Microsoft serialized certificate store (.sst) file format which can contain one or more certificates. This is the default value for multiple certificates. 
     -- CERT: A .cer file format which contains a single DER-encoded certificate. This is the default value for one certificate. 
     -- P7B: A PKCS#7 file format which can contain one or more certificates.

不过,Export-Certificate仅适用于某些版本,例如Win 8.1和Server 2012 R2。如果您使用的是其他版本,例如Win 7,那么不要走运!
Deep-B

1
它应该存在于Server 2012和Windows 8.0(technet.microsoft.com/zh-cn/library/hh848628 ( v=wps.620 ) .aspx)中,但是关于Windows 7的好处!
伊恩·加拉格尔

@IanGallagher,这与OpenSSL的选项相比如何?
Pacerier '16

如果您不想安装OpenSSL内容,这将更加方便!
莱昂纳多·埃雷拉

25

我想添加一种我认为最简单的方法。

  1. 只需右键单击pfx文件,然后单击向导中的“安装”,然后将其添加到商店(我已添加到“个人商店”中)。

  2. 在开始菜单中,键入certmgr.msc并转到CertManager程序。

  3. 找到您的pfx证书(顶部的标签是各个商店),单击“导出”按钮并按照向导进行操作(有一个选项可以导出为.CER)

本质上,它与安德鲁的答案具有相同的作用,但是避免使用Windows管理控制台(直接进入导入/导出)。


速度并不快,因为您仍然必须打开certmgr.msc来导出它....
Pacerier's

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.