存折、PHP和签名
每当我尝试将我的通行证添加到存折时,由于以下原因失败: 清单签名未成功验证 我的签名代码如下:存折、PHP和签名,php,openssl,code-signing,passbook,Php,Openssl,Code Signing,Passbook,每当我尝试将我的通行证添加到存折时,由于以下原因失败: 清单签名未成功验证 我的签名代码如下: $privKey = "certs/key.pem"; $keyPassword = "PASSWORD"; $wwdr = "certs/wwdr.pem"; $cert = file_get_contents("certs/certificate.pem"); $certData = openssl_x509_read($cert); openssl_pkcs7_sign($path . "/"
$privKey = "certs/key.pem";
$keyPassword = "PASSWORD";
$wwdr = "certs/wwdr.pem";
$cert = file_get_contents("certs/certificate.pem");
$certData = openssl_x509_read($cert);
openssl_pkcs7_sign($path . "/" . "manifest.json",
$path . "/" . "signature",
$certData,
array("file://" . $privKey, $keyPassword),
array(),
PKCS7_BINARY|PKCS7_NOATTR|PKCS7_DETACHED,
"certs/wwdr.pem");
谢谢 尝试以下操作,使用证书文件而不是其内容并删除PKSC7_NOATTR,因为从iOS 6.1.1开始,签名应包含签名日期
openssl_pkcs7_sign($path . "/manifest.json",
$path . "/signature",
'file://' . $fullPathTo . 'certs/certificate.pem',
array('file://' . $fullPathTo . $privKey, $keyPassword),
array(),
PKCS7_BINARY|PKCS7_DETACHED,
$fullPathTo . $wwdr);
openssl_pkcs7_sign创建电子邮件附件,因此您还需要提取签名部分,因为这是.pkpass捆绑包所需的全部内容
// Read the signature file
$email = file_get_contents($path . "/signature");
// Extract the signature using a regex
$pattern = "/.*?Content-Disposition: attachment; filename=\".*?\"(.*?)-----.*?/sm";
preg_match_all($pattern, $email, $signature);
// Base64 encode the part of result we need
$signature = base64_decode($signature[1][0]);
// Write contents to a new signature file
file_put_contents ($path . "/signature", $signature);
如果仍然无法接收,请检查您的证书是否为有效的Pass Type ID证书,以及您的私钥是否是证书的正确私钥。您甚至可能需要检查PHP日志,以验证openssl_pkcs7_sign命令是否正确执行
更新
当我尝试将您的.pkpass捆绑包添加到Passbook时,在设备控制台中出现以下错误
<Warning>: Invalid data error reading pass pass.datafarms.peppermints/123456. Manifest JSON didn't parse: The operation couldn’t be completed. (Cocoa error 3840.)
但目前:
{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}
你是否正确地使用WWDR获取数据?我应该以不同的方式获取数据吗?检查这个是的,我在他的代码中伪造了,但没有看到我的代码在哪里。尝试将PKCS7|u BINARY | PKCS7| NOATTR | PKCS7| u DETACHED更改为PKCS7|u BINARY | PKCS7| u DETACHED我尝试了你上面告诉我的操作,但仍然出现相同的错误,我知道我的证书应该是有效的,我在php日志中没有发现任何错误。你能发布一个链接到你的脚本创建的.pkpass包吗。这应该可以提供一些失败原因的线索。请参阅更新的答案-问题在于您的manifest.json与您的签名不符。在修复清单后,我现在出现此错误,猜测我的压缩错误了?MobileSafari[5936]:BOM无法提取存档:无法读取PKZip签名MobileSafari[5936]:Passpook Pass下载失败:该Pass无效,无法读取。您可以发布到另一个.pkpass的链接吗?
{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}{
"strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8",
"strip@2x.png" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26",
"logo@2x.png" : "f36816f173aa9011186b80b140dfc49395d31051",
"icon@2x.png" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad",
"icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d",
"logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8",
"pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb",
}