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.rhkb.cn/news/456684.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSON Web Token (JWT)的简单介绍、验证过程及令牌刷新思路

目录 一、JWT 1、什么是Jwt 2、为什么要使用Jwt 3、应用场景 4.Jwt的组成 4.1、Header 4.2、Payload 4.3、signature 二、Jwt验证过程 1、生成Jwt令牌 2、解析旧的Jwt 3、复制Jwt 4、Jwt有效时间测试 三、Jwt令牌刷新思路 1、配置JwtFilter过滤器 2、登录生成Jwt令…

解决Redis缓存穿透(缓存空对象、布隆过滤器)

文章目录 背景代码实现前置实体类常量类工具类结果返回类控制层 缓存空对象布隆过滤器结合两种方法 背景 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到数据库 常见的解决方案有两种&#xff0c;分别…

2024年10月24日第一部分AOP编程和自信

测试 Spring通知&#xff08;前置通知&#xff0c;后置通知&#xff0c;返回通知&#xff0c;异常通知&#xff0c;环绕通知&#xff09;_前置通知后置通知环绕通知-CSDN博客 一、前置通知 --前置通知 : 在方法执行之前执行的通知 --前置通知使用 Before 注解 , 并将切入点表…

【2024CANN训练营第二季】使用华为云体验AscendC_Sample仓算子运行

环境介绍 NPU&#xff1a;Ascend910B2 环境准备 创建Notebook 华为云选择&#xff1a;【控制台】-【ModelArts】 ModelArts主页选择【开发生产】-【开发空间】-【Notebook】 页面右上角选择【创建Notebook】 选择资源 主要参数 规格&#xff1a;Ascend: 1*ascend-snt…

VS code部署Vue项目Demo

在之前已经在IDEA中部署过vue项目demo。本次在上次基础上进行。 IDEA中Vue的安装和使用【window10】_idea安装vue-CSDN博客 步骤一、安装VSCode 双击安装即可 步骤二&#xff1a;检查npm是否安装 步骤三&#xff1a;检查vue是否安装 &#xff08;vue create 项目名 只要在v…

【AscendC算子开发】笔记1 算子开发哲学

重看这门课&#xff0c;有很多内容的认识更深了&#xff0c;做一些记录。 为什么不能将网络节点融合 这个问题关联到另一个问题&#xff1a;为什么我们需要激活函数&#xff1f; 使用线性的神经元堆叠得到的方程最后也是线性方程&#xff0c;无法表征非线性的信息&#xff0c…

微信网页授权回调地址放多个参数的方法

https://open.weixin.qq.com/connect/oauth2/authorize?appidAPPID&redirect_uriREDIRECT_URI&response_typecode&scopeSCOPE&stateSTATE#wechat_redirect 跳转后地址 redirect_uri/?codeCODE&stateSTATE。 redirect_uri如果不进行urlencode编码, 跳转后…

C++20中头文件syncstream的使用

<syncstream>是C20中新增加的头文件&#xff0c;提供了对同步输出流的支持&#xff0c;即在多个线程中可安全地进行输出操作&#xff0c;此头文件是Input/Output库的一部分。包括&#xff1a; 1.std::basic_syncbuf&#xff1a;是std::basic_streambuf的包装器(wrapper)&…

《在1688的数字海洋中,如何用API网罗一家店铺的所有商品?》

想象一下&#xff0c;你是一位船长&#xff0c;航行在1688这个电商的数字海洋上。你的任务是探索一家神秘的店铺岛屿&#xff0c;并且用你的API魔法网&#xff0c;网罗岛上所有的商品宝藏。不用担心&#xff0c;即使你不是海贼王&#xff0c;有了代码的力量&#xff0c;你也能成…

【数据结构初阶】二叉树---堆

二叉树-堆的实现 一、树的概念&#xff08;什么是树&#xff09;二、二叉树的概念及结构2.1 二叉树的概念2.2 二叉树的性质2.3 二叉树存储结构 三、二叉树的顺序结构3.1 堆的概念及结构3.2 堆的向下调整算法3.3堆的创建 四、堆的代码实现4.1 堆的初始化4.2 堆的销毁4.3 堆的插入…

