繁体   English   中英

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

[英]How would I extract the public and private keys from the apple world wide developer certificate and .p12 file?

所以我正在尝试为存折编写功能,或者他们现在称之为“钱包”。 我编写了所有必要的代码来编写 JSON,将文件写入临时目录,然后计算校验和并放回清单中。 现在我被困在我用pass.P12文件的.p12签署Apple全球开发人员证书以获得所需的.der文件的部分?

<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 中,但没有运气。 所以我被困在从这里去哪里。

这是我注意到的。 在有效的公钥和私钥上,它们看起来像这样:

-----开始私钥-----

加密.....

-----结束私钥-----

-----开始公钥-----

加密... -----END PUBLIC KEY-----

与我的 2 个 .pem 文件(Apple 全球开发者证书 + pass.p12 文件)相比

///苹果开发证书.pem

-----开始认证-----

///加密

-----结束证书-----

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

Bag Attributes FriendlyName: Pass Type ID: XXX localKeyID: XXX subject=/UID=XXX/CN=Pass Type ID: XXX/OU=XXX/O=XXXC=US issuer=/C=US/O=Apple Inc./OU =Apple Worldwide Developer Relations/CN=Apple Worldwide Developer Relations Certification Authority -----BEGIN CERTIFICATE-----

XXXX -----结束证书-----

这可能是我的 Coldfusion 程序不喜欢我的 pem 文件的原因吗? .pem 文件说“开始证书”,而其他 pem 说“开始公钥/私钥”。

任何帮助将非常感激。 谢谢!

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

创建签名文件的步骤是(在获取 manifest.json 之后)
1.加载p12文件内容(通过type id认证)-> $cert_info
2. 使用密码解码 $cert_info
openssl_pkcs12_read($cert_store, $cert_info, $password) -> $cert_info 将保留所有解码信息 3. 通过使用从 $cert_info 获取私钥
$pkey = openssl_pkey_get_private($cert_info['pkey'], "");
并将 $pkey 保存到 pem 临时文件中
3.1 使用 $cert = openssl_x509_read($cert_info['cert']); 保存证书信息;
4.使用manifest.json、cert info($cert)、Apple World Wide Developer Certificate制作pkcs7文件(temp_signature)
openssl_pkcs7_sign("./pass_file/manifest.json", "./pass_file/temp_signature", $cert, $pkey, array(), PKCS7_BINARY | PKCS7_DETACHED, "./AppleWWDRCA.pem")
5.加载temp_signature文件内容并提取filename="smime.p7s"之后和------(substr)之前的数据并用base64_decode编码并保存到'signature'文件中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM