标签: codesign

如何从Apple下载经过公证的文件?

我已经通过命令行成功地为我正在为其开发插件的 Mac 应用程序公证了插件。该插件旨在在 Mac 应用商店之外分发。

xcrun altool --notarize-app --primary-bundle-id "com.demo.bundle.id" --username "email@abc.com" --password "xxx-x-xxxx-xx" --file Plugin.zip
Run Code Online (Sandbox Code Playgroud)

收到一封电子邮件,表明已成功公证,并且该电子邮件包含有关如何导出以进行分发的说明。然而,这是 XCode UI 的说明,但我通过命令行进行了公证,因此这些说明不适用于我。是否有命令行来下载经过公证的文件(Plugin.zip),或者如何Plugin.zip从 Apple 获取该文件并将其分发到我的网站上?

更新:

事实证明,您可以对 .zip 文件进行公证,但无法装订它。因此,我决定创建一个 .pkg 来分发我的插件,而不是通过 zip 文件分发。

这是我成功公证和装订我的插件所遵循的步骤,假设我的插件名称是FileConvertor.PluginExtension

  1. 对要包含在安装程序中的二进制文件进行代码签名。codesign --sign "Developer ID Application: Developer Name" --verbose=4 --deep --force --strict FileConvertor.PluginExtension
  2. 创建您的安装程序 (.pkg),添加上面签名的代码.PluginExtension
  3. 现在使用安装程序证书签署您的安装程序。productsign --sign "Developer ID Installer: Developer Name" ./FileConvertor.pkg ./FileConvertorSigned.pkg
  4. 发送签名的安装程序进行公证xcrun altool --notarize-app --primary-bundle-id "com.demo.plugin" --username xyz@abc.com" --password "xxxx-xxxx-xxxx-xxxx" --file FileConvertorSigned.pkg
  5. 如果成功公证,请装订您的安装程序xcrun stapler staple …

macos codesign notarize

5
推荐指数
1
解决办法
1315
查看次数

DotNet Core Console应用程序公证程序?

我正在寻找对 macOS Catalina (10.15) 的 DotNet Core 控制台应用程序进行签名和公证的详细过程。我的应用程序构建并运行得非常愉快,但签名过程对我不起作用。也就是说,我不知道我是否在项目定义或构建过程中弄乱了某些内容,或者是否修改了协同设计的参数。

在 Visual Studio for Mac 中查看 DotNet Core (3.1) 控制台应用程序的项目选项时,没有任何专门针对 Mac 签名的设置,因为有明确的 macOS DotNet/Xamarin 应用程序。

无论进行多少谷歌搜索,都找不到一个程序来逐步介绍如何设置项目并对其进行签名和公证。一般来说,我能得到的最好结果是在协同设计期间出现“主要可执行文件未能严格验证”消息。我最新的、最伟大的(可能是偏离目标的)协同设计命令如下:

codesign -s "Developer ID Application: James Ramsey (XXXXXXXXXX)" --timestamp --options runtime -f --entitlements FMComparison_DotNet/entitlements.plist --deep <pathToMyPublished app>/FMComparison_DotNet

Run Code Online (Sandbox Code Playgroud)

有谁知道实现这一目标的最佳程序是什么?

谢谢。

command-line codesign .net-core macos-catalina

5
推荐指数
0
解决办法
382
查看次数

使用 CMake 签署 MacOS 框架

我正在开发一个 C/C++ 库,它将作为苹果架构的框架进行分发,但我无法让 CMake 签署我的二进制文件以进行公证/分发。

使用 CMake 协同设计框架的最佳实践是什么?

由于该库将支持多个平台,因此我想使用现有的 conan/cmake 构建系统,而不是专门为苹果维护单独的 Xcode 项目文件。理想情况下,我希望将代码签名作为构建的一部分,这样 conan 就会自动打包签名的框架。

根据CMakeFRAMEWORK文档和我在该主题上挖掘的其他问题,似乎只要设置了XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY和,CMake 就应该签署我的输出包XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED,但这不是我所拥有的经验。我的 CMake 输出没有提及代码签名,并且在构建/打包后,快速代码签名验证显示代码签名没有发生:

codesign -v build/package/HelloWorld.framework

build/package/HelloWorld.framework: code object is not signed at all
In architecture: x86_64
Run Code Online (Sandbox Code Playgroud)

我的框架的目标属性设置如下:

set_target_properties(${TARGET_NAME} PROPERTIES
    OUTPUT_NAME ${TARGET_NAME}
    PUBLIC_HEADER "${PUB_INCLUDES}")
