问题标签 [notarization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
64 浏览

c# - 无法使用 .net 6.0 可执行文件通过苹果公证

问题

.net 6.0 可执行文件不会通过公证。剩下的文件没问题。

设置

  • macOS 卡塔利娜:Version 10.15.7
  • dotnet--版本:6.0.100-rc.2.21505.57
  • 正确的证书在钥匙串中可用
  • 用于签署可执行文件的权利:

发布步骤

dotnet restore -r osx.10.15-x64 DWGuru/src/DWGuru/DWGuru.csproj

dotnet msbuild -t:BundleApp -p:RuntimeIdentifier=osx.10.15-x64 -p:UseAppHost=true -p:PublishSingleFile=true -p:PublishReadyToRun=true -p:Configuration=Release DWGuru/src/DWGuru/DWGuru.csproj

cp -r DWGuru/bin/Release/DWGuru/net6.0/osx.10.15-x64/publish/DWGuru.app . succeeds

codesign DWGuru.app/Contents/MacOS/* --force --timestamp --sign *** --options=runtime --deep --no-strict --entitlements 'entitlements.plist'

codesign DWGuru.app --force --timestamp --sign *** --options=runtime --deep --no-strict --entitlements 'entitlements.plist'

zip -r DWGuru.zip DWGuru.app

xcrun altool --notarize-app --primary-bundle-id "***" --username "***" --password "" --asc-provider "***" --file "DWGuru.zip"

结果

xcrun altool --username "***" --password "***" --notarization-info ***-***-***-***-***

0 投票
1 回答
135 浏览

xcode - 在哪里可以找到 NotaryTool

我正在尝试对我的 OSX 应用程序进行签名和公证。Apple 开发人员文档说要做 xcrun notarytool .... per https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow

但是当我尝试这个时,我得到一个错误xcrun:错误:无法找到实用程序“notarytool”,而不是开发人员工具或PATH。

苹果文档简单地说“安装 Xcode 13 beta”,你就会拥有它。好吧,我在 MacOS 11.6 上安装了 Xcode 13,我必须降级到 beta 吗?重新安装?在某处寻找它?在 Xcode.app 里面?

0 投票
2 回答
80 浏览

.net - MacOS 应用程序公证失败 - 二进制文件的签名无效

该应用程序是使用 Avalonia 和 .net 核心开发的。我对应用程序进行了公证,没有出现任何错误。但在查看应用公证结果时出现以下错误:

从问题的描述来看,它是由代码设计引起的,但在签名时没有出现任何错误。

感谢您的任何想法。亚伦

Eidted:该应用程序在签名前运行良好。签名后,失败。我尝试在 MacOS 的终端中运行它(cd 到 xxx.app/Contents/MacOS 文件夹并执行 ./xxx),并得到以下错误:

0 投票
0 回答
14 浏览

macos - 在 macOS 上从另一个应用程序调用一个应用程序

我的问题是关于从 macOS 上的其他应用程序调用经过公证的应用程序。

通常,如果将两个应用程序打包在一起,说是一个.dmg包,然后是“公证”和“装订”,那么从另一个应用程序调用一个应用程序绝对没有问题。macOS 的 Gatekeeper 知道附加到.dmg包的公证票证涵盖了这两个应用程序。

但是由于与这里无关的原因,我们将被调用的应用程序(我们称之为“ app A ”)放入一个 jar 中。然后,主应用程序将从 jar 中即时提取“app A”,然后调用它。与“正常”场景不同,签名和公证的.dmg包现在将包含 {main app, jar contains " app A "}。

显然,我们在将“ app A ”放入罐子之前对其进行签名和公证。
但是不可能将公证票附加到“ app A ”二进制文件(不可能“装订”它)。这意味着我们的“ app A ”将在 Apple ID 数据库中的某个地方注册,但如果最终用户没有连接到 Internet,我们的主应用程序可能无法正确调用“ app A ”。

总结一下:

  • 正常情况,没问题:.dmg package = {main app, app A },main app 调用app A.dmg包附带的公证票“涵盖”主应用程序和“应用程序 A ”。因此,从主应用程序调用“应用程序 A ”从来都不是问题。
  • 我的情况:.dmg package = {main app, jar contains app A },主应用程序从 jar 中动态提取应用程序 A,然后调用它.dmg包附带的公证票不应该涵盖“ app A ”,因为.dmg包的公证不会查看 jar 档案内部。因此,如果最终用户未连接到 Internet,则从主应用程序调用“应用程序 A ”可能会出现问题。

是否有文档可以明确说明此问题?
我有哪些选择?

0 投票
0 回答
16 浏览

c# - 为什么我的 Xamarin.Mac 应用程序在我启用强化运行时以对其进行公证时崩溃?

我正在 Visual Studio for Mac下使用.NET Framework 4.5.2开发应用程序

Apple 已为其最新的 Mac 版本添加了安全功能,因此我想对该应用程序进行公证,以便 Gatekeeper 可以读取生成的票证,并且下载该应用程序的其他 Mac 用户在启动该应用程序时不会收到安全警告。

借助 Xamarin.Mac,Visual Studio 构建应用程序后,我手动运行了一些命令以对 .app 进行签名。然后,我创建一个安装程序,生成一个包含 .app 文件的 .dmg 文件。然后,我将 .dmg 文件发送到公证服务,该服务会生成包含以下两行的报告。

签署 .app 的命令如下。

双击 .app 文件启动应用程序,这正是我想要的。但是公证报告说

对于以下两个应用程序

为了尝试纠正这个问题,我添加--options了 LoginApp 的参数。

双击 .app 文件仍然会启动应用程序,这正是我想要的。而且公证报告还写着

但仅适用于第二个应用程序,即codesign未修改命令的应用程序。

因此,在我看来,要成功公证应用程序,我所要做的就是以codesign相同的方式修改第二个命令。

我是对的,因为公证报告不再显示错误,并且为 Gatekeeper 生成了一张票。但是,当我双击 .app 以运行该应用程序时,这一次它并没有启动。在 Mac 的控制台应用程序中,我可以看到使用以下几行生成崩溃报告。

我不明白我怎么会SIGSEGV崩溃,因为应用程序完全相同,并且只有经过codesign调整的命令才能使应用程序得到公证。

我所拥有的是,我可以启动应用程序或对其进行公证,而我想要的是两者都有,一个经过公证的应用程序也可以在不崩溃的情况下启动,就像在codesign命令之前一样。

我已经阅读了我可以找到的关于该主题的以下两页 Apple 文档,并且我认为我已经遵循了所有给定的建议,但没有成功解决我的问题。

我一直试图弄清楚一段时间,并尝试了几种codesign命令和参数的组合。我错过了什么?提前感谢任何指针。

注意:所有codesign命令还包含一个--sign "Developer ID Application: MyCompany ([...])"参数。

0 投票
0 回答
15 浏览

macos - 由于打包有效负载中的“可执行文件”,使用“开发人员 ID 安装程序”进行“Eclipse RCP 应用程序”的公证过程失败

我一直在为 MacOSX 开发一个 Eclipse RCP 应用程序,它使用“安装程序”(.pkg)来安装应用程序。

我在以下两个步骤中执行了公证过程(因为安装程序使用“有效负载”):

  1. 协同设计和公证的有效负载(应用程序文件、可执行文件、二进制文件等)
  2. Codesigne & notarize 安装程序文件 ([application_installer_file].pkg)

第 1 步工作正常,运行后我收到了来自苹果的“成功”公证电子邮件:

我什至打开并运行了应用程序以确认它可以正常工作并且一切都按预期工作。

因此,我继续使用WhiteBox 'Packages'软件为有效负载构建“安装程序”,该软件也成功并生成了一个“.pkg”文件。

然后我使用以下命令签署了安装程序产品:

我使用以下方法验证了签名:

这也很好,并确认安装程序文件已成功签名。因此,到此为止,“有效负载”都经过了代码签名和公证,并且安装程序已成功进行了产品签名

但是,当我尝试使用以下方法对 productsigned 安装程序文件进行公证时:

由于路径下有效负载中的可执行文件存在问题,安装程序的公证过程失败:

[productsigned_installer_file.pkg]/com.product.pkg Contents/Payload/Applications/[app_name]/[app_name].app/Contents/MacOS/[executable_file]

公证错误消息是“二进制文件的签名无效”

现在,当我已经从 Apple 在同一文件上获得“成功公证”电子邮件时,我不明白“二进制”如何无效(表明二进制实际上是“有效的”,因为我没有更改有效负载)。

问题是,即使已成功公证,在安装程序包中用作“有效负载”的公证应用程序是否会失败?