使用 Developer ID 为 Mac 软件签名 - Apple Developer

在MacOS 10.15之前,应用如果没有签名(signature),那么首次打开时就会弹出“无法验证开发者”的安全提示,因此只要签名了,就可以正常打开软件,

从 10.15 版本后,从 App Store 之外分发的 App 都需要经过 Apple 公证(notarize),否则会弹出“无法打开”,“移到废纸篓”的提示,,非常影响用户第一印象和使用,这就需要再签名之后,再进行公证。下面简单记录一下 mac 下 App 签名和公证的流程。

签名

生成证书请求文件

  1. 进入钥匙串,在菜单中选择 “Certificates” - “Request a Certificate From A Certificate Authority”

  1. 在弹窗中填写如下信息。

填写完后保存到本地,文件名为CertificateSigningRequest.certSigningRequest

在开发者中心创建证书

登录 Apple Developer,进入 Certificates, IDs & Profiles 页面,点击添加按钮,选择 Mac App Distribution

上传刚才添加的 CertificateSigningRequest.certSigningRequest 文件

上传成功后点击下载,将证书保存到本地。

安装证书

  1. 双击下载到本地的证书,添加到钥匙串,如下:

  1. 右键双击,导出证书为 .cer 格式

  1. 打开命令行工具,添加证书

sudo security add-trusted-cert -d -r trustRoot -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/Certificates.cer

Security是Mac系统中钥匙串和安全模块的命令行管理工具,了解更多Security命令,参考:

Mac Security工具使用总结

  1. 添加成功后通过命令查看已添加的证书

security find-identity -p codesigning

如果添加错误,需要删除证书,则使用如下命令:

sudo security delete-certificate -Z 36A8CEEBCA9CC8FA3CAC9B7EA165AA062DCxxxxxx

  1. 进行签名

codesign -f -s "3rd Party Mac Developer Application: xxxx xxx Co. Ltd. (6755xxxxx)" -v "/Users/wangxi/Desktop/Codes/weixin-work/dist/xxxx.app" --deep

6.查看是否签名成功

codesign -vv /Users/wangxi/Desktop/Codes/weixin-work/dist/xxx.app


公证

对您的 Mac 软件进行公证以在 macOS Catalina 中运行 - 新闻 - Apple Developer

