如何从 .SPC(代码签名证书)和 .PKCS12(私钥)生成 PKCS12 (.p12)?
Posted
技术标签:
【中文标题】如何从 .SPC(代码签名证书)和 .PKCS12(私钥)生成 PKCS12 (.p12)?【英文标题】:How to generate a PKCS12 (.p12) from a .SPC (code signing certificate) and .PKCS12 (private key)? 【发布时间】:2012-02-25 02:20:54 【问题描述】:我有一个来自 GoDaddy 的代码签名证书 (SPC) 文件。该文件是从现有的私钥生成的:
-----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 -out full_code_signing_chain.pkcs12
但是,运行时我会得到: 将“屏幕”加载到随机状态 - 完成 没有证书与私钥匹配
但是,证书 (SPC) 用于私钥。我做错了什么?!
背景:我正在尝试生成一个 .p12 文件签名 Adobe AIR 应用程序
【问题讨论】:
【参考方案1】:说实话,我完全无法理解您要做什么。
您取回了 SPC 文件,它只是带有您的证书的 #PKCS7 der 编码。
你也有你的私钥。
您需要做的就是将证书导入 pkcs12 密钥库,以使用您的私钥获得签名证书。
【讨论】:
虽然这本身并没有回答问题,但它实际上导致了答案......知道 SPC 只是 DER/PKCS7 我使用openssl pkcs7 -inform DER -on godaddy.spc -outform PEM -out out.p12
来获得我需要的东西。
@user72003 命令中有语法错误... -on 应该是 -in 给出:openssl pkcs7 -inform DER -in godaddy.spc -outform PEM -out out.p12
【参考方案2】:
以下是我从 GoDaddy 的 .spc 文件创建 .p12 文件的方法: 1. 右键单击 myCert.spc,安装证书(将 .spc 安装到 Windows 中) 2. 双击 myCert.spc(在 certmgr 中打开),导出为 .cer 文件。 3. 将该 .cer 文件导入 Firefox。 4. 使用 Firefox:备份刚刚导入的内容以创建 .p12 文件。
然后您可以使用该 .p12 文件对您的代码进行签名。
【讨论】:
【参考方案3】:要从私钥和 SPC 文件创建 P12 信任库,请使用 OpenSSL 执行以下步骤:
-
(可选):从旧的 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
【讨论】:
以上是关于如何从 .SPC(代码签名证书)和 .PKCS12(私钥)生成 PKCS12 (.p12)?的主要内容,如果未能解决你的问题,请参考以下文章
ktor sslConnector 从 jar p12 pkcs12 jks 密钥库和 mtls 相互 ssl 连接中服务/读取
通过 Windows 中的 OpenSSL 为我的 Android 应用程序创建带有自签名证书的 PKCS#12 文件