1

通帳にパスを追加しようとすると、次の理由で失敗します。

マニフェスト署名が正常に検証されませんでした

署名用の私のコードは次のとおりです。

$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");

ありがとう!

4

1 に答える 1

0

iOS 6.1.1 以降、署名には署名日が含まれている必要があるため、コンテンツではなく証明書ファイルを使用し、PKSC7_NOATTR を削除して、次のことを試してください。

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);

それでも取り込まない場合は、証明書が有効なパス タイプ 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.)

署名ファイルは正常に見えます。エラーは、SHA1 ハッシュを計算して構築しているコードの部分にあります。manifest.json

.pkpass バンドルを見ると、マニフェストは次の 2 つの点で破損しています。

  1. 複数のオブジェクトが含まれています
  2. SHA1 値がファイルの内容と一致しません

この .pkpass バンドルの場合、manifest.json は次のようになります。

{
    "strip.png" : "f95387c0843a51dac73f1b0a3181da9c99ba3dc4",
    "strip@2x.png" : "f325a97fc6bafbe53a5e8feb7b2c509a8ceb6b10",
    "logo@2x.png" : "7b7b025774128b95e50f2bcda55e608412e95a37",
    "icon@2x.png" : "68b61c27657a0018da71c7f73626c8a891da753c",
    "icon.png" : "6b15fa477ece83fdd4f544a2381444272a0e39a0",
    "logo.png" : "7cf1d842afde33c4b14978f330cf98d05c3e57f2",
    "pass.json" : "971417ec80638736cb3392d6d5db53d554f138a4",
}

しかし、現在は次のとおりです。

{
    "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",
}
于 2013-03-22T04:40:16.453 に答える