if((CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") AND BUILD_SHARED_LIBS)
    set_target_properties(${TARGET_NAME} PROPERTIES
        FRAMEWORK TRUE
        FRAMEWORK_VERSION C
        MACOSX_FRAMEWORK_IDENTIFIER "com.example.project"
        XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED ${APPLE_SIGN_BINARIES}
        XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${APPLE_CERT_IDENTIFIER}"
        XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "XXXXX")
endif()
Run Code Online (Sandbox Code Playgroud)

我通常使用 APPLE_CERT_IDENTIFIER =“开发人员 ID”,但我也尝试过各种其他开发人员和分发证书,包括尝试它们的全名(即“开发人员 ID 应用程序:Devname(十六进制代码)”)。将 CODE_SIGNING_REQUIRED 设置为 …

c++ macos xcode cmake codesign

5
推荐指数
1
解决办法
1301
查看次数

如何对库进行临时签名?

尝试运行链接到动态库的可执行文件,出现以下错误:

Library not loaded:
[...]
Reason: tried:
    <lib> not valid for use in process: mapped file has no 
    cdhash, completely unsigned? Code has to be at least ad-hoc signed.
Run Code Online (Sandbox Code Playgroud)

如何临时签署我的库?

macos codesign ios

5
推荐指数
2
解决办法
4190
查看次数

在其他xcode iphone项目成功签名后,Codesign只能成功

我有一个奇怪的问题.Codeign拒绝签署我拥有的这个大项目,项目A,但确实签署了另一个,项目B.但是,当我签署项目B时,它也可以突然签署项目A. 我百分百肯定我没有改变任何其他东西.我采取的步骤是:

尝试构建,签署A - 签署失败
尝试构建,签署B - 成功
尝试构建,签署A - 成功

成绩单:

CodeSign build/Debug-iphoneos/CPPlayer.app
cd /Users/nick/CPPlayer
setenv CODESIGN_ALLOCATE /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/usr/bin/codesign -f -s "iPhone Developer: Nick Overdijk (PM7C8QKTYS)" --resource-rules=/Users/nick/CPPlayer/build/Debug-iphoneos/CPPlayer.app/ResourceRules.plist --entitlements /Users/nick/CPPlayer/build/CPPlayer.build/Debug-iphoneos/CPPlayer.build/CPPlayer.xcent /Users/nick/CPPlayer/build/Debug-iphoneos/CPPlayer.app

/Users/nick/CPPlayer/build/Debug-iphoneos/CPPlayer.app: object file format invalid or unsuitable
Command /usr/bin/codesign failed with exit code 1

在图片中:见这里(imageshack gallery)

有什么我可以错过的吗?任何想法如何发生这种情况?我现在一切都工作了,这似乎解决了我的问题,但我想了解发生了什么.

有时它也是这样的:
构建/签署A - 成功
构建/签署A - 失败
构建/签署B - 成功(B似乎总是成功)
构建/签署A - 成功
构建/签署A - 失败

因此,在每次成功构建A之后,我必须构建并签署B以便能够再次签署项目A. 我可以连续多次重建项目B,它总是成功的.

我不确定它是否重要,但是当我尝试在模拟器中运行它(iPhone OS 3.1.2的调试模式)时,它无法相互安装.所以:

构建/运行 - 失败
构建/运行 - 工作
构建/运行 …

iphone xcode codesign

4
推荐指数
1
解决办法
7990
查看次数

用于签署iPhone应用程序的供应配置文件的名称?

我编写了一个脚本,用于xcodebuild生成iPhone应用程序的AdHoc版本.

我想编辑此脚本以输出用于签署构建的Provisioning Profile的名称.
这将允许我在自动生成的zip中包含Provisioning Profile.这样,我就可以自动将存档发送给AdHoc测试人员,并确保他们拥有正确的配置文件来安装应用程序.

有没有办法提取用于签署应用程序的供应配置文件名称或文件:

  • 来自建立和签署的应用程序
  • 来自Xcode项目(我不想手动解析project.pbxproj文件,因为此解决方案可能在下一个Xcode更新中中断)
  • 任何其他可编写脚本的方式

Unforgiven 建议使用该命令security获取用于签署应用程序的证书的名称.获得此信息后,有没有办法找到供应配置文件的名称?


这是我尝试过的:

遗憾的是,构建期间xcodebuild的输出不包含此信息.在CodeSign步骤中,有一行:

/usr/bin/codesign -f -s "iPhone Distribution: My name" ...

但我无法将其与证书相匹配.

我研究了使用codesign和命令

/usr/bin/codesign -d -vvv --entitlements - -r - /Users/lv/Desktop/TicTacBoo.app/TicTacBoo
看起来很有希望,但它没有给我我需要的信息.
我还没有在xcodebuild中找到任何有用的选项.

iphone build-automation xcode provisioning codesign

4
推荐指数
1
解决办法
7233
查看次数

使用xcode5.0.1 + mac os 10.9进行协同设计错误

我刚刚更新到mac os 10.9和xcode 5.0.1,但是codesign返回了错误消息"CSSM_SignData return:800108E6".没有带有"退出代码1"的消息和其他任何消息.谁有解决方案?谢谢.

codesign xcode5 osx-mavericks

4
推荐指数
1
解决办法
2844
查看次数

iOS:Codeign错误:在子组件Base.lproj中无法识别,无效或不适合的包格式

我有一个正在建设的项目.看似随机,执行一次运行会导致代码错误,我已经无法解决2天了.

错误如下:

包格式无法识别,无效或不适用在子组件中:/Users/user/Library/Developer/Xcode/DerivedData /.../Base.lproj

我不确定为什么会出现这个错误.它可能发生在我在Xcode中选择了一个"团队"之后 - 但我不记得了(我不知道为什么会导致这个问题).我尝试清理我的钥匙串,在我的开发者帐户中创建包标识符,从其他帖子创建一些终端命令,但无济于事.

对我来说奇怪的是它似乎表明它与Base.lproj有关 - 它只包含LaunchScreen笔尖和我的Main.storyboard.故事板中是否会出现导致编码问题的问题?别的什么?SOS.

xcode code-signing codesign ios

4
推荐指数
1
解决办法
5496
查看次数

IBM Worklight/MobileFirst 6.x/7.0 - "代码对象根本没有签名." buildtime.sh脚本出错

将Worklight应用程序上传到iTunes时出错.

应用程序验证失败,并显示以下错误:

签名无效.代码对象根本没有签名.路径[MyApp.app/buildtime.sh]中的二进制文件包含无效签名.确保您已使用分发证书(而非临时证书或开发证书)对您的应用程序进行了签名.验证Xcode中的代码签名设置在目标级别是否正确(覆盖项目级别的任何值).此外,请确保您上传的软件包是使用Xcode中的Release目标而不是Simulator目标构建的.如果您确定您的代码签名设置正确,请在Xcode中选择"全部清除",删除Finder中的"构建"目录,然后重建您的发布目标.有关详细信息,请参阅 https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html

我的问题是我在2周前提交了相同的应用程序,它运行正常.今天的版本只更改了www /文件夹内容,并且因此错误而失败.

我搜索了这个问题,发现Xbox 4.6.3中的Dropbox API的Codesign 失败:"代码对象根本没有签名",但我尝试添加--deep选项,这对我没用.

这可以与buildtime.sh脚本有关吗?在我阅读它时,它似乎只是更新worklight.plist文件中的构建时间值:

#!/bin/bash
# Licensed Materials - Property of IBM
# 5725-I43 (C) Copyright IBM Corp. 2006, 2013. All Rights Reserved.
# US Government Users Restricted Rights - Use, duplication or
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

# Update buildtime in project 
echo -n ${TARGET_BUILD_DIR}/${PRODUCT_NAME}.app/worklight.plist | xargs -0
/usr/libexec/PlistBuddy -c "Set :buildtime `date +\"%s\"`"
Run Code Online (Sandbox Code Playgroud)

此外,当谷歌搜索问题时,我发现了一些类似的问题:https: //github.com/AppGyver/steroids/issues/918他们似乎使用sh脚本的混合应用程序,这让我相信这个问题与构建时间有关.sh脚本.

我删除了构建时脚本,并在我的Xcode项目中删除了运行脚本阶段,这次它没有给出错误.

这样做是否安全? …

xcode codesign ios ibm-mobilefirst

4
推荐指数
1
解决办法
623
查看次数

Codesign 软件在 Windows 10 上仍然发出警告

我使用良好的证书对我的安装软件进行了协同设计。我刚刚注意到当前版本的 Windows 10 显示以下警告消息。这在以前版本的 Windows 10 中没有出现。如何防止弹出此警告?

Windows 保护您的 PC

Windows Defender SmartScreen 阻止无法识别的应用程序启动。运行此应用程序可能会使您的电脑面临风险。

code-signing codesign

4
推荐指数
1
解决办法
2378
查看次数