我正在尝试为稳定的iPhone应用程序设置持续构建/集成.
我有:
最大的问题是代码签名和钥匙串.
我们代表客户的开发者身份创建代码,因此我们有几个开发人员身份,我们将添加更多.
我想将Mini放在一个黑暗的房间里,从不看它,但是第一次使用开发者身份构建时,会弹出一个GUI对话框,询问您是否要始终允许codesign访问开发者身份.
假设您这样做,该对话框修改了钥匙串访问控制列表(ACL),以便允许使用代码签名.
您可以通过打开Keychain Access,扩展证书,选择私钥,右键单击,选择"获取信息",然后切换到"访问控制"选项卡来查看此信息."处女"密钥只在其"始终允许"应用程序列表中具有Keychain Access.您在对话框中使用和确认的一个也将具有编码.
这个框提供了一种添加应用程序的方法,除了你得到标准的Finder文件选择器,它隐藏了Unix文件夹.没有办法导航到/ usr/bin/codesign.所以手动添加是不可能的!
有没有人知道这方面的方法?
我知道有一种方法使用"安全导入"的-T开关,但是当你首先导入密钥时必须指定ACL,因此在Keychain GUI中添加的任何键都必须被抛出并重新导入.不是很好.
我有可以在Wine下的OS X上运行的Windows应用程序.为方便起见,我想将应用程序打包为OS X应用程序(xxx.app
基于WineBottler 的文件夹的ZIP存档).
请注意,应用程序的主要可执行文件(由CFBundleExecutable
标记定义Info.plist
)是shell脚本,而不是二进制文件.
我想签署应用程序以通过OS X Gatekeeper.由于我的完整构建过程在Windows上运行(因为我实际上根本没有Mac),我需要在Windows上进行签名.
我已经发现签署应用程序会创建_CodeSignature
包含四个文件的文件夹:
CodeDirectory
CodeRequirements
CodeResources
CodeSignature
Run Code Online (Sandbox Code Playgroud)
我没有找到任何描述这些文件内容的规范.
实验上,我发现这CodeResources
是一个XML文件,其中包含应用程序中所有文件的SHA-1哈希值.我可以产生这个.
CodeRequirements
二进制文件的内容似乎是固定的.它似乎没有随应用程序的内容而改变.确认表示赞赏.这个文件有什么用?
至于二进制文件CodeDirectory
,CodeSignature
我不知道.
两个文件都随应用内容而变化.似乎任何应用程序文件更改(包括纯文本许可证文件)都会影响它们.
该CodeSignature
显然包含了签名.我可以在文件中看到有关代码签名证书的纯文本信息.有没有可以生成文件的工具?因为它是一个签名,它应该是非常标准的.虽然可能有一些额外的二进制元数据可以使生成更加困难.有谁知道它具体签署了什么?我可以想象它只标记CodeResources
文件,因为它描述了应用程序中的所有其他文件.或者它是否实际上递归地签署了应用程序中的所有文件?
原生OS X应用程序CodeResources
只有.所以实际上没有签名_CodeSignature
.我想这是因为他们在主可执行二进制文件中嵌入了签名.请注意,我的[Windows]二进制文件(虽然它没有Info.plist
像上面提到的那样直接引用)是使用Windows进行代码签名的signtool.exe
.显然OS X即使没有引用也能识别签名,因为codesign -d -vvv xxx.app
输出包含有关证书的信息:
Executable=/Applications/WinSCP.app/Contents/MacOS/startwine
Identifier=WinSCP
Format=bundle with generic
CodeDirectory v=20100 size=135 flags=0x0(none) hashes=1+3 location=embedded
Hash type=sha1 size=20
CDHash=a1ef4f04b2c1b4b793788ce3ab9d7881528f3d95
Signature size=4867
Authority=Martin Prikryl
Authority=VeriSign Class 3 Code Signing 2010 CA …
Run Code Online (Sandbox Code Playgroud) 我无法找到与代码签名相关的此错误的定义.对于该做什么,我真的很难过.
尝试执行此命令行时发生错误:
codesign -s "Developer ID Application: Name (ID)" -fv --deep Application.app/
Run Code Online (Sandbox Code Playgroud)
系统:
Yosemite 10.10.3上的XCode 6.2
我重新安装了XCode,仍然没有运气.这适用于桌面应用程序.
如果这是一个愚蠢的问题,请道歉!
我正在尝试使用shell命令使用jenkins管道构建我的应用程序.下面是我用来构建应用程序的命令.
sh 'xcodebuild -workspace projectname.xcworkspace - allowProvisioningUpdates -scheme projectname_UAT -sdk iphoneos - configuration Debug clean build'
Run Code Online (Sandbox Code Playgroud)
以下是我得到的控制台错误.
注意:使用新的构建系统
注意:规划构建
2018-10-11 11:19:36.638 xcodebuild [92399:5181481] DVTPortal:服务''从门户网站遇到意外的结果代码('1100')
2018-10-11 11:19:36.638 xcodebuild [92399:5181481] DVTPortal:错误:
错误域= DVTPortalServiceErrorDomain代码= 1100"您的会话已过期.请登录." UserInfo = {payload = {type = mutable dict,count = 9,
entries =>
0 : responseId = <CFString 0x7ff48deef220 [0x7fff94b6daf0]>{contents = "40d9ad44-c951-49da-b3f3-b3ea434765a1"}
2 : <CFString 0x7fff94a90b58 [0x7fff94b6daf0]>{contents = "protocolVersion"} = QH65B2
3 : <CFString 0x7ff48dea3420 [0x7fff94b6daf0]>{contents = "requestUrl"} = <CFString 0x7ff48de3d9a0 [0x7fff94b6daf0]>{contents = "https://developerservices2.apple.com/services/QH65B2/viewDeveloper.action"}
6 : <CFString 0x7ff48dec8c30 [0x7fff94b6daf0]>{contents …
Run Code Online (Sandbox Code Playgroud) continuous-integration xcodebuild codesign jenkins-pipeline xcode10
首先,一点背景:我正在调查为什么我公司的MacOS/X应用程序(所有帐户似乎都正确签名;它在MacOS/X 10.11.x和10.12.x下正常运行; Gatekeeper在所有方面都很好用MacOS版本;"spctl --assess"和"codesign -vvvv"都表示满足其对所有操作系统版本的要求)但是当我尝试启动时,它不会在OS/X 10.10.x下启动 - 在10.10.x下它,我得到一个崩溃报告,其中dyld抱怨某些库未正确签名:
Dyld Error Message:
Library not loaded: @executable_path/../Frameworks/libcrypto.1.0.0.dylib
Referenced from: /Applications/MyApplication v123/MyApplication.app/Contents/MacOS/MyApplication
Reason: no suitable image found. Did find:
/Applications/MyApplication v123/MyApplication.app/Contents/MacOS/../Frameworks/libcrypto.1.0.0.dylib: code signature invalid for '/Applications/MyApplication v123/MyApplication.app/Contents/MacOS/../Frameworks/libcrypto.1.0.0.dylib'
Run Code Online (Sandbox Code Playgroud)
在调查这个问题时,我注意到.app/Contents/Framework中的库 - 都是使用完全相同的codesign命令签名的,通过运行OS/X 10.12的OS/X构建机器上的build/package脚本 - - 为它们计算不同类型的哈希值.
也就是说,如果我查看其中一个非Qt .dylib文件是如何签名的,我看到它只记录了一个sha256哈希:
sierrabuild-polaris:MyApp v123 autobuild$ codesign -vvvd ./MyApp.app/Contents/Frameworks/libsndfile.1.dylib
Executable=/Applications/MyApp v123/MyApp.app/Contents/Frameworks/libsndfile.1.dylib
Identifier=libsndfile.1
Format=Mach-O thin (x86_64)
CodeDirectory v=20200 size=4140 flags=0x0(none) hashes=125+2 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha256=b4256e9bf0fac567bb8ac86f56964c066b93d069
Hash choices=sha256 <----------------------------- ONLY 256!?
CDHash=b4256e9bf0fac567bb8ac86f56964c066b93d069
Signature size=8846
Authority=Developer ID Application: MyCompany
Authority=Developer ID …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将我们现有的应用程序上载到苹果公司进行公证。
根据文档https://help.apple.com/xcode/mac/current/#/dev88332a81e, 我必须打开xcode存档管理器的应用程序。
我们有一个从jenkins构建服务器生成的dmg文件。如何在xcode中打开dmg文件进行上传?
此外,是否有一些我可以用于公证的命令行工具?
如何在XCode iPhone项目中使用非默认钥匙串.
我已经在"代码签名"构建设置中的"其他代码签名标志"中尝试了"--keychain mycerts.keychain".
我很难找到代码签名问题的答案.
我们有一个在Cocoa下编写的Mac OS应用程序.最后 - 我们做了代码签名,但我想在可执行文件中添加额外的安全检查.
我的想法是验证当前可执行文件启动时签名的证书指纹.如果它丢失或无效(根据应用程序中的硬编码哈希进行检查) - 我们将其关闭.
到目前为止,我还没有能够获得用于以编程方式对可执行文件进行编码并检查其数据的证书.
有没有人知道如何做到这一点?
非常感谢你!马丁K.
有没有办法在Word 2003和/或Word 2007文档中自动代码签署VBA项目?
通过自动化我的意思是通过命令行实用程序或通过Word VBA自动化?
动机:我想编写几个Word模板的代码作为自动日常构建和分发周期的一部分.现在我们必须通过在Word中打开每个文档并重新签名来手动执行此操作.
谢谢你,马尔科姆
我更新了我的IOS开发人员证书,我从钥匙串中删除了旧证书并点击了我的证书.在钥匙串中看起来很正常,我在那里有分发,开发人员,WWDC证书.每个配置文件看起来都有绿色标记在管理器中的团队和配置配置文件部分但在Xcode下的代码签名身份下没有配置文件当前匹配自动配置文件下的开发人员配置文件选择(推荐).我该怎么办?提前致谢.