在尝试自动编译和签署特定的基于 NSIS 的二进制文件时,我遇到了一些奇怪的行为。即,makensis运行 来wine编译可执行文件,然后osslsigncode使用 来对二进制文件进行签名。
可执行文件似乎构建得很好,因为它可以在 Windows 系统上运行,但是签名存在问题(缺乏更好的词)。由于代码签名证书采用 PKCS#12 格式,因此使用的命令如下所示:
osslsigncode sign -pkcs12 <pkcs12-file> -pass <pkcs12-password> \
-n "Your Application" -i http://www.yourwebsite.com/ \
-in yourapp.exe -out yourapp-signed.exe
我从 osslsigncode 收到“成功”消息,就好像签名顺利一样,但是当二进制文件在 Windows 上运行时(本例中为 Win 7),UAC 表示:
出版商:未知
奇怪的是,当我打开从原始.p12文件中提取的证书并查看其信息时,Windows 随后能够识别发布者和数字签名,就好像它以某种方式意识到了证书路径......?
任何意见,将不胜感激。
使用的编辑1
osslsigncode版本:1.5.2和1.7.1
编辑2
为了进行比较,我尝试使用 进行签名SignTool,显然它的工作没有任何问题。所以这看起来像证书+osslsigncode问题,但我不知道它到底是什么。
我还尝试osslsigncode使用另一个证书使用完全相同的 EXE,并且让事情变得更有趣,它起作用了......(我注意到这两个证书的认证路径不同)。
一些证书详细信息:
1)非工作证书
版本:V3
公钥:RSA 2048 位
签名哈希算法:sha1
签名算法:sha1RSA
认证路径:USERTrust -> Comodo Code Signing CA 2 -> …
OSR在其博客上发布了与 Microsoft 人员的问答环节。主题是与早期 Windows 版本相比,Windows 10 驱动程序签名要求的变化。
\n\n微软项目经理 James Murray 在一份声明中表示(粗体部分):
\n\n\n\n\nPeter:新的驱动程序签名过程表明您必须构建一个 CAB 文件来上传进行签名,然后使用您的 EV 证书对该 CAB 文件进行签名。为什么是 CAB 文件(而不是 ZIP\n 存档等常见文件)?如何构建 CAB 文件?是否有特定的流程或工具可供使用?
\n\nJames: 选择CAB是因为CAB本身就是PE文件。这在一定程度上简化了签名过程,因为signtool.exe具有\xe2\x80\x9cnative\xe2\x80\x9d支持。如果\n我们选择了ZIP存档(注意,我们\xe2\x80\x99d仍然喜欢移动\n方向),我们将需要提供\n单独的签名机制。类似于 HLK studio,一个具有签名 ZIP 或 OPC 功能的小工具。
\n
这让我很惊讶。我知道很多 PE/COFF 详细信息,但从来没有印象过 CAB 文件适合其中。它似乎也与包含 CAB 的自解压可执行文件无关。
\n\n我必须在十六进制编辑器中打开一个 CAB 文件才能亲自查看它,但不知何故,我无法看出该声明在何种意义上是正确的。
\n\n谁能提供有关 CAB 文件如何/为什么是PE 文件的详细信息?
\n我们公司从GlobalSign订购了 EV 证书。
之前我们有一个可以在 Install4J 中使用的 p12 文件形式的普通代码签名证书。
现在,有了新证书,我们就没有证书文件了,只有一个 USB 令牌。
是否有内置方法可以使用 USB 令牌来签署可执行文件/jar?或者我是否需要使用媒体向导的“可执行处理”步骤,如此处提到的?
也许有一种方法可以从一台机器(如 macos)上签署所有安装程序(win、mac、linux)?
我正在尝试对我的 macOS 屏幕保护程序项目进行协同设计,以消除“身份不明的开发人员”警告消息。苹果的文档和苹果论坛上的这个人都说你应该使用“开发者ID应用程序”签名证书来做到这一点。但这似乎对我不起作用。
当我按照Apple 关于如何测试正确签名的说明进行操作时,我得到的响应如下:
Screensaver.saver: rejected (the code is valid but does not seem to be an app)
Run Code Online (Sandbox Code Playgroud)
我的签名设置如下所示:
我不确定此时我还应该尝试什么。我主要担心未来 Mac 应用程序必须经过签名/公证的传言,这对屏幕保护程序意味着什么?
当我使用此命令生成 iOS 分发证书时:
fastlane match adhoc
Run Code Online (Sandbox Code Playgroud)
显示此错误:
[!] Could not create another Distribution certificate, reached the maximum number of available Distribution certificates.
Run Code Online (Sandbox Code Playgroud)
我在 GitHub 上检查了我的证书存储库,现在只包含开发证书。

