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

Cur*_*and 7 security macos prompt objective-c keychain

当我运行我的应用程序的Xcode构建然后启动应用程序商店构建时,我注意到有些奇怪.如果我运行xcode构建(使用开发证书),然后通过应用商店运行我的应用程序(使用生产证书)我会收到以下对话框的提示

MyApp希望使用存储在钥匙串中的"com.myApp"中的机密信息.

当我首先运行app store build,然后是Xcode开发构建时,我也会得到这个对话框.我相信这个对话框出现是因为两个版本都有不同的证书(可能是错误的).

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

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

 [[A0SimpleKeychain keychain] setString:string forKey:@"key"];
Run Code Online (Sandbox Code Playgroud)

The*_*man 5

Apple的代码签名指南有答案.

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

正确.请参阅了解代码签名:

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

...

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

代码签名任务:

运送和更新您的产品

用户的系统将新产品版本视为与先前版本相同的程序.例如,只要两者都已签名且唯一标识符保持不变,Keychain Services就不会区分程序的较旧版本和较新版本.

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

  • 您所说的对于开发周期来说是正确的,但 AppStore 用户看不到 3rd 方开发者的证书——他们看到的是 Apple 的。Devs 的签名在提交过程中被检查,然后在应用程序重新签名时被丢弃,所以你可以随时撤销、更新或替换你的证书,甚至让它们过期,因为 Apple 的证书大多是稳定的,你不需要无论如何都无法控制它们:) (2认同)