簡體   English   中英

在Qt捆綁包中簽名代碼后發生驗證錯誤(CSSMERR_TP_NOT_TRUSTED,OSX)

[英]Verification error after signing code in Qt bundle (CSSMERR_TP_NOT_TRUSTED, OSX)

我正在嘗試使用購買的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實用程序時,也會發生相同的情況(我提供的證書ID與XCode相同):

+ 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

盡管Gatekeeper接受由XCode編譯和簽名的二進制文件(我使用CMake生成XCode項目,然后修改項目屬性以對二進制文件進行簽名-但是,這對我來說不是完整的軟件包)。 我使用了相同的codesign命令(從XCode的日志復制)進行簽名。

我已經:

  • 刪除並導入了證書,
  • 允許它在所有應用程序上使用,
  • 檢查權限系統的默認設置,
  • 檢查系統中是否有雙重證書。

我使用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下制作正確的簽名二進制文件?

原來我購買證書的SSL經銷商根本沒有更新他的網站,他聲稱該網站可以在OSX上使用。 也許直到10.9發行AFAIR。

在最新的MacOS上對二進制文件進行代碼簽名和使用的唯一方法是直接從Apple購買適當的針對性證書(例如,針對iPhone / iOS的證書將無法在MacOS上運行,反之亦然)。 我希望經銷商的服務台能在我沒有浪費時間之前就知道這一點。

確保您在鑰匙串中的證書未設置為“始終信任”。如果“始終信任”,則設置為“系統默認值”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM