Mac Electron 应用如何进行签名(signature)和公证(notarization)?

最近很多客户反映,从官网下载的Mac Electron应用打不开,直接报病毒,类似于这种:

这是因为在MacOS 10.14.5之后,如果应用没有在苹果官方平台进行公证notarization(我们可以理解为安装包需要审核,来判断是否存在病毒),那么就不能被安装。当然现在很多人的解决方案都是使用sudo spctl --master-disable,取消验证模式,但是总体给客户培训下来,效果非常差,很多人找不到终端,有的人甚至不能在终端中输入命令。因此急需找到解决问题的源头,如何进行代码公证。

1. 签名

在App进行公证之前,App首先必须有一个签名,来证明这个app的开发者是谁:

首先你需要有一个苹果开发者账号

首先,找到开发电脑的钥匙串,找到证书助理,创建一个从证书机构请求证书

填写自己的信息,并保存,生成一个CertificateSigningRequest.certSigningRequest文件。

现在需要生成 Developer ID Application证书

登录苹果开发者网站:https://developer.apple.com/account/resources/certificates/add

添加 Developer ID Application类型证书:

导入上面生成的CertificateSigningRequest.certSigningRequest文件,导入完成之后即可下载我们需要的证书了:

下载到电脑之后,双击一下,证书就被安装到了钥匙串中了。

此时,打开钥匙串,选择登录 钥匙串,并在我的证书栏找到刚才导入的证书:

右键并下载,

保存成p12文件:

保存到你的路劲之后,此时需要配置环境变量:

export CSC_LINK=‘你的p12文件路径'
export CSC_KEY_PASSWORD=‘你创建p12文件的密码’

创建完成之后,此时我们来进行打包,使用 Electron自带的打包命令:

sudo npm run build

看到这句话之后,就说明签名可用了:

2. 公证

之前使用的altool工具被苹果打回了,现在只能使用notarytool工具打包了,具体文档可以查看这篇文章:

https://developer.apple.com/documentation/technotes/tn3147-migrating-to-the-latest-notarization-tool

直接上命令行:

xcrun notarytool submit --force filepath --apple-id "your_apple_id" --password "password" --team-id "team_id"

下面来解释一下所有参数的意义:

  • filepath 你生成文件的路劲
  • your_apple_id 你的苹果开发者账号
  • password 你的应用专属密码,和你的苹果开发者账号密码不一样,可以查阅相关资料设置应用专属密码
  • team_id 你的团队id

提交之后,如果有以下结果:

Conducting pre-submission checks for app.zip and initiating connection to the Apple notary service...
Submission ID received
  id: ad944394-4ccb-456e-aff5-80e873503e15
Upload progress: 100.00% (91.1 MB of 91.1 MB)   
Successfully uploaded file
  id:  ad944394-4ccb-456e-aff5-80e873503e15
  path: /Users/admin/Downloads/app.zip

可以看到,我们提交成功了,已经在预检查状态了。

那么,我们何时可以看到我们的公证状态呢:

xcrun notarytool history --apple-id "your_apple_id" --password "password" --team-id "team_id"

可以得到如下图:

我们可以看到,我们提交的app状态都是Accpeted,说明公证已经被受理了,现在处于接收状态。目前status有以下状态:

  • Accepted 被接受
  • Invalid 无效
  • In Progress 进行中

一般提交半小时之内,如果没有异常情况,状态都会由In Progress变为Accepeted.说明您的公证已经完成。

一般我们公证完成之后,我们重新下载App并打开,出现的如下图片:

这样,一般对电脑不熟的客户,直接点击打开就可以直接打开App了,就没有之前那种强制不能开启的逻辑了。

当然了,这是一次记录,如果您有什么疑问,欢迎添加我的wx:javainstalling,暗号:公证,一起解决问题吧。

参考文章:

  1. https://www.cnblogs.com/lovesong/p/11782449.html
  2. https://www.cnblogs.com/e0yu/p/14751259.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/842801.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Typora 1.5.8 版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取(软件可激活使用)

文章目录 软件介绍软件下载安装步骤激活步骤 软件介绍 Typora是一款基于Markdown语法的轻量级文本编辑器,它的主要目标是为用户提供一个简洁、高效的写作环境。以下是Typora的一些主要特点和功能: 实时预览:Typora支持实时预览功能&#xff0…

【每日一练】python编写一个简易计算器

程序代码: #循环语句,条件为真所以循环执行 while True: #定义两个数的变量和运算符号 num1 float(input("第一个数:")) num2 float(input("第一个数:")) syminput("选择运算符 - * /:") #判断运算符号 …

知名在线市场 Etsy 允许在其平台上销售 AI 艺术品,但有条件限制|TodayAI

近日,以手工和复古商品著称的在线市场 Etsy 宣布,将允许在其平台上销售 AI 生成的艺术品。这一举措引发了广泛关注和争议。尽管 Etsy 正在接受 AI 艺术的潮流,但平台对这一类商品的销售设置了一些限制。 根据 Etsy 新发布的政策,…

小程序图片下载保存方法,图片源文件保存!

引言 现在很多时候我们在观看到小程序中的图片的时候,想保存图片的原文件格式的话,很多小程序是禁止保存的,即使是让保存的话,很多小程序也会限制不让保存原文件,只让保存一些分辨率很低的,非常模糊的图片…

【iOS】类对象的结构分析

目录 对象的分类object_getClass和class方法isa流程和继承链分析isa流程实例验证类的继承链实例验证 类的结构cache_t结构bits分析实例验证属性properties方法methods协议protocolsro类方法 类结构流程图解 对象的分类 OC中的对象主要可以分为3种:实例对象&#xf…

tinymce富文本支持word内容同时粘贴文字图片上传 vue2