公证流程主要通过一行命令,如下:

  1. 获取命令相关字段值
  • primary-bundle-id :当前需要公证 App 的 ID,在苹果开发者后台 Profiles 详情中可以查看(如果没有的话,需要手动添加)

  • username:苹果开发者ID

  • password:应用专用密码。(登录 appleid.apple.com ,点击 Generate Password,创建一个应用专用密码,这样可以避免暴露真实的密码。

  • asc-provider:证书提供者(ProviderShortname)。查询命令如下:

xcrun altool —list-providers -u "apple id" -p "app password"

  • file:需要公证的 App 路径,支持 dmg,zip 和 pkg

填写完对应字段完整的命令如下:

xcrun altool --notarize-app --primary-bundle-id "com.xxx.www" --username "xxx@xxx.com" --password "jvqz-jyym-xxx-xxxxx" --asc-provider "67559xxxxxx" --file "/Users/wangxi/Desktop/Codes/weixin-work/dist/xxx.app.zip"

  1. 执行命令,请求成功后会返回一串字符 RequestUUID

  1. 查询公证结果(一般两分钟左右就会出公证结果)

xcrun altool —notarization-info 78830f47-ecb9-42a6-b9a1-f82922exxxxx —username "xxx@xxx.com" —password "seqb-msgu-eata-xxxx"

如果公证通过,一会儿就会收到 Apple 发送的邮件

如果未通过,可以通过返回的 LogFileURL 查看错误日志,修复相关问题后重新执行公证流程。

参考

MAS: Requesting certificates · nwjs/nw.js Wiki · GitHub

nwjs mac app签名 - 小咔蹭的个人页面 - OSCHINA

iOS包重签名技术知识 - 简书

macOS 下 Electron 程序的签名及公证

codesign gives always no identity found error via terminal

Mac Electron 应用的签名(signature)和公证(notarization) - 海角在眼前 - 博客园

Mac开发-公证流程记录Notarizaiton-附带脚本_CaicaiNo.1-CSDN博客_mac公证

Mac Security工具使用总结 - XRacoon - 博客园

Apple Developer Documentation

Mac notarizing 公证使用记录 - 简书

Apple Developer Documentation

NW.js Mac App 签名公证流程的更多相关文章

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

    App签名 只有用苹果颁发的证书签名的应用才能在App Store上进行销售,所以我们开发的应用必须打上签名. 签名有两种方式,一是使用Xcode,在配置里面设置签名,编译出来的app就有了签名:二是 ...

  2. Mac App Store应用签名和pkg签名,查看签名

    App签名 只有用苹果颁发的证书签名的应用才能在App Store上进行销售,所以我们开发的应用必须打上签名. 签名有两种方式,一是使用Xcode,在配置里面设置签名,编译出来的app就有了签名:二是 ...

  3. RegexKit: A Regular Expression Toolbox Based On NW.js(Node-Webkit) And Other Greate Open Source Projects.

    RegexKit RegexKit: A Regular Expression Toolbox Based On NW.js(Node-Webkit) And Other Greate Open So ...

  4. iOS App签名的原理

    前言 相信很多同学对于iOS的真机调试,App的打包发布等过程中的各种证书.Provisioning Profile. CertificateSigningRequest.p12的概念是模糊的,导致在 ...

  5. NW.js 简介与使用

    简介 (1)以网络最流行的技术编写原生应用程序的新方法 (2)基于HTML5, CSS3, JS and WebGL而编写 (3)完全支持nodejs所有api及第三方模块 (4)可以使用DOM直接调 ...

  6. NW.js使用及打包

    简介 NW.js (原名 node-webkit)是一个结合了 Chromium 和 node.js 的应用运行时,通过它可以用 HTML 和 JavaScript 编写原生应用程序.它还允许开发者从 ...

  7. 【腾讯Bugly干货分享】iOS App 签名的原理

    本文来自 WeRead 团队博客: http://wereadteam.github.io/ iOS 签名机制挺复杂,各种证书,Provisioning Profile,entitlements,Ce ...

  8. 中文代码示例之NW.js桌面应用开发初体验

    先看到了NW.js(应该是前身node-webkit的缩写? 觉得该起个更讲究的名字, 如果是NorthWest之意的话, logo(见下)里的指南针好像也没指着西北啊)和Electron的比较文章: ...

  9. 关于Nodejs开发桌面应用。NW.js 和 Electron 优缺点分析对比

    从开发角度来说,选择用 nw.js 还是 election ,区别其实不是很大.大部分工作还是在自己的 javascript 和 HTML 上.国内比较有名的,比如微信web开发工具.钉钉都是基于 n ...

随机推荐

  1. LeetCode 75,90%的人想不出最佳解的简单题

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题的44篇文章,我们一起来看下LeetCode的75题,颜色排序 Sort Colors. 这题的官方难度是Medi ...

  2. 提高网站访问性能之Tomcat优化

    一.前言 tomcat 服务器在JavaEE项目中使用率非常高,所以在生产环境对tomcat的优化也变得非常重要了,对于tomcat的优化,主要是从2个方面入手,一是tomcat本身的配置,另一个是t ...

  3. 用python复制文件夹

    用python复制文件 1. 根据文件夹的名称复制 需要复制的文件夹编号文件中,每一行表示一个编号,如下所示: > cat id.txt 1 2 3 ... > 目标文件的目录结构树如下所 ...

  4. Hadoop + Hive + HBase + Kylin伪分布式安装

    问题导读 1. Centos7如何安装配置? 2. linux网络配置如何进行? 3. linux环境下java 如何安装? 4. linux环境下SSH免密码登录如何配置? 5. linux环境下H ...

  5. C++值元编程

    --永远不要在OJ上使用值元编程,过于简单的没有优势,能有优势的编译错误. 背景 2019年10月,我在学习算法.有一道作业题,输入规模很小,可以用打表法解决.具体方案有以下三种: 运行时预处理,生成 ...

  6. f(t) = t的傅里叶系数

    计算机网络课程讲到物理层,布置作业的第一题是求f(t)=t (0≤t≤1)的傅里叶系数. 我们知道任何一个周期函数都可以被傅里叶级数逼近.如果是实值函数,则可以用正弦分量,余弦分量,直流分量来近似.公 ...

  7. vc6.0代码转vs2017相关问题

    vc6.0代码转vs2017相关问题 命令行 error D8016: “/ZI”和“/Gy-”命令行选项不兼容fatal error C1083: 无法打开包括文件: “WinSock2.h”: N ...

  8. vue-admin-template搭建后台管理系统的学习(一)

    首先我们来看看这个基础模版的目录结构 ├── build // 构建相关  ├── config // 配置相关├── src // 源代码│   ├── api // 所有请求│   ├── ass ...

  9. Day10-微信小程序实战-交友小程序-自定义callPhone 和copyText组件

    ---为了方便用户可以拨打电话和复制微信号(下面就要实现这样的两个功能) 注意:在小程序中是没办法直接的添加用户的微信的,所以就只能是复制微信号 (这种东西的话可以直接去做,也可以做成组件,做出组件的 ...

  10. Python爬虫实战,完整的思路和步骤(附源码)

    前言 小的时候心中总有十万个为什么类似的问题,今天带大家爬取一个问答类的网站. 本堂课使用正则表达式对文本类的数据进行提取,正则表达式是数据提取的通用方法. 环境介绍: python 3.6 pych ...