Xcode 提交到Mac应用商店时,会不断给出;“无效签名”;适用于app&x27;s安装程序

Xcode 提交到Mac应用商店时,会不断给出;“无效签名”;适用于app&x27;s安装程序,xcode,mac-app-store,code-signing-certificate,productbuild,productsign,Xcode,Mac App Store,Code Signing Certificate,Productbuild,Productsign,我正在尝试向Mac app Store提交一个应用程序(使用Qt 5.4.2(怀疑它是否重要,但包括以防万一)),出于某种原因,我不断收到以下错误: 签名无效-当您对应用程序的签名时,会发生此错误 安装程序错误。此过程需要两个证书: “第三方Mac开发者应用程序”证书和“第三方Mac应用程序” 开发者安装程序”证书。在签署软件包时,您需要 确保您正在使用安装程序证书对包进行签名。 确保在通过提交应用程序时指定此证书 Xcode管理器或从命令运行productbuild时 线路 当我使用Xcode

我正在尝试向Mac app Store提交一个应用程序(使用Qt 5.4.2(怀疑它是否重要,但包括以防万一)),出于某种原因,我不断收到以下错误:

签名无效-当您对应用程序的签名时,会发生此错误 安装程序错误。此过程需要两个证书: “第三方Mac开发者应用程序”证书和“第三方Mac应用程序” 开发者安装程序”证书。在签署软件包时,您需要 确保您正在使用安装程序证书对包进行签名。 确保在通过提交应用程序时指定此证书 Xcode管理器或从命令运行productbuild时 线路

当我使用Xcode6.4运行10.10.4时,我在应用程序加载程序中遇到了这个错误。在做了通常的搜索之后,我能找到的关于这个问题的所有参考文献都是3-4年前的。在一个旧的答案中,有人提到升级OSX和Xcode为他们解决了这个问题,所以我想这到底是怎么回事

我升级到OSX 10.11.13,并使用Xcode 7.2.1(以及应用程序加载器3.4(902))进行编译,起初我认为“哦,嘿!错误消失了!”因为应用程序加载器不再显示它。然而,现在我在电子邮件中得到同样的错误(如上所示),一旦应用程序加载程序上传它

我有一个Python脚本,它在Qt框架中进行了大量的巫毒复制,对二进制文件进行了修复和签名,最后两件事是创建PKG文件并对其进行签名。起初,我是分两步完成的。对于傻笑,我尝试在
productbuild
步骤中添加
--sign
参数,但得到了相同的结果。这些命令如下所示:

print ("Creating the PKG")
subprocess.call([r'/usr/bin/productbuild', 
    r'--component',
    bundleFolder+ '/MyApp.app',
    r'/Applications',
    r'MyApp-Installer.pkg',
    r'--sign',
    r'3rd Party Mac Developer Installer: My Name (12345XXXX)',
])

#print ("Creating the Signed PKG")
#subprocess.call([r'/usr/bin/productsign', 
#   r'--sign',
#   r'3rd Party Mac Developer Installer: My Name (12345XXXX)',
#   r'MyApp-Installer.pkg',
#   r'MyApp-Installer-Signed.pkg'
#])
另外,FWIW,这是我一年多来第一次尝试更新应用程序(我知道:()这是一台新机器。因此,我删除了开发者门户(Developer.apple.com)中的证书,重新创建它们,然后导入/安装/下载它们。实际上,我已经多次尝试解决这个问题。上次我是通过Xcode创建它们的。因此Keychain Access看起来像:

我在开发者门户中的视图如下所示:

然而,我可能会提到的另一件事(我不确定它是否重要),每次我将这些新证书添加到Keychain中,无论是在Xcode中还是主要创建、下载和导入证书,我都必须右键单击证书,然后进入“获取信息->信任”并将“代码签名”从“未指定值”更改为“未指定值”“永远信任”

我试图提供很多细节,希望有人能帮助我找出我做错了什么。如果有人有任何建议或想法,我将非常感激!

两种可能的解决方案 我两次遇到这个问题,每次都是出于不同的原因

第一次,我检查keychain中的证书,我发现了重复的证书。我删除了重复的证书(保留那些过期时间最长的证书),问题解决了

第二次,我换了一台新的笔记本电脑作为我的开发机器,我的钥匙链中没有相关的证书。我从下载并安装了它们,问题解决了


因此,我猜这个问题与密钥链中的证书有关。只要确保您拥有正确的证书集,没有丢失、重复、过期。

结果是我的根证书过期了!这也解释了(我想)为什么我必须执行“获取信息”-上面提到的事情。但是,我遵循了以下链接中的步骤,到目前为止它看起来不错: