Security 将.pfx转换为.cer
是否可以将.pfx(个人信息交换)文件转换为.cer(安全证书)文件?除非我弄错了,否则.cer不是以某种方式嵌入到了.pfx中吗?如果可能的话,我想要一些方法来提取它。我认为最简单的方法是导入它,然后使用Windows管理控制台中的证书管理器导出它 PFX文件是捆绑包。它们可以包括任意数量的私钥以及附带的X.509证书和证书颁发机构链(设置证书) 如果要提取客户端证书,可以使用 上述命令将以PEM格式输出证书。“.crt”文件扩展名由macOS和Windows处理 您在问题中提到了“.cer”扩展名,它通常用于DER编码文件。二进制编码。首先尝试使用“.crt”文件,如果不接受该文件,则可以轻松地从PEM转换为DER:Security 将.pfx转换为.cer,security,certificate,pfx,Security,Certificate,Pfx,是否可以将.pfx(个人信息交换)文件转换为.cer(安全证书)文件?除非我弄错了,否则.cer不是以某种方式嵌入到了.pfx中吗?如果可能的话,我想要一些方法来提取它。我认为最简单的方法是导入它,然后使用Windows管理控制台中的证书管理器导出它 PFX文件是捆绑包。它们可以包括任意数量的私钥以及附带的X.509证书和证书颁发机构链(设置证书) 如果要提取客户端证书,可以使用 上述命令将以PEM格式输出证书。“.crt”文件扩展名由macOS和Windows处理 您在问题中提到了“.cer”
openssl x509 -inform pem -in mycerts.crt -outform der -out mycerts.cer
我想添加一个我认为最简单的方法
从本质上讲,它与Andrew的答案是一样的,但它避免使用Windows管理控制台(直接进入导入/导出)。如果您在PowerShell中工作,您可以使用类似以下内容,给定一个pfx文件InputBundle.pfx,以生成DER编码的(二进制)证书文件输出证书.der:
Get-PfxCertificate -FilePath InputBundle.pfx |
Export-Certificate -FilePath OutputCert.der -Type CERT
为了清晰起见,添加了换行符,但您当然可以在一行中完成这一切
如果您需要ASCII/Base64编码的PEM格式的证书,您可以按照其他地方的说明采取额外的步骤,例如:
如果需要导出为DER编码以外的其他格式,可以将导出证书的-Type
参数更改为使用.NET支持的类型,如帮助导出证书-详细信息中所示:
-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.
-Type
指定证书导出的输出文件类型,如下所示。
--SST:Microsoft序列化证书存储(.SST)文件格式,可以包含一个或多个证书。这是多个证书的默认值。
--证书:一种.cer文件格式,其中包含一个DER编码的证书。这是一个证书的默认值。
--P7B:PKCS#7文件格式,可包含一个或多个证书。
可能与OP的Q无关,但我尝试了所有带有不同标志的openssl语句,同时尝试连接PHP\SoapClient(…)
,3天后,我终于找到了一个适合我的解决方案
吉特巴斯
首先,您必须输入您的证书密码一次,然后输入不同的密码代码>两次。后者可能对所有能够访问代码的人都可用
PHP
我尝试过这样做,但当我选择导出私钥时,我禁用了.cer(DER-encoded)选项。MidleSigner实用程序无论如何都需要provatekey。导入时必须选中“将此密钥标记为可导出”框。如何在Windows中访问证书管理器:打开Windows证书管理器的更简单方法是在命令提示下键入“certmgr.msc”。@AndrewCox,然而,在幕后,将其标记为可导出与不将其标记为可导出之间有任何区别。或者它只是一个UI选项?+1,用于解释文件内容,并提供命令。当我尝试它时,“Mac验证错误:无效密码?”。我不知道任何密码,我只知道我的供应商提供的文件。当您试图使用证书的私钥转换证书时,例如用于Fiddler@Berk,除了OpenSSL,Windows cmd有办法吗?导出证书仅适用于某些版本,如Win 8.1和Server 2012 R2。如果你在其他版本中,比如Win7,那就没有运气了!它应该出现在Server2012和Windows8.0()中,但Windows7等的优点是好的@IanGallagher,这与OpenSSL的选项相比如何?如果你不想安装OpenSSL的东西,这会更方便!由于您仍然需要打开certmgr.msc才能将其导出,因此速度不会快很多。。。。
Get-PfxCertificate -FilePath InputBundle.pfx |
Export-Certificate -FilePath OutputCert.der -Type CERT
-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.
$ cd path/to/certificate/
$ openssl pkcs12 -in personal_certificate.pfx -out public_key.pem -clcerts
<?php
$wsdlUrl = "https://example.com/service.svc?singlewsdl";
$publicKey = "rel/path/to/certificate/public_key.pem";
$password = "DIFFERENT_PASSWORD!";
$params = [
'local_cert' => $publicKey,
'passphrase' => $password,
'trace' => 1,
'exceptions' => 0
];
$soapClient = new \SoapClient($wsdlUrl, $params);
var_dump($soapClient->__getFunctions());