效果图 先放文件 文件自取tinymce: tinymce富文本简单配置及word内容粘贴图片上传 封装tinymce 文件自取&#xff1a;tinymce: tinymce富文本简单配置及word内容粘贴图片上传 页面引用组件 <TinymceSimplify refTinymceSimplify v-model"knowledgeBlockItem.content…

exo 大模型算力共享;Llama3-70B是什么

目录 exo 大模型算力共享 exo框架的特点 如何使用exo框架 注意事项 结论 Llama3-70B是什么 一、基本信息 二、技术特点 三、性能与应用 四、未来发展 exo 大模型算力共享 exo框架的特点 异构支持:支持多种不同类型的设备,包括智能手机、平板电脑、笔记本电脑以及高…

仅两家!云原生向量数据库 PieCloudVector 全项通过信通院「可信数据库」评测

7月16日&#xff0c;2024 可信数据库发展大会在北京隆重举行。大会以“自主、创新、引领”为主题&#xff0c;近百位数据库领域的专家、学者齐聚一堂&#xff0c;带来高质量的数据库技术洞察与实战经验。 本次可信数据库发展大会中&#xff0c;中国信通院正式公布 2024 年上半年…

SpringMVC源码深度解析(中)

接上一遍博客《SpringMVC源码深度解析(上)》继续聊。最后聊到了SpringMVC的九大组建的初始化&#xff0c;以 HandlerMapping为例&#xff0c;SpringMVC提供了三个实现了&#xff0c;分别是&#xff1a;BeanNameUrlHandlerMapping、RequestMappingHandlerMapping、RouterFunctio…

公司技术栈用到了RocketMQ,我对此块知识进行了回顾(初始RocketMQ)

前言 作为24届的校招生&#xff0c;不知道大伙儿们是否都已经到了工作岗位上。为了以后更方便的接触到公司的业务&#xff0c;我司为我们安排了将近一个月的实操。虽然不用敲代码&#xff0c;但是… 了解到我司使用到的技术栈&#xff0c;在空闲时间正好对RocketMQ这块技术做个…

[PM]产品运营

生命周期 运营阶段 主要工作 拉新 新用户的定义 冷启动 拉新方式 促活 用户活跃的原因 量化活跃度 运营社区化/内容化 留存 用户流失 培养用户习惯 用户挽回 变现 变现方式 付费模式 广告模式 数据变现 变现指标 传播 营销 认识营销 电商营销中心 拼团活动 1.需求整理 2.…

使用LVS+NGinx+Netty实现数据接入

数据接入 链接参考文档 LVSKeepalived项目 车辆数据上收&#xff0c;TBox通过TCP协议连接到TSP平台 建立连接后进行数据上传。也可借由该连接实现远程控制等操作。 通过搭建 LV—NGinx—Netty实现高并发数据接入 LVS&#xff1a;四层负载均衡&#xff08;位于内核层&#x…

【数据结构进阶】二叉搜索树

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; C || 数据结构 目录 &#x1f308;前言&#x1f525;二叉搜索树&#x1f525; 二叉搜索树的实现Insert&#xff08;插入&#xff09;find&#xff08;查找&#xff09;erase(删除)destro…

【中项】系统集成项目管理工程师-第2章 信息技术发展-2.1信息技术及其发展-2.1.1计算机软硬件与2.1.2计算机网络

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

车载音视频App框架设计

简介 统一播放器提供媒体播放一致性的交互和视觉体验&#xff0c;减少各个媒体应用和场景独自开发的重复工作量&#xff0c;实现媒体播放链路的一致性&#xff0c;减少碎片化的Bug。本文面向应用开发者介绍如何快速接入媒体播放器。 主要功能&#xff1a; 新设计的统一播放U…

Windows FFmpeg 开发环境搭建

FFmpeg 开发环境搭建 FFmpeg命令行环境搭建使用FFmpeg官方编译的库Windows编译FFmpeg1. 下载[msys2](https://www.msys2.org/#installation)2. 安装完成之后,将安装⽬录下的msys2_shell.cmd中注释掉的 rem set3. 修改pacman 镜像源并安装依赖4. 下载并编译源码 FFmpeg命令行环境…

【C++】 string类的模拟实现

目录 一、我们先创建三个文件分别为 String.h&#xff08;声明&#xff09;、String.cpp&#xff08;定义&#xff09;、teat.cpp&#xff08;测试&#xff09; 二、成员函数 构造函数与析构函数 &#x1f31f;string() &#x1f31f;string(const char* str) &#x1f…

c++基础(类和对象中)(类的默认成员函数)

目录 一.构造函数&#xff08;类似初始化&#xff09; 1.概念 2.构造函数的特点 二.析构函数&#xff08;类似 销毁对象/空间&#xff09; 三.拷贝构造函数(类似复制粘贴的一种 初始化 ) 1.概念&#xff1a; 2.拷贝构造的特点&#xff1a; 四.赋值运算符重载&#xff08…

【MATLAB实战】基于UNet的肺结节的检测

数据&#xff1a; 训练过程图 算法简介&#xff1a; UNet网络是分割任务中的一个经典模型,因其整体形状与"U"相似而得名,"U"形结构有助于捕获多尺度信息,并促进了特征的精确重建&#xff0c;该网络整体由编码器,解码器以及跳跃连接三部分组成。 编码器由…

数据结构第一讲:复杂度

数据结构第一讲&#xff1a;复杂度 1.数据结构前言1.1什么是数据结构1.2算法 2.算法效率2.1复杂度的概念 3.时间复杂度3.1案例13.2案例23.3案例33.4案例43.5案例53.6案例63.7案例7 4.空间复杂度4.1案例14.2案例2 5.常见复杂度对比6.轮转数组题目分析6.1优化16.2优化2 博客简介&…