首页 文章

在Qt包中签名代码后的验证错误(CSSMERR_TP_NOT_TRUSTED,OSX)

提问于
浏览
2

我正在尝试使用购买的COMODO证书为OSX Sierra代码签署桌面应用程序二进制文件 . 我在 macdeployqt 命令运行结束时遇到代码签名验证错误 CSSMERR_TP_NOT_TRUSTED

$ security unlock-keychain -p "$PASSWORD" /Users/user/Library/Keychains/login.keychain
$ ~/Qt5.8/5.8/clang_64/bin/macdeployqt app_name.app/ -codesign=(cat ~/keyid3) -verbose=4 -no-plugins # (1)
# (...)
Log: Finished codesigning  "app_name.app" with identity "118E862D88E30998B6C4BACB8ABCB1FBDEADBEEF"
ERROR: codesign verification error:
ERROR: "app_name.app: CSSMERR_TP_NOT_TRUSTED\nIn architecture: x86_64\n"

当我尝试在最终捆绑包上直接使用codesign实用程序时,会发生同样的情况(我提供与XCode相同的证书ID):

+ security unlock-keychain -p "$PASSWORD" /Users/user/Library/Keychains/login.keychain
+ export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
+ CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
+ /usr/bin/codesign --force --sign 118E862D88E30998B6C4BACB8ABCB1FBDEADBEEF --deep --timestamp=none '<build-path>/app_name'
+ /usr/bin/codesign --verify '<build-path>/app_name' -dv
Executable=<build-path>/app_name/Contents/MacOS/app_name
Identifier=$(PRODUCT_BUNDLE_IDENTIFIER)
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20100 size=19725 flags=0x0(none) hashes=611+3 location=embedded
Signature size=2359
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources version=2 rules=13 files=2
Internal requirements count=1 size=104
+ /usr/bin/codesign --verify '<build-path>/app_name'
<build-path>/app_name: CSSMERR_TP_NOT_TRUSTED
In architecture: x86_64
+ spctl -a -v <build-path>/app_name
<build-path>/app_name/: CSSMERR_TP_NOT_TRUSTED

由网守接受由XCode编译和签名的二进制文件(我使用CMake生成XCode项目,然后修改项目属性以签署二进制文件 - 但这并不是为我制作完整的包) . 我使用了相同的 codesign 命令(从XCode的日志中复制)进行签名 .

我已经:

  • 删除并导入证书,

  • 允许它在所有应用程序上使用,

  • checked是权限系统默认值,

  • 检查系统中的双重证书 .

我使用qmake(Qt5.8)来创建makefile . 我的包内容(在 make 之后, macdeploy 之前):

./Contents
./Contents/_CodeSignature
./Contents/_CodeSignature/CodeResources
./Contents/Info.plist
./Contents/MacOS
./Contents/MacOS/app_name
./Contents/PkgInfo
./Contents/Resources
./Contents/Resources/CS_icon.icns
./Contents/Resources/empty.lproj

我应该怎么做才能在OSX Sierra下制作正确的签名二进制文件?

2 回答

  • 0

    原来我购买证书的SSL经销商根本没有更新他的网站,他声称证书适用于OSX . 也许直到10.9发布AFAIR .

    在最新的MacOS上代码签名和使用二进制文件的唯一方法是直接从Apple购买适当的,有针对性的证书(例如,针对iPhone / iOS的目标证书不适用于MacOS,反之亦然) . 在失去时间之前,我希望经销商的帮助台能够了解它 .

  • 0

    确保您的钥匙串证书未设置为“始终信任” . 如果“始终信任”,则设置为“系统默认值” .

相关问题