Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存折、PHP和签名_Php_Openssl_Code Signing_Passbook - Fatal编程技术网

存折、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",
}