在更新应用程序后,mac会再次提示用户允许访问钥匙串吗?

时间:2018-10-08 15:39:45

标签: objective-c macos security prompt keychain

当我运行应用程序的Xcode构建并启动应用商店构建时,我注意到了一些奇怪的东西。如果我运行xcode构建(使用开发证书),然后通过应用商店运行我的应用程序(使用生产证书),则出现以下对话框,提示我

  

MyApp要使用钥匙串中“ com.myApp”中存储的机密信息。

当我先运行应用商店版本,然后运行Xcode开发版本时,也会出现此对话框。我相信会出现此对话框,因为两个内部版本都有不同的证书(可能是错误的)。

我最大的担心是用户更新了应用程序,用户会看到此对话框吗?

不确定这是否重要,但这是我将数据保存到钥匙串的方式。

 [[A0SimpleKeychain keychain] setString:string forKey:@"key"];

1 个答案:

答案 0 :(得分:5)

Apple的代码签名指南提供了答案。

  

我相信会出现此对话框,因为两个内部版本都有不同的证书

正确。参见Understanding the Code Signature

  

最重要的内部需求是指定需求或DR。该规则告诉评估系统如何识别特定的代码段。具有(并已成功验证)相同DR的任何两段代码都被视为同一代码。

     

...

     

macOS的某些部分不关心签名者的身份。他们只关心应用程序是否经过有效签名和稳定。稳定性是通过DR确定的,而不取决于所使用的证书颁发机构的性质。钥匙串系统和家长控制就是这种用法的例子。

来自Code Signing Tasks

  

运送和更新您的产品

     

用户的系统认为您产品的新版本是   与先前版本相同的程序。例如,钥匙串服务   不能区分您的程序的旧版本和新版本   因为两个都签名,并且唯一标识符保持不变。

使用其他证书对代码进行签名会使系统将其视为其他应用程序。只要您在版本之间使用相同的证书对发行版进行签名,就可以了。