Mac Electron 应用的签名(signature)和公证(notarization)
背景
在MacOS 10.15之前,应用如果没有签名,那么首次打开时就会弹出这种“恶意软件”的提示框。
这时只要应用签名了,就不会弹这个框。
但在MacOS 10.14.5之后,应用如果没有公证(简单说就是将安装包上传到Apple审查),那么就会弹出更严重的“恶意软件”提示框。
这时就需要在应用签名之后,再进行公证(notarize app)。
签名(signature)
签名的步骤,关键是生成一个签名证书,然后用这个证书来签名应用。
PS:开发者账号是必不可少的,这一步骤就不说了。
1、创建一个CertificateSigningRequest.certSigningRequest文件。
填必需的信息
这样就生成一个CertificateSigningRequest.certSigningRequest文件了。
2、生成Developer ID Application证书。
(1)、登陆 https://developer.apple.com/account/resources/certificates/add
(2)、点击Certificates,选择添加证书。
(3)、选择 Developer ID Application 类型的证书。
(4)、导入第一步生成的CertificateSigningRequest.certSigningRequest文件,导入完毕后就可以下载证书了。
(5)、developerID_application.cer 下载后,双击导入钥匙串。
3、设置环境变量。
你导入的证书,默认的访问权限是“允许访问之前确认”。
这时你需要导出一个p12文件,配置到环境变量,这样打包的工具才有权限访问到这个证书。
导出方式:
环境变量:
export CSC_LINK=‘你的p12文件路径'
export CSC_KEY_PASSWORD=‘你创建p12文件的密码’
PS:当然,如果你想偷懒不导出p12文件、不设环境变量,也可以将访问控制选择“允许所有应用程序访问此项目”,只不过这样证书就可能被滥用。
4、打包签名。
如果你是打Electron应用,它的electron-builder工具会自动寻找钥匙串里的 Developer ID Application 证书,并进行打包签名。
公证(notarization)
对于 Electron 应用,它有 electron-notarize 的工具来做公证。但遗憾的是,我使用的时候出现了各种各样的报错,相关GitHub issue上也发现有人出现跟我类似的问题,不过没有明确的解决办法。
折腾半天,决定用原始的办法来解决——命令行工具。
一句命令
xcrun altool --notarize-app --primary-bundle-id “com.xxx.xxx" --username “your developer appleid" --password “app-password" --asc-provider "ProviderShortname" -t osx --file xxx.dmg
primary-bundle-id: 自己app的bundle id。
username:苹果开发者ID。
password:应用专用密码。(登录appleid.apple.com,然后找到创建app password的地方,创建一个应用专用密码,这样可以避免暴露真实的密码。)
asc-provider:证书提供者。查询命令如下:
xcrun altool --list-providers -u "apple id" -p "app password”
公证成功是这样的
No errors uploading 'xxx.xxx'.
RequestUUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
显示所有上传到苹果的包
xcrun altool --notarization-history -u "appid" -p "app_password"
查单个记录。里面有日志,公证失败可查看
xcrun altool --notarization-info bfd6682e-49bc-4e82-ba8f-cdf0e8668502 -u "appid" -p "app_password"
总结
当我做完上面的步骤,安装包在其他电脑安装时都不会报“恶意软件”了,不过看了网上资料还有其他步骤要做,这个以后再确认了。
参考文献
1、https://github.com/electron/electron-notarize
2、https://blog.csdn.net/ftpleopard/article/details/102721138
3、https://blog.csdn.net/simplehouse/article/details/100531116
4、https://www.cnblogs.com/mmykdbc/p/11468908.html
Mac Electron 应用的签名(signature)和公证(notarization)的更多相关文章
- Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application
最近一直在做electron应用的打包,集成mac版本的自动更新时出现了问题. Error: Could not get code signature for running application ...
- Mac Electron App 签名后打开闪退
背景 昨天在测试 Mac Electron App 打包,发现不签名的应用能够正常打开,签了名的打开反而会崩溃. 寻因 首先我怀疑是不是自己代码导致闪退,但是在一番查找后,发现还根本没到执行我的代码就 ...
- 转:微信开发之使用java获取签名signature(贴源码,附工程)
微信开发之使用java获取签名signature(贴源码,附工程) 标签: 微信signature获取签名 2015-12-29 22:15 6954人阅读 评论(3) 收藏 举报 分类: 微信开发 ...
- 微信开发之使用java获取签名signature(贴源码,附工程)
一.前言 微信接口调用验证最终需要用到的三个参数noncestr.timestamp.signature: 接下来将会给出获取这三个参数的详细代码 本文的环境eclipse + maven 本文使用到 ...
- java接口签名(Signature)实现方案续
一.前言 由于之前写过的一片文章 (java接口签名(Signature)实现方案 )收获了很多好评,此次来说一下另一种简单粗暴的签名方案.相对于之前的签名方案,对body.paramenter.pa ...
- java接口签名(Signature)实现方案
预祝大家国庆节快乐,赶快迎接美丽而快乐的假期吧!!! 一.前言 在为第三方系统提供接口的时候,肯定要考虑接口数据的安全问题,比如数据是否被篡改,数据是否已经过时,数据是否可以重复提交等问题.其中我认为 ...
- 微信js获得签名signature
服务器端: 1 获取微信js accessToken 备注:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token. 开发者需要进行妥善保存.access_ ...
- Token以及签名signature的设计与实现
LZ第一次给app写开放接口,把自己处理Token的实现记录下来,目的是如果以后遇到好的实现,能在此基础上改进.这一版写法非常粗糙,写出来就是让大家批评的,多多指教,感谢大家. 当初设计这块想达到的效 ...
- 关于class的签名Signature
举例1: public class Test05<A, B extends java.util.List<String>, C extends InputStream&Ser ...
随机推荐
- 充满含金量的一场云原生Meetup,入场券免费发送中……
在武汉,你离这场云原生盛会,只有一步之遥 华为云.百度.斗鱼.海云基因,五位重量级专家 K8s调度.深度学习平台.斗鱼实战.基因大数据-五个干货议题 日,与您相约Cloud Native Days C ...
- STM32F4 阿波罗寄存器点亮LED灯
学习步骤: 使用寄存器点亮LED灯,需要进行如下的步骤,LED灯属于外设部分,首先需要开启外设的时钟使能,然后LED灯是PB1口,(芯片是正点原子的阿波罗),接着定义GPIOB口的输出模式,为上拉.推 ...
- JSP + Session Cookie详解
篇幅较大,对JSP进行了非常详细的讲解,并解释了Session和Cookie的实现原理 ,预计看完需要20分钟左右,慢慢享受吧 JSP概述 掌握了servlet后,就可以利用servlet来开发动态页 ...
- 数据挖掘算法(一)--K近邻算法 (KNN)
数据挖掘算法学习笔记汇总 数据挖掘算法(一)–K近邻算法 (KNN) 数据挖掘算法(二)–决策树 数据挖掘算法(三)–logistic回归 算法简介 KNN算法的训练样本是多维特征空间向量,其中每个训 ...
- 用Java编程语言对一个无序整形数组进行排序(冒泡排序,选择排序,插入排序)
public static void main(String[] args) { /** * 冒泡排序 * 思路:每个轮次都让第一个数和其后所有的数进行轮比较,如果这轮的第一个数大则和其下一个数交换位 ...
- Mac 配置 PlantUML
PlantUML简介 UML: Unified Modeling Language 统一建模语言,是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面 ...
- Zabbix 监控PHP-FTPM、Tomcat、Redis应用
一.zabbix 监控 PHP-FPM应用实战Nginx+PHP-FPM是目前最流行的LNMP架构,在基于PHP开发的系统下,对这些系统性能的监控,主要是关注PHP-FPM的运行状态,那么什么是PHP ...
- R语言计算IV值
更多大数据分析.建模等内容请关注公众号<bigdatamodeling> 在对变量分箱后,需要计算变量的重要性,IV是评估变量区分度或重要性的统计量之一,R语言计算IV值的代码如下: Ca ...
- 用tensorflow求偏导
# coding:utf-8 from __future__ import absolute_import from __future__ import unicode_literals from _ ...
- 轻松构建基于 Serverless 架构的弹性高可用音视频处理系统
前言 随着计算机技术和 Internet 的日新月异,视频点播技术因其良好的人机交互性和流媒体传输技术倍受教育.娱乐等行业青睐,而在当前, 云计算平台厂商的产品线不断成熟完善, 如果想要搭建视频点播类 ...