2012-02-02 150 views
1

我有一个来自GoDaddy的代码签名证书(SPC)文件。从现有的私有密钥生成文件:如何从.SPC(代码签名证书)和.PKCS12(私钥)生成PKCS12(.p12)?

-----BEGIN RSA PRIVATE KEY----- 
MIIEpAIBAAKCAQEAvcG2SEalg9pvkTvtMI8cZg07tVA0RuK7LeGlFdk1smXgqrsH 
.... snipped .... 
MURwR0FXgNAuFNQ0yBNFNW2+o9uBceLuCSUalgi4pQw1uBmP5QkUYA== 
-----END RSA PRIVATE KEY----- 

我生成一个证书签名请求,并发送这GoDaddy的:

-----BEGIN CERTIFICATE REQUEST----- 
MIICiDCCAXACAQAwQzFBMD8GCSqGSIb3DQEJARYyYXBwbGVAdGVrNC1uZXdtZWRp 
.... snipped .... 
nJwd9pSDPuYaNHl33N1BJkXFusG7ta0D6UjisA== 
-----END CERTIFICATE REQUEST----- 

GoDaddy的然后回到我的SPC文件。我的研究表明,通常你会有一个SPC/PVK对,但显然我的私钥不是PVK类型。 我试过几种方法(pvkimprt,pvk2pfx,openssl,keytool),但似乎无法将我的密钥转换为PVK类型或我的SPC独立于PKCS12类型,而证书(SPC)和私钥都不在一个密钥存储。

,我似乎需要做这一步的命令是: OpenSSL的PKCS12 -in cert_from_godaddy.spc -inkey private.key -export退房手续full_code_signing_chain.pkcs12

但是,在运行,我只是得到: 将'screen'加载到随机状态 - 完成 没有证书匹配私钥

但是,证书(SPC)是用于私钥的。我究竟做错了什么?!

背景:我试图生成.p12文件签名Adobe AIR应用程序

回答

1

说实话,我一点都明白你正在尝试做的。

您找回了SPC文件,它只是您的证书#PKCS7 der编码。

你也有你的私钥。

您只需将证书导入到pkcs12密钥库以使用您的私钥签署证书即可。

+2

虽然这并没有回答这个问题每本身,它实际上导致了答案...知道SPC只是DER/PKCS7我用'openssl pkcs7 -inform DER -on godaddy.spc -outform PEM -out out.p12'来得到我所需要的。 – user72003 2012-02-06 09:49:28

+0

很高兴知道:) – Cratylus 2012-02-06 15:56:56

+2

@ user72003命令中有一个语法错误... -on应该在 - 给予: 'openssl pkcs7 -inform DER -in godaddy.spc -outform PEM -out out.p12 ' – 2012-03-20 00:21:25

0

这里是我从GoDaddy的.SPC文件创建的.p12文件: 1.右击myCert.spc,安装证书(在.SPC安装到Windows) 2.双击myCert.spc(开它在certmgr中),导出到一个.cer文件。 3.将.cer文件导入Firefox。 4.使用Firefox:备份您刚导入的内容以创建.p12文件。

然后,您可以使用该.p12文件签署您的代码。

0

从一个私钥和一个SPC文件中创建一个P12信任做的OpenSSL以下步骤:

  1. (可选):提取从旧P12信任私钥:

openssl pkcs12 -in old.p12 -nocerts -out privateKey.pem

  • 提取从SPC文件的证书链:
  • openssl pkcs7 -inform DER -outform PEM -in godaddy.spc -print_certs > certificates.pem

  • 创建新的P12信任:
  • openssl pkcs12 -export -out new.p12 -inkey privateKey.pem -in certificates.pem