MacOS: APP签名及公证

背景

        在MacOS 10.15之前,应用如果没有签名,那么首次打开时就会弹出这种“恶意软件”的提示框。这时只要应用签名了,就不会弹这个框。但在MacOS 10.14.5之后,应用如果没有公证(简单说就是将安装包上传到Apple审查),那么就会弹出更严重的“恶意软件”提示框。

        macOS 中 Gatekeeper 技术的工作原理与 Apple 公证服务相关联。Gatekeeper 是一项旨在保护 Mac 用户免受恶意软件侵害的安全技术,它确保只有来自已识别开发人员并经过 Apple 公证的应用程序能够在用户的 Mac 上运行。当用户下载并尝试打开一个应用程序时,Gatekeeper 会进行验证检查。这包括确认该应用是否使用有效的开发人员 ID 签名,以及该应用是否已经通过了 Apple 的公证流程。Apple 的公证服务会对应用程序执行一系列自动化安全检查,以检测是否存在任何已知的恶意内容,并保证应用没有被篡改。一旦应用程序通过这些检查,Apple 就会为其分配一个票证,表明该软件是可信的。这样,当用户尝试运行该应用时,Gatekeeper 可以依据这个票证快速判断其安全性。

        因此,对于开发者而言,在预配和发布应用之后将其提交给 Apple 进行公证是非常重要的一步。这不仅有助于提高应用的安全性,还可以增加用户对软件的信任度,确保应用能够顺利地在用户的设备上运行。同时,这也是遵循 Apple 生态系统规则的一部分,有助于维护整个平台的安全性和用户体验。那么,这就要求在分发前对 App 进行公证 Notarization,而公证的本质是通过 Apple Notary Service 来对开发的 App 进行扫描确认是否存在恶意内容以及检查代码签名问题,从而生成一个可以正常使用的凭证。

环境准备

1. 相关开发工具安装,不一一详述

2. 必须要有开发者账号(如果是企业账号,需将个人加入到团队中)
3. 通过开发者账号生成签名证书。此处需要注意,如果不仅仅是签名APP,还想签名安装包的话,需要两个证书(Developer ID Application/Developer ID Installer)。在创建证书时,需要注意勾选必要的扩展服务。
4. 将证书安装在打包的Mac上(双击证书xxx.p12,输入密码*****)

5.应用程序专用密码:****-****-****-*****(16位,不是您的 Apple ID 密码)

 

程序编译生成

        qt开发的程序,生成app文件需要借助macdeployqt工具,该工具位于Qt安装文件夹的bin文件目录下,如下图所示

APP编译生成 

#进入到app的目录下
cd testApp

#使用 macdeployqt 来部署Qt框架
macdeployqt xxx.app

 程序依赖第三方库

        手动拷贝库文件(看实际需要,如果macqdeployqt没将库拷贝)

cp /xxxpath/libA-1.0.0.dylib /Users/ddd/Desktop/testApp/xxx.app/Contents/Frameworks

cp /usr/local/lib/libLog.1.0.0.dylib /Users/ddd/Desktop/testApp/xxx.app/Contents/MacOS
cp /usr/local/lib/libLog.1.0.dylib /Users/ddd/Desktop/testApp/xxx.app/Contents/MacOS
cp /usr/local/lib/libLog.1.dylib /Users/ddd/Desktop/testApp/xxx.app/Contents/MacOS
cp /usr/local/lib/libLog.dylib /Users/ddd/Desktop/testApp/xxx.app/Contents/MacOS

修改依赖关系

    查看依赖关系,使用命令otool -L /path/xxx.dylib;然后使用install_name_tool -change

install_name_tool -change libA.dylib @executable_path/../Frameworks/libA.dylib /User
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值