当前位置: 首页 > news >正文

mac nwjs程序签名公证(其他mac程序也一样适用)

为什么需要公证

mac os14.5之后的系统,如果不对应用进行公证,安装,打开,权限使用上都会存在问题,而且有些问题你强制开启(sudo spctl --master-disable)使用后可能会有另外的问题,

例如在安全和隐私里面想开启麦克风和视像头的时候找不到自己的应用;或是无法收到桌面通知(这些问题也是有的电脑会有的不会,可能跟以前是否已经安装过有关,具体的机制没有细究,总之就是可能出现未知问题)

 

如何公证?

公证前准备:

开发者账号中,必须生成两份重要证书:

develop ID Application 证书 —— 用来对 .app 进行分发签名。类似于 iOS 的 inhouse enterprise(企业内部分发应用)

develop ID Installer 根证书 —— 用来对打包生成的 .dmg, .pkg 进行签名

一个主账号授权的副账号,用来做 .pkg / .dmg 的公正用。(可以直接用主账号)

这个副账号对应的专有密钥(需要在 https://appleid.apple.com 中生成)

副账号所属的 Team ID

如何生成develop ID Application 证书和的develop ID Installer 根证书

Sign In - Apple

Application证书安装后,设置成始终信任,避免老是频繁询问需要输入密码。

打包的设备需要安装这2份证书,并且需要安装在钥匙串的登录里面,双击安装默认好像是安装在系统,如果安装在这里签名命令执行可能失败。

如何获取用于公证的专有密钥

Manage your Apple Account

如何创建appid(app 的 bundle ID)? (mac的公证不确认是否需要该项操作,目前是有com.moa.pc和com.sangfor.meeting)

Sign In - Apple

公证主要用到几个命令

1.签名应用

签名的要求一:是app里面的所有2进制文件,.app应用都需要签名,并且app包里面不能包含zip等压缩包

签名的要求二:签名的应用必须开启hardened runtime

签名的命令:

codesign --verbose --force --deep --strict --options runtime --timestamp --sign "develop ID Application 证书" --entitlements neededToRun.entitlements "需要签名的文件或应用"

命令里面neededToRun.entitlements是个文件,内容如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict><key>com.apple.security.device.camera</key><true/><key>com.apple.security.device.audio-input</key><true/><key>com.apple.security.device.microphone</key><true/><key>com.apple.security.automation.apple-events</key><true/><key>com.apple.security.cs.allow-dyld-environment-variables</key><true/><key>com.apple.security.cs.allow-jit</key><true/><key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/><key>com.apple.security.cs.disable-executable-page-protection</key><true/><key>com.apple.security.cs.disable-library-validation</key><true/></dict>
</plist>

例如:

codesign --verbose --force --deep --strict --options runtime --timestamp --sign "Developer ID Application: XXX" --entitlements neededToRun.entitlements "./XXX.app/Contents/MacOS/nwjs"

neededToRun.entitlements这个文件跟hardened runtime相关,如果需要开启一些权限,处理配置plist之外还要配置这个文件。

签名需要注意,签名也是有顺序的,一般是从文件夹最里面前到外面,如果包有其他的修改,nwjs这个文件都需要重新签名。对应sing.js里面的sign([`${contents}/MacOS/nwjs`]);

2.打包签名pkg包

命令:

pkgbuild --component 打包的应用 --install-location 安装目录 --scripts 安装脚本相关 --version 版本 --identifier pkgid  --sign install的签名证书 输出的pkg包名字

3.验证签名结果(验证签名成功不等于所有app里面所有文件都签名成功

命令:

codesign --verify -vvvv "应用或文件路径"

例如:

codesign --verify -vvvv "./XXXapp/Contents/MacOS/nwjs"

4.上传公证pkg包

命令:

xcrun notarytool submit --apple-id 账号 --password 密码 --team-id ID号 xxxxx.pkg

5. 检测公证结果

一般执行完上述第4步后,就可以开始使用以下命令查看公证结果,立即检测的话一般是处于公证中的状态,这个状态一般持续1分钟左右,一般等个1-2分钟后就会有结果。

命令:

xcrun notarytool info --apple-id 账号 --password 密码 --team-id ID号 RequestUUID

例如:

xcrun notarytool info --apple-id 账号 --password 密码 --team-id ID号 0818c020-fd0c-4886-a056-056481858828

http://www.lryc.cn/news/470934.html

相关文章:

  • 网络应用技术 实验一:路由器实现不同网络间通信(华为ensp)
  • 使用 Qt GRPC 构建高效的 Trojan-Go 客户端:详细指南
  • 【mysql进阶】5-事务和锁
  • 指增和中性产品的申赎加减仓及资金调拨自动化伪代码思路
  • 【论文分享】居住开放空间如何影响老年人的情感:使用可穿戴传感器的现场实验
  • 入门 | Prometheus+Grafana 普罗米修斯
  • 制作Ubuntu根文件系统
  • 16个最佳测试管理工具(2024)
  • 基于知识图谱的猕猴桃种植技术问答系统
  • Swift雨燕蜂窝无线通信系统介绍
  • 【ZZULI】数据库第二次实验
  • Javaee---多线程(一)
  • Java后端面试内容总结
  • DC-1渗透测试
  • 深度剖析:电商 API 接口如何成就卓越用户体验
  • C++调试经验:Ubuntu下CMake链接常见库的方式(持续更新)
  • 【HarmonyOS】应用实现APP国际化多语言切换
  • 使用pandas进行数据分析
  • 用于无监督域适应的提示分布对齐
  • Rust整合Elasticsearch
  • Linux 文件权限管理:chown、chgrp 和 chmod 的使用及权限掩码规则
  • 简单记录ios打包流程
  • 右键以vscode打开目录的时候出现找不到应用程序
  • 【Go-Taskflow:一个类似任务流的有向无环图(DAG)任务执行框架,集成了可视化和性能分析工具,旨在简化并行任务的复杂依赖管理】
  • 排查PHP服务器CPU占用率高的问题
  • 【学术会议论文投稿】“从零到一:使用IntelliJ IDEA打造你的梦幻HTML项目“
  • Win11安装基于WSL2的Ubuntu
  • 如何对pdf文件进行加密?pdf文件加密全攻略与深度解析(5个方法)
  • c++面向对象三大特性之一-----多态
  • 8.Linux按键驱动-中断下半部