我有一个应用程序,用于在钥匙串中存储用户名和密码.在处理Xcode 3时,一切都运行正常,我最近搬到Xcode 4,现在当我运行应用程序时,我得到一个提示:
Application wants to use your confidential information stored in keychain" in your keychain.
点击后总是允许我看到应用程序添加到钥匙串项目的访问控制列表中,但每次运行应用程序时都会得到.
再次点击Always allow后,我看到访问控件有两个相同应用的实例.似乎OS认为这是一个新的应用程序.
任何想法都赞赏.
我认为问题在于您的签名的指定要求导致它不接受自身作为“同一应用程序”(用于钥匙串目的)。
\n\n造成此\xe2\x80\x94 的一个常见原因(我认为这是您的\xe2\x80\x94)是使用开发人员 ID 应用程序证书,没有指定要求,并且没有安装中间证书。
\n\n标准开发者 ID 要求如下所示:
\n\ndesignated => anchor apple generic and \nidentifier \\"com.example.appName\\" and \n((cert leaf[field.1.2.840.113635.100.6.1.9] exists) or \n (certificate 1[field.1.2.840.113635.100.6.2.6] exists and \n certificate leaf[field.1.2.840.113635.100.6.1.13] exists  and \n certificate leaf[subject.OU] = \\"1AZBYCXDW9V\\" ))\n如果您想自己构建它,则必须将标识符替换为包标识符,并将 subject.OU 替换为证书中的值。(如果您在钥匙串访问中双击它,它应该被列为组织单位。)然后您可以添加到“其他代码签名标志”:
\n\n--requirements "=designated ..." (the whole mess from above)\n然而,更好的方法是使用 Xcode 4.3.2 或更高版本。如果它识别出您正在使用开发人员 ID 应用程序证书,并且可以在钥匙串中看到中间证书,它将默认生成此证书。
\n\n另外,如果您使用 Xcode 中的 Archive Organizer 来“导出开发人员 ID 签名的应用程序”,而不是仅使用目标目录中的构建,它将确保对您的应用程序和任何其他附带的可签名内容进行签名,并且它将测试该应用程序一切都设置正确。(失败非常神秘\xe2\x80\x94例如,您的“选择要签名的开发人员ID”步骤可能没有选择,系统日志中的消息没有有用的信息\xe2\x80\x94但是至少它失败或成功的事实可以缩小你的问题所在。)
\n\n无论哪种方式,您都需要从开发人员证书实用程序的“开发人员 ID 中间证书”链接下载并安装(在构建计算机上)中间证书,称为“开发人员 ID 证书颁发机构”。
\n\n最后一件事:即使这解决了您在构建机器上运行的问题,您仍然想在您支持的最旧的操作系统版本上进行测试。例如,Lion的codesign编译的需求有时在Leopard上无法解析,有时甚至在Snow Leopard上无法解析。如果发生这种情况\xe2\x80\xa6 请参阅Gatekeeper vs. Leopard:一个正在进行的故事。
\n| 归档时间: | 
 | 
| 查看次数: | 7047 次 | 
| 最近记录: |