为什么我无法生成分发证书?证书只能在一种环境下使用吗?如何让旧的开发证书失效?我应该做什么才能让它发挥作用?但现在我重新调用开发证书仍然显示此错误:
只有一张开发证书还告诉我:Could not create another Development certificate, reached the maximum number of available Development certificates。
我正在设置一台新的 MacBook(Monterey 12.2.1 芯片 Apple M1 Pro),并使用自制程序安装了 PHP 7.4。我将 PHP 配置为作为 MacOS (Apache/2.4.51) 附带的 Apache2 服务器的模块运行。我立即遇到了麻烦,因为在我对其进行代码签名之前,Gatekeeper 不允许我将 php 作为自制程序中的 apache 模块运行。我对它进行了协同设计:
codesign --sign "Mike Andersen" --force --keychain ~/Library/Keychains/login.keychain-db /opt/homebrew/opt/php@7.4/lib/httpd/modules/libphp7.so
之后 PHP 就完美运行了。然后我用 PECL 安装了 xdebug: arch -x86_64 sudo pecl install xdebug
当我从命令行检查它时,一切看起来都正确:
php -v
PHP 7.4.28 (cli) (built: Feb 28 2022 07:33:39) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.28, Copyright (c), by Zend Technologies
with Xdebug v3.1.3, Copyright …Run Code Online (Sandbox Code Playgroud) 我正在构建一个 NSIS 安装程序,其中包括一个共享库和一组使用该库的工具。我需要对所有内容进行签名,以便用户可以安装它而不会收到来自 Windows 的可怕警告。
在我对这个问题及其变体的所有搜索中,我只能找到一些答案,甚至这些答案也不完整。例如,“您必须使用自定义的构建后命令”,但没有详细信息。另外,“因为 NSIS 在编译签名期间构建卸载可执行文件,所以安装程序很复杂”,它指向一个 NSIS url,解释直接使用 NSIS 时的过程。在该页面的顶部,它说版本 3.08 有一个新uninstfinalize命令,该命令废弃了此处描述的过程。但没有说明如何使用它。
我正在尝试将应用程序的新版本上传到 App Store,但收到此错误:
签名无效。代码无法满足指定的代码要求。路径 [MyApp.app/MyApp] 处的文件未正确签名。确保您使用分发证书而不是临时证书或开发证书签署您的应用程序。验证 Xcode 中的代码签名设置在目标级别是否正确(覆盖项目级别的任何值)。此外,请确保您上传的包是使用 Xcode 中的 Release 目标而不是 Simulator 目标构建的。如果您确定代码签名设置正确,请在 Xcode 中选择“Clean All”,删除 Finder 中的“build”目录,然后重建您的发布目标。欲了解更多信息,请参阅 https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html(ID:3a7649b2-33eb-4c70-90a4-b3c87e5e699c )
有人对如何解决这个问题有一些想法吗?
根据GoDaddy的FAQ,他们支持Microsoft的SignTool,但没有提到mage.exe.Mage.exe用于签署应用程序,但我无法弄清楚mage.exe是否使用SignTool.如果有人使用GoDaddy的ClickOnce代码签名证书,我们将非常感谢您的简短确认.
我的应用程序包含两个可执行文件
问题是我不知道如何将这个应用程序提交到appstore,我得到了苹果的以下回复
签名无效 - 路径appname.app上的主应用程序包appname已签名但签名无效.从编码签名报告了以下错误:密码资源丢失或无效在架构中:i386
如果我删除帮助应用程序,它会绕过此错误,但应用程序将无法正常工作.任何人都知道如何嵌入帮助应用程序并将其签名到appstore的好方法或示例?
Apple文档对此并不清楚.