首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从苹果全球开发人员证书和.p12文件中提取公钥和私钥?

如何从苹果全球开发人员证书和.p12文件中提取公钥和私钥?
EN

Stack Overflow用户
提问于 2016-03-10 20:38:07
回答 1查看 1.4K关注 0票数 2

因此,我试图为存折编写功能,或者,他们现在称之为“钱包”(Wallet)。我编写了所有必要的代码来编写JSON,将文件写入临时目录,然后计算校验和并将其放回清单中。现在,我被困在了用.p12 of of passes.P12文件签署以获得所需的.der文件的部分?

代码语言:javascript
复制
<cfset signer = new rsa_signer(fileRead(expandPath("test_code/public_key.txt")),fileRead(expandPath("test_code/private_key.pem")),"SHA512withRSA")>


<cffile action="READ" file="#xtemp_folder#\manifest.json" variable="xtext">
<cfset xsignature = signer.sign(xtext)>
<!---- write to file ----->
<cffile action="WRITE" file="#xtemp_folder#\signature.der" output="#xsignature#">

<!---- create zipped file for user downloading ----->
<cf_write_log log_key="#attributes.log_key#" data="<hr>create zip files from temp holding folder..">
<cfset xzip_filename = "h:\eshowtemp\#xtemp_folder_string#.pkpass">
<cfdirectory action="LIST" directory="#xtemp_folder#" name="files">
<cf_write_log log_key="#attributes.log_key#" data="files=#files.recordcount#">
<cfzip file="#xzip_filename#" source="#xtemp_folder#">

上面的代码是我的冷融合程序的一个片段,理想情况下,它会签名并打印出所需的.pkpass文件。我已经确认这个程序与其他提供的公钥和私钥一起工作。在读取签名者的地方,我尝试将全球范围的开发人员证书导出到.pem文件中。然后,我对.p12也做了同样的操作,将其导出到一个pem文件中,并将这两个pem文件插入到rsa_signer中,没有任何结果。所以我被困在了该去的地方。

,这是我注意到的。在起作用的公钥和私钥上,它们看起来如下所示:

--开始私钥

加密..。

-开始公开密钥

加密..。

与我的2 .pem文件(苹果全球开发者证书+ passes.p12文件)相比

/Apple cert.pem

-开始证书

/加密

//pass.pem (从.p12转换而来)

friendlyName: Pass类型ID: XXX localKeyID: XXX subject=/UID=XXX/CN=Pass类型ID: XXX/OU=XXX/O=XXXC=US发行者=/C=US/O=Apple Relations/CN=Apple Worldwide Developer Relations /CN=Apple开发者关系认证机构

XXXX

这就是我的coldfusion程序不喜欢我的pem文件的原因吗?.pem文件中写着"Begin证书“,而其他的.pem则说”开始使用公钥/私钥“。

任何帮助都将不胜感激。谢谢!

https://rietta.com/blog/2012/01/27/openssl-generating-rsa-key-from-command/

EN

回答 1

Stack Overflow用户

发布于 2016-03-26 06:16:34

创建签名文件的步骤是(在获得manifest.json之后)

  1. 加载p12文件内容(通过类型id认证) -> $cert_info
  2. 使用密码解码$cert_info openssl_pkcs12_read($cert_store,$cert_info,$password) -> $cert_info将保存所有已解码的信息。 $pkey =openssl_pkey_get_private($cert‘’pkey‘,""); 并将$pkey保存到pem临时文件中。 3.1使用$cert =openssl_x509_read($ cert‘cert’)保存cert;
  3. 使用manifest.json、cert ($cert)、证书制作pkcs7文件(temp_signature) openssl_pkcs7_sign("./pass_file/manifest.json","./pass_file/temp_signature",$cert,$pkey,array(),PKCS7_BINARY分部PKCS7_DETACHED,"./AppleWWDRCA.pem")
  4. 加载temp_signature文件内容,在filename="smime.p7s“之后和之前提取数据- (substr),用base64_decode编码并保存到”签名“文件中。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35926780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档