Mac app 公证处理流程

Mac 开发系列

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

mac 开发的app如果没有提交到appstore, 如果想通过浏览器下载分发的方式,让用户能正常下载安装的话,需要对app, dmg, pkg进行公证处理。


提示:以下是本篇文章正文内容,下面案例可供参考

一、为什么需要公证处理?

不公证的结果就是: 双击app会有这个提示,

请添加图片描述

公证之后的,双击app打开时是这样的:

在这里插入图片描述

二、公证处理流程

1.公证总体流程介绍

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

公证app

2.公证处理流程

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


3.公证签名结果验证

  • 针对单个库进行验证
codesign -vvvv -R="notarized" --check-notarization my_lib.dylib
my_lib.dylib: valid on disk
my_lib.dylib: satisfies its Designated Requirement
test-requirement: code failed to satisfy specified code requirement(s)
spctl --assess --verbose=4 --type install my_lib.dylib
my_lib.dylib: rejected
source=Unnotarized Developer ID
 Frameworks spctl --assess --verbose=4 --type install libFFAppSettings.dylib
libFFAppSettings.dylib: accepted
source=Notarized Developer ID
➜  Frameworks spctl --assess --verbose=4 --type install libFFCloudDisk.dylib
libFFCloudDisk.dylib: accepted
source=Notarized Developer ID
➜  Frameworks spctl --assess --verbose=4 --type install libFFCore.dylib
libFFCore.dylib: accepted
source=Notarized Developer ID
➜  Frameworks spctl --assess --verbose=4 --type install libFFEffectWidgets.dylib
libFFEffectWidgets.dylib: accepted
source=Notarized Developer ID
➜  Frameworks spctl --assess --verbose=4 --type install libFFEffectWidgets.dylib
libFFEffectWidgets.dylib: accepted
source=Notarized Developer ID
➜  Frameworks spctl --assess --verbose=4 --type install libFFExport.dylib
libFFExport.dylib: accepted
source=Notarized Developer ID
➜  Frameworks spctl --assess --verbose=4 --type install libFFMediaLibrary.dylib
libFFMediaLibrary.dylib: accepted
source=Notarized Developer ID

三、公证苹果官方说明

1.macOS软件发行前的公证

公证让用户更有信心,你发布的开发者id签名软件已经被苹果公司检查过是否有恶意组件。公证不是应用程序审查。苹果的公证服务是一个自动系统,它会扫描软件中的恶意内容,检查代码签名问题,并迅速将结果返回给你。如果没有问题,公证处会生成一张票,让你把它钉到你的软件上;公证处也会在网上公布这张票,“看门人”可以在网上找到它。
当用户第一次安装或运行你的软件时,会出现一张票(在线的或附在可执行文件上的),告诉Gatekeeper苹果公司对软件进行了公证。Gatekeeper然后在初始启动对话框中放置描述性信息,帮助用户对是否启动应用做出明智的选择。

请添加图片描述


您可以公证几种不同类型的软件交付物,包括:

  • macos app
  • Non-app bundles, such as kernel extensions
  • Disk images (UDIF format)
  • Flat installer packages

如果你的开发者ID签名密钥暴露,那么公证也可以保护你的用户。公证人服务维护使用您的签名密钥分发的软件的审计跟踪。如果您发现您的软件有未经授权的版本,您可以与苹果合作,撤销与这些版本相关的门票。

从macOS 10.14.5开始,使用新的开发者ID证书和所有新的或更新的内核扩展签名的软件必须经过公证才能运行。从macOS 10.15开始,2019年6月1日以后构建的所有软件,以及使用开发者ID分发的软件都必须经过公证。但是,你不需要对你通过Mac应用商店发布的软件进行公证,因为应用商店的提交过程已经包含了同等的安全检查。

1.1 准备公证软件

公证需要Xcode 10或更高版本。创建新的公证应用程序需要macOS 10.13.6或更高版本。装订应用程序需要macOS 10.12或更高版本。

苹果公司的公证服务要求您采取以下保护措施:

  • 为您发布的所有可执行文件启用代码签名,并确保可执行文件具有有效的代码签名,如确保有效的代码签名中所述
  • 使用“开发者ID”应用程序、内核扩展、系统扩展或安装程序证书作为代码签名。(不要使用Mac Distribution、Apple Developer或本地开发证书。)在提交之前验证证书类型,如使用有效的开发者ID证书中所述。有关详细信息,请参见创建、导出和删除签名证书。
  • 如启用强化运行时中所述,为应用程序和命令行目标启用强化运行时功能。
  • 在代码签名中包含安全的时间戳。(Xcode发行流程默认包含一个安全的时间戳。有关自定义工作流,请参见包含安全时间戳。)
  • 不要包含com.apple.security。Get-task-allow授权,值设置为true的任意变体。如果您的软件承载了第三方插件,并且需要这个授权来在主机可执行文件的上下文中调试插件,请参阅避免get-task-allow授权。
  • 链接macOS 10.9及以上版本的SDK,请参见使用macOS 10.9及以上版本的SDK。
  • 确保您的进程具有正确格式化的XML、ascii编码的授权,如确保正确格式化的授权中所述。

