基于notarytool对MacOS应用进行公证

转载来自https://taoofcoding.tech/blogs/2022-11-13/use-notarytool-to-notary-macos-app

官方文档

这个大哥写的很好,具体可以参考他  我是个搬运工

altool has been deprecated and, starting in fall 2023, will no longer be supported by the Apple notary service. You should start using notarytool to notarize your software

根据提示,显示现在使用的altool公证方式将在2023年过期,无法再使用。 现在都是新方式

什么是公证

 

在进行详细的说明之前,需要解释一下什么叫公证,公证这个概念在Windows以及MacOS上都存在.

公证的本质目的是:向下载及使用你应用的人证明你的应用的可信任性

也就是,公证的应用是可以信任的,不会是一些破解或木马应用等.

以MacOS来说,有两种方式发布应用.一种是上架到AppStore,让用户在AppStore搜索及下载应用;还有一种是发布独立的DMG格式的安装文件,让用户下载DMG进行安装.

对于发布独立的DMG格式的场景下,最好对应用进行公证,否则用户安装未公证的DMG应用时,MacOS会提示已损坏,无法打开。 您应该将它移到废纸篓,用户需要在安全设置中主动信任这个应用,才能正常使用这个应用.

很多人下载过MacOS的盗版或破解应用,相信对这个提示或如何解决这个问题比较熟悉了.

 

MacOS公证的前提

做为一个MacOS应用的开发者,能够对MacOS进行公证的前提是:

  • 需要一个Apple开发者帐号(个人或公司都可以)
  • 安装Xcode 13及后续的相关版本

其实,做为一个iOS或MacOS的开发人员,注册一个Apple开发者身份必不可少,否则很多事情难以完成,一个Apple开发者的费用是每年99美元 (约699元/年)

新的公证流程

  1. 存储必要的凭证

因为公证是在命令行模式下进行,为了安全起见,将后续公证过程中涉及到的认证密码存储到keychain中

xcrun notarytool store-credentials "MY_PASSWORD" \
               --apple-id "{appId}"  \
               --team-id PNJFUFSV5K  \
               --password {二次认证密钥}
  • MY_PASSWORD是凭证名称,可随意命名,后续需要使用到
  • --apple-id:你注册的Apple开发者帐号
  • --team-id: teamId的值,无论是个人或公司开发者帐号,都会有一个这样的值   就是那个证书最后面的那串字符串
  • --password: 二次凭证,在AppleId中设置的二次认证密码,以避免直接使用AppleId的密码,加强安全性 这个是从

     

  • https://appleid.apple.com/ 这边去

  •  

    这边生成 

  1. 提交公证申请
xcrun notarytool submit {appPath} \
                   --keychain-profile "MY_PASSWORD" \
  • appPath: 需要公证的安装包的完整路径
  • --keychain-profile: 先前存储的凭证名称

过程中,会要求输入当前系统用户的密码,以读取上一步设置的MY_PASSWORD的凭证

此命令执行完成后,会输出类似如下信息

Successfully uploaded file. 
 id: 2efe2717-52ef-43a5-96dc-0797e4ca1041
 path: /Users/lingen/Desktop/微言码道_0.1.dmg

这意味着你的安装包已经上传完成了,并成功发送了公证申请.

  1. 查询公证进度

公证需要一定的时间,可随时查询公证进度 (正常情况下,一般30分钟左右)

xcrun notarytool info {id} --keychain-profile "MY_PASSWORD"
  • {id}: 上一步生成的id值
  • --keychain-profile: 公证凭证

查询成功后,可查询到如下信息

Successfully received submission info
  createdDate: 2022-09-19T06:29:28.611Z
  id: d6b8ad29-8517-44f6-8392-5b6a6e40b876
  name: 微言码道_0.1.dmg
  status: Accepted
  1. 将公证信息注入到安装包中
xcrun stapler staple {appPath}

公证成功后,将公证信息注入到你的安装包中

  1. 验证DMG是否已公证
xcrun stapler staple -v /Users/lingen/Desktop/微言码道_0.1.dmg

正常情况下,会输出***The staple and validate action worked!***的字样.

大功告成

提示注入成功后,你的安装包就可以在互联网上传播,下载以及安装是不会提示危险软件了。

更重要的一点是,公证是MacOS应用能自动下载并安装新版本的前提,没有公证的更新包,是无法实现自动更新这个功能的.

所以,如果你开发了MacOS应用,又没有走AppStore渠道,公证是你一定要去做的.

需要知道的是,MacOS的公证并不涉及人工审核,是一个自动化的流程,基本上只要你有Apple开发帐号,打的包又是按照苹果规范来的,就不存在公证被否的可能性.

posted @ 2024-01-31 14:47  冰糖葫芦很乖  阅读(79)  评论(0编辑  收藏  举报