Mac Electron 应用的签名(signature)和公证(notarization)

背景

在MacOS 10.14.5之前,应用如果没有签名,那么首次打开时就会弹出这种“恶意软件”的提示框。

这时只要应用签名了,就不会弹这个框。

但在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

总结

当我做完上面的步骤,安装包在其他电脑安装时都不会报“恶意软件”了,不过看了网上资料还有其他步骤要做,这个以后再确认了。

参考文献

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

原文地址:https://www.cnblogs.com/lovesong/p/11782449.html

时间: 2024-11-09 02:04:33

Mac Electron 应用的签名(signature)和公证(notarization)的相关文章

转:微信开发之使用java获取签名signature(贴源码,附工程)

微信开发之使用java获取签名signature(贴源码,附工程) 标签: 微信signature获取签名 2015-12-29 22:15 6954人阅读 评论(3) 收藏 举报  分类: 微信开发(5)  版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 一.前言 微信接口调用验证最终需要用到的三个参数noncestr.timestamp.signature: 接下来将会给出获取这三个参数的详细代码 本文的环境ecli

解决Mac下GDB提示签名错误

原文作者:Power 转载请保留此链接. 安装GDB 新的Mac下有gcc.g++,可是没有gdb 有人说安装XCode就有.可是我真没有 通过Homebrew安装,没有的运行安装brew命令 ruby -e "$(curl -fsSLk https://raw.github.com/Homebrew/homebrew/go/install)" 然后安装gdb brew install https://raw.github.com/Homebrew/homebrew-dupes/mas

Mac App Store应用签名和pkg签名(必须签名后才能销售)

App签名 只有用苹果颁发的证书签名的应用才能在App Store上进行销售,所以我们开发的应用必须打上签名. 签名有两种方式,一是使用Xcode,在配置里面设置签名,编译出来的app就有了签名:二是使用codesign命令行进行手动签名.这里我们采用的是使用手动codesign对app进行签名. codesign -s “your Application Certificates”app_path 比如你要对MyAppDemo.app进行签名,并使用您之前申请的证书. codesign -s

微信js获得签名signature

服务器端: 1 获取微信js accessToken 备注:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token. 开发者需要进行妥善保存.access_token的存储至少要保留512个字符空间. access_token的有效期目前为2个小时,需定时刷新, 重复获取将导致上次获取的access_token失效. 目前access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值. 中控服务器需要根据这个有效时间提前去

Mac OS X 软件签名校验

0. 终端可以进行MD5和SHA1校验,分别是命令: md5 <file path>.shasum <file path> 1. 打开终端(Terminal) 2. 输入命令 "md5" 或者 "shasum"   // 不要双引号 3. 然后输入空格(" ") 4. 输入文件路径 或者 直接打开Finder 将文件拖入Terminal // 完整命令就是"md5 /Users/atearsan/dev/soft

微信JS-SDK签名signature错误代码4029

一般是url的错,url需要动态获取 c#的写法: //Request.Url.ToString()这个获取的是没有端口号的有些网站有端口号 string url = Request.Url.OriginalString;这个是有端口号的(注:有的网站端口号设置为80但是防火墙映射为8888所以访问的时候是8888可是动态获取的是80所以需要替换才可以通过验证如下替换) url = url.Replace(获得的端口号, 访问的端口号)

mac下获取应用签名

查看md5和SHA1: universalbroker.jks为签名文件 keytool -list -v -keystore universalbroker.jks 微信分享和登录平台需要去掉冒号的md5值.

解决mac 10.11 以后 无法使用未签名第三驱动

解决 最新版 mac 系统 无法使用未签名第三驱动 10.12.多 我的情况是 10.11.4 Beta (15E27e) 使用绿联usb网卡不正常. 下面的命令为检测驱动是否装载的一些命令.sudo kextload /Library/Extensions/AX88772.kext 报错: failed to load - (libkern/kext) not found; check the system/kernel logs for errors or try kextutil(8).

微信JS-SDK获取signature签名以及config配置

微信的JS-SDK通过config接口注入权限验证配置,官网上的文档说的很清楚: Js代码   wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印. appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',/