ipguard与Ping32如何加密数据防止泄露?让企业信息更安全

在信息化时代&#xff0c;数据安全已成为企业运营的重中之重。数据泄露不仅会导致经济损失&#xff0c;还可能损害企业声誉。因此&#xff0c;选择合适的数据加密工具是保护企业敏感信息的关键。本文将对IPGuard与Ping32这两款加密软件进行探讨&#xff0c;了解它们如何有效加密…

SAP_SD模块-销售订单创建价格扩大10倍问题分析及后续订单价格批量更新问题处理

一、业务背景 我们公司的销售订单&#xff0c;是通过第三方销售管理平台创建好订单后&#xff0c;把表头和行项目数据&#xff0c;定时推送到SAP&#xff1b;SAP通过自定义表ZZT_ORDER_HEAD存放订单表头数据&#xff0c;通过ZZT_ORDER_DETAIL存放行项目数据&#xff1b;然后再用…

git安装-Tortoise git 安装汉化教程

1. 安装git 2. 安装git图形化工具Tortoise git 3. 汉化 Tortoise git 汉化安装包

证件照电子版怎么弄?不花钱制作方法快来学

想要制作免费照证件照&#xff1f;证件照在我们的日常生活中扮演着重要角色&#xff0c;无论是求职、求学还是办理各类证件&#xff0c;都少不了它的身影。 但是&#xff0c;去照相馆拍照不仅耗时&#xff0c;费用也不菲。那么&#xff0c;有没有可能不花一分钱就搞定证件照呢…

互联网系统的微观与宏观架构

互联网系统的架构设计&#xff0c;通常会根据项目的体量、业务场景以及技术需求被划分为微观架构&#xff08;Micro-Architecture&#xff09;和宏观架构&#xff08;Macro-Architecture&#xff09;。这两者的概念与职责既独立又相互关联。本文将通过一些系统案例&#xff0c;…

淘宝API的实战应用:数据驱动增长,实时监控商品信息是关键

数据驱动增长&#xff0c;实时监控商品信息是关键 —— 淘宝API的实战应用 在数字化时代&#xff0c;数据已经成为商业决策的核心。对于电商行业而言&#xff0c;获取准确、实时的数据是保持竞争力的关键。淘宝API接口作为连接淘宝电商平台与外部应用的桥梁&#xff0c;为电商商…

【论文+源码】基于spring boot的垃圾分类网站

创建一个基于Spring Boot的垃圾分类网站涉及多个步骤&#xff0c;包括环境搭建、项目创建、数据库设计、后端服务开发、前端页面设计等。下面我将引导您完成这个过程。 第一步&#xff1a;准备环境 确保您的开发环境中安装了以下工具&#xff1a; Java JDK 8 或更高版本Mav…

uv: 一个统一的Python包管理工具

uv是由Astral公司开发的一个极其快速的Python包管理器,完全用Rust编写。它最初在2月份发布,作为pip工作流的替代品。现在,uv已经扩展成为一个端到端的解决方案,可以管理Python项目、命令行工具、单文件脚本,甚至Python本身。可以说,uv就像是Python界的Cargo:一个快速、可靠、易…

Rust小练习,编写井字棋

画叉画圈的游戏通常指的是 井字棋&#xff08;Tic-Tac-Toe&#xff09;&#xff0c;是一个简单的两人游戏&#xff0c;规则如下&#xff1a; 游戏规则 棋盘&#xff1a;游戏在一个3x3的方格上进行。玩家&#xff1a;有两个玩家&#xff0c;一个用“X”表示&#xff0c;另一个…

Vivado自定义IP修改顶层后Port and Interface不更新解决方案

问题描述 在整个项目工程中&#xff0c;对自定义IP进行一个比较大的改动&#xff0c;新增了不少端口(这里具体的就是bram的读写端口)&#xff0c;修改是在block design中右击IP编辑在IP编辑工程中进行的。 在修改完所有代码后&#xff08;顶层新增了需要新加的输入输出端口&…