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提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值