2012-10-11 26 views
5

我隨時嘗試通過按「添加」按鈕安裝手動打包的存摺應用程序,在標題中出現錯誤。我可以成功安裝使用'signpass'工具打包的存摺應用程序,但我現在需要在unix服務器上創建動態包。提供的passTypeIdentifier或teamIdentifier可能與您的證書不匹配,或證書信任鏈無法驗證

我一直在試圖手動打包我的存摺應用程序與各種包從網絡,每個給我同樣的錯誤。以下是我已經嘗試了幾個包: https://github.com/maater/TCSH-PKPass https://github.com/devartis/passbook https://github.com/pcperini/PyPKPass

這是一種創建和壓縮的pass.json(注意teamIdentifier和passTypeIdentifier都填充) :

{ 
    "formatVersion" : 1, 
    "passTypeIdentifier" : "pass.votizen.membership", 
    "serialNumber" : "ASDF", 
    "webServiceURL" : "https://www.votizen.com/passbook/", 
    "authenticationToken" : "AUTH_TOKEN", 
    "teamIdentifier" : "MY_TEAM_IDENTIFIER", 
    "organizationName" : "Matthew Snider", 
    "description" : "Your voter registration card", 
    "logoText" : "VOTIZEN", 
    "labelColor": "#B7B0A8", 
    "foregroundColor" : "#5F6062", 
    "backgroundColor" : "#FCFAF5", 
    "generic" : { 
    "headerFields": [ 
     { 
     "key" : "reg_date", 
     "label": "VOTER SINCE", 
     "value" : "2002" 
     } 
    ], 
    "primaryFields" : [ 
     { 
     "key" : "party", 
     "label": "REGISTERED PARTY", 
     "value" : "Democrat" 
     } 
    ], 
    "secondaryFields" : [ 
     { 
     "key" : "election", 
     "label" : "NEXT ELECTION", 
     "value" : "November 6, 2012" 
     }, 
    ], 
    "auxiliaryFields" : [ 
     { 
     "key" : "polling_place", 
     "label" : "POLLING PLACE", 
     "value" : "268 E Julian Street, San Jose, CA 95112", 
     "textAlignment" : "PKTextAlignmentLeft" 
     } 
    ], 
    "backFields" : [ 
     { 
     "key" : "elections", 
     "label" : "ELECTIONS YOU VOTED IN", 
     "value" : "2010 General\n2008 General\n2008 Primary\n2004 General" 
     }, 
     { 
     "key" : "polling", 
     "label" : "DIRECTIONS TO YOUR POLLING PLACES", 
     "value" : "https://maps.apple.com/maps?q=268+E+Julian+Street,+San+Jose,+CA+95112" 
     }, 
     { 
     "key" : "website", 
     "label" : "Powered by Votizen", 
     "value" : "https://www.votizen.com/" 
     } 
    ] 
    } 
} 

我跟着蘋果的步驟生成我的通行證類型ID證書,下載,並安裝在我的鑰匙串訪問。然後我出口爲「Certificates.p12」並運行以下產生certificate.pem和key.pem:清單文件被創建我跑

set P12 = Certificates.p12 
sef PASSWORD = MY_PASSWORD 
openssl pkcs12 -passin pass:$PASSWORD -in "$P12" -clcerts -nokeys -out certificate.pem 
openssl pkcs12 -passin pass:$PASSWORD -in "$P12" -nocerts -out key.pem -passout pass:$PASSWORD 

後:

openssl smime -passin pass:$PASSWORD -binary -sign -certfile wwdr.pem -signer certificate.pem -inkey key.pem -in manifest.json -out signature xs-outform DER 

我創建的wwdr.pem將Apple Worldwide Developer Relations證書頒發機構作爲隱私增強郵件文件導出。

我讀的地方,你需要安裝蘋果的根證書頒發機構(我有),所以這裏是我已經安裝了證書的列表:

  • 蘋果應用集成認證機構蘋果根CA
  • 蘋果根證書頒發機構申請全球開發者關係
  • 認證機構
  • com.apple.idms.appleid.prd.4f3756614a59746e554a36344e6b55426b64576441413d3d
  • com.apple.ubiquity.peer-uuid.207240B0-758A-4C1E-B173-D1B70FF03533
  • com.apple.ubiquity.peer-uuid.C5D1968F-8923-48E4-A09D-8C9AE485A88B
  • com.apple。 ubiquity.ssl-cert.C5D1968F-8923-48E4-A09D-8C9AE485A88B
  • iPhone開發者:馬修·斯奈德通型ID:
  • pass.votizen.membership

顯然,有什麼不對的證書我正在使用或我如何包裝它。我不知道我在做什麼錯。我希望有人有一個想法。

回答

14

我想通了。我沒有意識到創建p12文件時需要選擇證書和私鑰。我認爲導出證書也會包含私鑰,但事實並非如此。在鑰匙串訪問中導出通行證類型ID時,請確保它顯示「導出2個項目」,而不是「導出通行證類型ID:...」。

+0

很高興你知道你的問題了! BTW PyPKPass只需要私鑰進行簽名,從中派生出證書信息。 –

+0

AMEN to this answer duuuude –