苹果公司建议你对你发布的所有软件进行公证,包括旧版本,甚至是不符合所有这些要求或未签名的软件。苹果的公证服务使用了多种方法,包括遥测技术,来决定对已经存在的软件放宽上述哪些规则。有关更多信息,请参阅公证您现有的软件。

部分已存在的软件在公证成功后可能无法正常运行。例如,看门人可能会发现宽松的公证程序无法执行的代码签署问题。总是检查公证日志的任何警告,并在发布之前测试您的软件。

1.2 公证插件

在macOS 10.15及以后版本中,应用程序可以加载隔离的插件——那些从互联网上下载或通过AirDrop传输的插件——只有在插件经过公证的情况下。对于未经公证的插件,用户必须通过打开系统首选项应用程序并导航到安全与隐私中的常规选项卡明确批准插件。

1.2.1 添加插件所需的授权

当你启用额外的安全强化运行时,如公证要求,这影响你的应用程序和任何插件,你的应用主机。插件不声明它们自己的权利。相反,它们继承宿主进程的权限。因此,一个主机应用程序必须包括未来插件所需的所有权利,即使插件是单独公证的。
例如,如果一个插件通过C函数指针覆盖与主机可执行文件进行深度集成,或者为自定义工作流使用JavaScript引擎,那么主机可执行文件必须分别声明允许未签名可执行内存授权或允许执行jit编译的代码授权。在某些情况下,如果主机可执行文件缺乏适当的授权,则插件甚至无法加载。

请注意,即使您的应用程序不提供专用的插件架构,它仍然可能加载插件,如专业无反光镜相机和不符合无人驾驶USB视频设备类(UVC)标准的传统单反相机的驱动程序。如果您的应用程序使用这种硬件,请确保声明禁用库验证授权来加载相应的插件。
还包括资源访问授权,如地址本或位置访问授权,以及相关的用途字符串,支持您的应用程序的插件。例如,如果提供传真服务的打印对话框扩展(PDE)希望访问用户的联系人列表,那么主机可执行程序必须声明地址本授权,并在其信息属性列表中包含NSContactsUsageDescription目的字符串,以便插件进行操作。
有关加固运行时授权的完整列表,请参阅加固运行时。有关使用字符串的信息,请参见请求对受保护资源的访问。

在macOS 10.14。x,对于使用强化运行时的可执行文件,只有当主机可执行文件具有禁用库验证授权时才加载pde。从macOS 10.15开始,不再需要该授权。

1.2.2 作为分发过程的一部分,自动公证你的应用程序

在将你的应用直接分发给客户之前,你的账户持有人必须用你的开发者ID签署应用。Xcode的Organizer窗口包括一个用于生成应用分发版本的工作流程。这个工作流程包括一个自动公证macOS应用的选项。要使用此工作流程公证您的应用程序,请执行以下操作:

  • 打开你的Xcode项目。
  • 为你的应用创建一个存档。
  • 打开Xcode的管理器窗口
  • 在Archives选项卡中,选择您创建的存档。
  • 单击“分发App”,查看分发选项。
  • 为您的发行方法选择Developer ID。
  • 单击下一步
  • 选择“上传”,将您的档案发送到苹果公证服务。
  • 单击下一步

在这里插入图片描述

当你点击Next时,Xcode会将你的存档文件上传到公证处。当上传完成后,公证处开始扫描过程,通常需要不到一个小时。当公证机构扫描您的软件时,您可以继续准备您的存档以供分发。例如,您可以导出归档文件,并在向客户提供软件之前执行您需要的任何最终测试。
当公证程序完成后,Xcode下载门票并装订到你的存档中。此时,再次导出存档,以获得包含公证单的可分发版本的软件。更多关于如何使用Xcode用户界面上传你的软件的信息,参见上传一个macOS应用程序被公证。
如果Xcode不允许你上传公证文件,请确保你正在构建一个macOS存档文件,就像公证带有外部依赖的macOS应用程序中描述的那样。对于macOS以外的应用,请使用公证工具命令行工具进行公证,具体操作请参见定制公证流程。

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340