- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有可以在 Wine 下的 OS X 上运行的 Windows 应用程序。为了方便起见,我想将应用程序打包为 OS X 应用程序(基于 WineBottler 的 xxx.app
文件夹的 ZIP 存档)。
请注意,应用程序的主要可执行文件(由 Info.plist
的 CFBundleExecutable
标记定义)是 shell 脚本,而不是二进制文件。
我想签署应用程序以通过 OS X Gatekeeper。由于我的完整构建过程在 Windows 上运行(而且我实际上根本没有 Mac),因此我需要在 Windows 上对其进行签名。
我已经发现签署应用程序会创建包含四个文件的 _CodeSignature
文件夹:
CodeDirectory
CodeRequirements
CodeResources
CodeSignature
我没有找到任何描述这些文件内容的规范。
通过实验,我发现 CodeResources
是一个 XML 文件,其中包含应用中所有文件的 SHA-1 哈希值。我可以生成它。
CodeRequirements
二进制文件的内容似乎是固定的。它似乎不会随着应用程序的内容而改变。感谢您的确认。这个文件有什么用?
至于二进制文件CodeDirectory
和CodeSignature
我不知道。
这两个文件都随应用内容而变化。似乎任何应用程序文件更改(包括纯文本许可证文件)都会影响它们。
CodeSignature
显然包含签名。我可以在文件中看到有关代码签名证书的纯文本信息。有没有什么工具可以生成该文件?既然是签名,那应该是相当标准的。尽管可能存在一些额外的二进制元数据,这可能会使生成变得更加困难。有谁知道它的具体标志是什么?我可以想象它只签署 CodeResources
文件,因为它描述了应用程序中的所有其他文件。或者它实际上递归地签署了应用程序中的所有文件?
native 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
Authority=VeriSign Class 3 Public Primary Certification Authority - G5
Signed Time=23.4.2014 23:51:18
Info.plist entries=14
Sealed Resources version=2 rules=12 files=846
Internal requirements count=2 size=136
令人困惑的是它根本没有提到二进制名称。无论如何,这并不能让Gatekeeper高兴。请注意,上述测试是针对已包含 CodeResources
文件的应用程序运行的(这可能也是 Sealed Resources 版本
所指的 rules
和 files
计数与文件内容匹配)。
最佳答案
我们尝试使用libsecurity_codesigning
的源代码对代码签名进行逆向工程。图书馆。虽然看起来可行,但是还是太费力了,所以我们考虑放弃。我们希望至少分享我们迄今为止所发现的内容,以便其他人可以在此基础上继续发展。
我们发现当 codesign
没有找到 MachO 二进制文件,它会退回到 SecCodeSigner::Signer::signArchitectureAgnostic
中实现的“架构不可知”签名.
关键步骤:
CodeDirectory
文件生成。除了文件头(包括目录版本)之外,该目录还包含 bundle 各个部分的少量 SHA-1 哈希 CodeSignature
文件生成。签名标志CodeDirectory
使用加密消息语法 (CMS) 格式的文件。可以使用 OpenSSL 在任何平台上验证签名:
openssl cms -verify -in CodeSignature -inform DER
-content CodeDirectory -noverify -out CodeDirectory.verified
请注意-noverify
需要跳过证书验证,因为 OpenSSL 似乎不支持证书的“代码签名”用途。
OpenSSL 应该能够使用以下命令创建 CMS 签名:
openssl cms -sign -in CodeDirectory -out CodeSignature
-signer certificate.pem -outform DER
但是 OS X 不接受这样的签名。
我们没有取得任何进展。
关于xcode - 在 Windows 上签署 OS X 应用程序(无需协同设计),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23381625/
有人可以告诉我签署我的 clickonce 应用程序的步骤吗? 如果从某人那里购买证书,我该如何安装它在我的开发盒以及我希望它运行的服务器上? 请概述步骤。 马尔科姆 最佳答案 以下是我相信您正在执行
我正在使用命令行 jarsigner.exe -keystore Keys.jks base.apk debug0 使用我自己的 key 退出 APK ,在删除 META-INF/CERT.RSA、C
我使用 iTextSharp 签署 PDF 文件。但是 Adobe Reader 无法验证我的签名。我使用证书颁发机构生成的 SHA-2 测试证书(我也尝试过 SHA-1)。我已经为该机构的测试证
我在尝试签署 F# 类库项目时遇到了很多麻烦。 首先我试过这个thread ,使用 AssemblyKeyFileAttribute 但没有成功。 我还尝试将标志“--keyfile:keyfile.
我正在尝试掌握 .NET dll/程序集的正式签名。 尤其 何时以及如何使用私钥 创建/控制私钥的最佳实践 需要签署什么样的模块/最佳实践 最佳答案 请参阅使用 Strong Name Signatu
我有一个由五个项目组成的解决方案,每个项目都编译成单独的程序集。现在我正在对它们进行代码签名,但我很确定我做错了。这里的最佳做法是什么? 用不同的 key 对每个签名;确保密码不同 用不同的 key
我有一个由五个项目组成的解决方案,每个项目都编译为单独的程序集。现在我正在对它们进行代码签名,但我很确定我做错了。这里的最佳实践是什么? 使用不同的 key 对每个签名进行签名;确保密码不同 使用不同
尝试在 Java 中签署 SOAP 消息时抛出异常: 14:47:39.896 [AWT-EventQueue-0] ERROR com.ui.FinestraPrincipal - WSHandle
我正在运行 java web start 应用程序。由于应用程序数字签名已过期。我已经从 CA 购买了签名,并使用 storetype 作为 pkcs12 对我的 jar 文件进行了签名。 对 JNL
我已经在jar中手动添加了一些类文件。并在服务器中替换。但服务器没有拿出这个新的 jar 说:java.lang.SecurityException:类“test.TestProcess2”的签名者信
我想使用 keytool 对我的插件 jar 进行签名以生成 key 。 我知道有 -validity 选项,但如何设置它以使插件始终有效且永不过期。 谢谢 最佳答案 查看 keytool 文档: V
我有一个需要互联网访问的 Java 应用程序,因为它通过 WebView 嵌入了 Web 浏览器。 JavaFX 组件。 如果应用程序未打包在 Jar 中,则执行不会出现问题。但是,当打包在 Jar
我以前做过,但我完全忘记了如何签署 activeX 控件? 最佳答案 Digital Signing for ActiveX Components (MSDN) 关于activex - 签署 Acti
不知不觉中我删除了通常命名如下的钥匙串(keychain)系统证书 Software Signing com.apple.systemdefault com.apple.kerberos.kdc Ap
我尝试了一些基于 iText v1 或 v2 的数字 PDF 签名实用程序,发现似乎整个 PDF 都加载到内存中(对于 60M PDF 进程可能需要多达 300-400MB 的内存)。 最近的 iTe
我正在尝试使用 Python 对 Amazon 的 SimpleDB 服务进行 API 调用。例如,我使用的是最简单的请求 ListDomains。然而,无论我如何尝试,响应始终是“我们计算的请求签名
我的同事给了我一个Java项目来支持和增强。我需要签署 .jar 文件。我只找到了下一个文件:genkey.bat、project.cer、signjar.bat 和 keystore-jar.jar
目前我正在升级我的旧应用程序,它是使用 itextsharp 5.0.0 完成的到 5.4.5(最新)...但是我在获取等效代码时遇到了问题 PdfSignatureAppearance.SetCry
如果我有一个作为 API 请求发送的复杂对象(例如下面的订单),我应该在生成签名时包括所有属性还是应该只使用一个子集? 我问是因为我不清楚,而且从查看其他 API 的请求参数来看,请求参数是扁平和简单
为什么 WP7 项目不支持强名称签名?项目属性中没有签名选项卡。 无论如何,我已经使用 AssemblyInfo.cs 中的 AssemblyKeyFile 和 AssemblyDelaySign 属
我是一名优秀的程序员,十分优秀!