草庐IT

关于ios:提供的passTypeIdentifier或teamIdentifier可能与你的证书不匹配,或者证书信任链无法验证

codeneng 2023-03-28 原文

The passTypeIdentifier or teamIdentifier provided may not match your certificate, or the certificate trust chain could not be verified

每当我尝试通过按"添加"按钮安装手动打包的存折应用程序时,标题中都会出现错误。我可以成功安装使用 \\'signpass\\' 工具打包的存折应用程序,但我现在需要在 unix 服务器上创建动态包。

我一直在尝试将我的存折应用程序与来自网络的各种包手动打包,每个包都给我同样的错误。这是我尝试过的几个软件包:
https://github.com/maater/TCSH-PKPass
https://github.com/devartis/passbook
https://github.com/pcperini/PyPKPass

这是创建和压缩的 pass.json(请注意,teamIdentifier 和 passTypeIdentifier 都已填充):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
{
 "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\
2008 General\
2008 Primary\
2004 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/"
      }
    ]
  }
}

我按照苹果上的步骤生成我的 Pass Type ID 证书,下载并安装在我的 Keychain Access 中。然后我将其导出为 "Certificates.p12" 并运行以下命令以生成 certificate.pem 和 key.pem:

1
2
3
4
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

创建清单文件后,我运行:

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

我通过将 Apple 全球开发者关系证书颁发机构导出为隐私增强邮件文件来创建 wwdr.pem。

我在某处读到您需要安装 Apple 根证书颁发机构(我已经安装了),所以这里是我已安装的证书列表:

  • Apple 应用程序集成证书颁发机构 Apple 根 CA
  • Apple 根证书颁发机构申请全球开发者关系
  • 认证机构
  • 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 开发者:Matthew Snider 通行证类型 ID:
  • pass.votizen.membership

很明显,我使用的证书或我打包它的方式有问题。我不知道我做错了什么。我希望有人有一个想法。


我想通了。在创建 p12 文件时,我没有意识到您需要同时选择证书和私钥。我假设导出证书也将包含私钥,但事实并非如此。当您在 Keychain Access 中导出 Pass Type ID 时,请确保它显示"Export 2 Items",而不是"Export Pass Type ID: ..."。

  • 很高兴你发现了你的问题!顺便说一句,PyPKPass 只需要私钥进行签名,从中派生证书信息。
  • 执行尝试时出现以下错误! PKPass.init(数据:对象为!数据)。无效数据错误读取 pass.airarabia.airarabia/62488078_003_SHJ_CGP_2388312279。提供的 passTypeIdentifier 或 teamIdentifier 可能与您的证书不匹配,或者无法验证证书信任链。致命错误:\\'try!\\' 表达式意外引发错误:Error Domain=PKPassKitErrorDomain Code=1 "The pass cannot be read because it isna€?t valid." API 调用检索的数据在 Andriod 中工作。
  • @MuhammadMaqsood 你能解决这个问题吗?我遇到了同样的错误。
  • @Stephan,对我来说,问题在于我们服务器端的证书到期,该服务器端正在与 Apple 服务器通信以生成 PKPASS。我创建了一个新证书并将其替换为过期的证书,它开始工作。


我知道这是一个古老的问题,但最近我又遇到了。问题是"新"Apple WWDR 证书与同样由 Apple 创建的 pass 证书不兼容。

解决方案是在签署通行证时使用"旧"WWDR 证书,该证书将于 2023 年到期。

  • 这是我花了无数小时搜索的任何地方都没有提到的解决方案。谢谢好先生。你是救命恩人!!!
  • 它已过期,但它可以工作......而新的却没有!

有关关于ios:提供的passTypeIdentifier或teamIdentifier可能与你的证书不匹配,或者证书信任链无法验证的更多相关文章

  1. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  2. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  3. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  4. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  5. ruby - 为什么不能使用类IO的实例方法noecho? - 2

    print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上

  6. ruby-on-rails - 关于 Ruby 的一般问题 - 2

    我在我的rails应用程序中安装了来自github.com的acts_as_versioned插件,但有一段代码我不完全理解,我希望有人能帮我解决这个问题class_eval我知道block内的方法(或任何它是什么)被定义为类内的实例方法,但我在插件的任何地方都找不到定义为常量的CLASS_METHODS,而且我也不确定是什么here,并且有问题的代码从lib/acts_as_versioned.rb的第199行开始。如果有人愿意告诉我这里的内幕,我将不胜感激。谢谢-C 最佳答案 这是一个异端。http://en.wikipedia

  7. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

  8. ruby - 关于 Ruby 中 Dir[] 和 File.join() 的混淆 - 2

    我在Ruby中遇到了一个关于Dir[]和File.join()的简单程序,blobs_dir='/path/to/dir'Dir[File.join(blobs_dir,"**","*")].eachdo|file|FileUtils.rm_rf(file)ifFile.symlink?(file)我有两个困惑:首先,File.join(@blobs_dir,"**","*")中的第二个和第三个参数是什么意思?其次,Dir[]在Ruby中有什么用?我只知道它等价于Dir.glob(),但是,我对Dir.glob()确实不是很清楚。 最佳答案

  9. elasticsearch源码关于TransportSearchAction【阶段三】 - 2

    1.回顾.TransportServicepublicclassTransportServiceextendsAbstractLifecycleComponentTransportService:方法:1publicfinalTextendsTransportResponse>voidsendRequest(finalTransport.Connectionconnection,finalStringaction,finalTransportRequestrequest,finalTransportRequestOptionsoptions,TransportResponseHandlerT>

  10. 关于Qt程序打包后运行库依赖的常见问题分析及解决方法 - 2

    目录一.大致如下常见问题:(1)找不到程序所依赖的Qt库version`Qt_5'notfound(requiredby(2)CouldnotLoadtheQtplatformplugin"xcb"in""eventhoughitwasfound(3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentationfault,或者Illegalinstruction(coredumped)非法指令(4)ldd应用程序或者库,查看运行所依赖的库时,直接报段错误二.问题逐个分析,得出解决方法:(1)找不到程序所依赖的Qt库version`Qt_5'

随机推荐