问题标签 [notarize]
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.
java - 使用 jpackage 实用程序的代码签名 + 公证不适用于 macOS
在某些情况下,我正在使用 jpackage 实用程序来尝试创建一个签名的 DMG 文件以交付给我的用户。我需要签署这个 DMG 的原因是因为我想对软件进行公证。顺便说一句,我不确定是否可以(还)使用 jpackage 进行公证,但我还是在尝试。
但是,我在使用 jpackage 的内置代码签名选项时遇到了问题,这是成功公证的先决条件。
我正在使用选项运行 jpackage --mac-sign --mac-package-signing-prefix CardrDebate --mac-signing-key-user-name "Developer ID Application: ********** (*******)"
(我已经编辑了实际的开发人员 ID,因为它在 StackOverflow 上是公开的)。
创建 jpackage 应用程序映像后,我通过导航到几个生成的 .dylib 文件并尝试测试生成的代码是否实际上已签名codesign -vvv {filename}.dylib
,并且 codesign 说该对象根本没有签名(不是它被错误地签名,而是它只是根本没有签名)。
因此,我相信我的问题是由于我(可能)在 macOS 上错误地使用了 jpackage 的签名选项。我应该如何使用这些?
xcode - 如何更好地诊断 macOS 上的特定代码设计错误?
在 macOS 系统上,我遇到动态链接错误 - DYLD,[0x5] 代码签名错误 - 在我自己的系统(Catalina 和 Mojave)以外的系统上启动应用程序时。为什么我的系统工作正常不清楚?我的 dylib 是从我的应用程序包的 Frameworks 文件夹中加载的。我可以验证库使用的@rpaths 是否正常工作。同样,这些库在我的系统上加载良好。
我可以成功公证我的应用程序。公证工具和日志不会报告任何错误或警告。无法在崩溃报告中加载的库确实存在于报告的路径中。我可以运行“spctl -a -t exec -vv MyFineApp.app”并且该工具没有报告任何错误。它说捆绑被接受。有什么想法可以更好地诊断为什么应用程序在我的计算机上运行而不是在其他计算机上运行的问题?同样,报告是代码签名无效,但从未在其他地方报告过。该库的代码签名如下。
崩溃报告
终止原因:DYLD,[0x5] 代码签名
应用程序特定信息:dyld:启动、加载依赖库
Dyld 错误消息:库未加载:@rpath/libavcodec.dylib 引用自:/Applications/MyFineApp.app/Contents/MacOS/MyFineApp 原因:找不到合适的图像。确实发现:/Applications/MyFineApp.app/Contents/MacOS/../Frameworks/libavcodec.dylib:代码签名对“/Applications/MyFineApp.app/Contents/MacOS/../Frameworks/libavcodec.dylib”无效
java - libAppleScriptEngine.dylib 的 Java 公证失败,二进制文件使用的 SDK 早于 10.9 SDK
2019 年底,我对我的 Java 8 应用程序进行了基本公证,2020 年 2 月,Apple 收紧了关于公证的规则,这阻止了我的应用程序被公证。因为无论如何我都需要迁移到 Java 11,所以我切换到了 Java 11,因为我知道这可以公证并进行必要的代码更改,但仍然存在一些问题。
具体来说,我的应用程序中有一个选项可以使用 Applescript与Apple Music应用程序(以前的 iTunes)进行通信。在 Java 11 之前,这始终可以通过使用 MacoS JDK/JRE 和 applescript jar 附带的 libAppleScriptEngine.dylib(最初由 Apple 提供并提供接口,因此可以通过 javax.scripting 查找)来实现。
在 Java 11 中,libAppleScriptEngine.dylib 已删除,如Oracle JDK 11 迁移指南中所述,没有提供替代品。
移除 AppleScript 引擎
AppleScript 引擎是一个特定于平台的 javax.script 实现,已在 JDK 中删除,没有任何替换。
AppleScript 引擎在最近的版本中几乎无法使用。该功能仅适用于 JDK 7 或 JDK 8 在系统上已具有 Apple 版本的 AppleScriptEngine.jar 文件的系统。
但是,如果我在我的包的 MacOS 文件夹中使用 libAppleScriptEngine.dylib 部署我的应用程序,则 applescript 将继续在 Java 11 上正常运行。
但不幸的是(尽管应用程序的签名验证没有错误)公证失败并出现以下错误
那么有没有办法解决这个问题?
这是构建脚本的结尾
我尝试用最新的 Oracle Java 8 版本 Oracle 8u241替换 libAppleScriptEngine.dylib 的版本,但没有任何区别。我很惊讶它是针对旧 sdk 构建的,因为我听说现在可以公证 Java 8 构建。
我可以选择不签署 libAppleScriptEngine.dylib 文件以允许公证成功吗?
macos - Delphi 10.3.3 macOS Notarization,错误客户端退出代码1
我已经看到有关 Android 和 IOS 的此错误的问题,但我在尝试对我的 macOS 64 位应用程序进行公证时遇到此错误。我没有看到任何其他细节,所以我不知道从哪里开始。我在 10.3.2 中没有收到此错误。有什么建议么?
libraries - 映射进程和映射文件具有不同的团队 ID
macOS 10.14.5 --> 抱歉,我的 Catalina 正在隔离工作!Xcode 11.2.1
com.apple.security.cs.disable-library-validation 的行为不像记录的那样。
我的测试应用程序基于 X11 (XQuartz),因此需要来自 /opt/X11/ 和 /usr/lib/ 的库,它们的团队 ID 与我的不同。
该应用程序包含一个 C 二进制文件,它调用“winteracter”一个小的 FORTRAN 二进制文件,它显示一个 X11 窗口和对话框。在导入 Xcode 之前,“winteracter”被签名/硬化/沙盒化(继承)。它放在 Resources 文件夹中,但放在 MacOS 中没有区别。
权利如下: 主要应用:
辅助二进制文件:
该应用程序成功公证(因此签名、强化和沙盒都可以) High Sierra:它可以工作。Mojave:它给出了运行时错误(控制台:error+fault+winteracter):
这很奇怪,原因有两个:1-拒绝不同的团队 ID 与 Apple 对“禁用库验证”的描述相矛盾 2-2019 年 12 月我通过简单地使用带有“-o 运行时”的命令行代码设计获得了一个功能性公证应用程序. 这不再有效。
有什么建议吗?
xcode - 如何获取“Developer ID Application”或“Developer ID Installer”证书的私钥?
我想了解如何获取Developer ID Application或Developer ID Installer证书的私钥?
- 开发者 ID证书只能由帐户持有者创建 https://developer.apple.com/support/roles/ -完成
- 我有
Developer ID Application
证书。 - 但是缺少私钥。
我在哪里可以找到合适的私钥?
macos - 如何正确地将 MacOS 签名和公证添加到使用 Qt 构建的 .app
我有一个应用程序(使用 Qt / QML 构建),我正在尝试对其进行签名和公证,以便在 App Store 之外进行临时分发(供公司内部使用)。Apple 确认我的软件已经过公证,然后我装订了我的 .app - 但 Gatekeeper 仍然阻止应用程序运行并提醒用户:
无法打开App Name ,因为 Apple 无法检查其是否存在恶意软件。
我究竟做错了什么?.
以下是我正在遵循的步骤:
在 Qt Creator 中运行 QMake / Build。
将生成的 Info.plist 文件中的 CFBundleIdentifier 键修改为 com. 我的公司名称。appName而不是 com.yourcompany。由 Qt 生成的appName 。
cd
到我的构建目录。冉macdeployqt
/Users/<user>/Qt/5.13.0/clang_64/bin/macdeployqt <appName>.app -qmldir=<project source code dir>
:。代码签名:(
codesign --deep -f -s "Developer ID Application: <company name> (<team id>)" --options "runtime" "<appName>.app/"
其中开发人员 ID 应用程序是出现在 KeychainAccess 中的名称)。验证签名:
codesign -dv --verbose=4 <appName>.app
返回:或者,如果我查看来自应用程序包内 Qt 框架的(随机选择的)可执行文件:
/li>
codesign -dv --verbose=4 <appName>.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore
返回:压缩:
ditto -ck --rsrc --sequesterRsrc "<appName>.app" "<appName>.zip"
上传公证:
xcrun altool --notarize-app -t osx -f <appName>.zip --primary-bundle-id="com.<my company name>.<appName>" -u "<develpper ID @ company name> -p "<app specific password>"
收到一封“您的 Mac 软件已成功公证”的电子邮件。
订书钉:
xcrun stapler staple "<appName>.app"
返回:The staple and validate action worked!
分发:
- 创建一个空白的稀疏捆绑磁盘映像。
- 将appName .app 包复制到其中(以及 /Applications 的快捷方式)。
- 转换为只读。
- 分发给用户。
如果我查看 Console.app - 我可以在日志中看到该应用程序被拒绝打开:
XprotectService
正如this SO answer所暗示的那样,控制台中没有任何内容。
如果我尝试使用 spctl 检查签名,它会失败:
spctl -v -a -t open --context context:primary-signature <appName>.app
回报:
spctl -a -t exec -vv <appName>.app produces
回报:
但是,如果我使用订书机来验证应用程序,它会通过:
stapler validate <appName>.app
返回:
关于我的环境:
MacOS 10.15.3
Qt 5.13
Xcode 11.4
macos - Mac App Bundle 在经过公证加固后无法访问 USB 设备
我们编写了一个通过一些闭源库访问 USB 卡终端的本机应用程序。该应用程序使用 C/C++ 编写,兼容跨平台(已经在 Linux 和 Windows 上运行)并使用 Gtk3 作为 UI。因此我们根本不使用 XCode。此外,我们使用 LIBMICROHTTPD、GNUTLS、JSONCPP 和其他一些东西,我们还链接了 LIBASAN 1。该应用程序作为应用程序包运行良好,并且当可执行文件未使用--options=runtime
. 但是为了获得成功的公证,我们必须签署可执行文件,--options=runtime
这会破坏应用程序。它启动正常,但在实际 USB 访问期间挂起/循环。
使用我们和 USB 卡终端之间的闭源库很难为您提供一个最小的可行示例。但我试图向您展示我们正在做什么:
第一个codesign
对于公证至关重要,但会破坏应用程序。在没有它的情况下签名--options=runtime
时工作正常。我们还压缩应用程序包公证并装订它。
信息列表
权利.plist
我错过了什么,做错了什么?
下面我添加了应用程序包的完整目录结构,以便为您提供概述。如有必要,我还可以为您提供实际的可执行应用程序包,但如果没有附加的兼容硬件终端,它是无用的。
谢谢
1我们在 MacOS(或使用 CLANG?)上有某种未定义的行为,并且与 LIBASAN 链接已被证明是一种解决方法。
macos - MAC上的Syncfusion Webkit渲染引擎二进制公证
我正在使用 MAC 操作系统上的 syncfusion webkit 渲染将 html 转换为 PDF。在我对我的应用程序进行公证之前,它工作正常。当我尝试对我的应用程序进行公证时,我收到了类似QtMacBinaries are not signed
.
我使用我的开发人员 ID 证书签署了所有QtMacBinaries 。现在公证成功了,但是 html 到 PDF 的转换失败了。
我收到以下错误:
我不确定我错过了什么?罪魁祸首是Syncfusion.WebkitWrapper二进制文件。如果我使用我的开发人员 ID 证书对其进行签名,它将无法加载 QT 库。如果我在没有签名的情况下使用它,它可以正常工作。
Code