2017-05-26 15 views
1

我正在嘗試爲購買COMODO證書的OSX Sierra代碼簽名桌面應用程序二進制文件。 我有一個代碼簽名在macdeployqt命令運行結束校驗錯誤CSSMERR_TP_NOT_TRUSTED:當我嘗試直接對最終捆綁使用協同設計工具在Qt包(CSSMERR_TP_NOT_TRUSTED,OSX)中籤署代碼後驗證錯誤

$ 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" 

同樣的情況(我給相同的證書編號爲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 

二進制編譯和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下的塞拉利昂正確的符號二進制?

+0

也許它與此有關: Info.plist = not bound'?我怎樣才能綁定這個文件?它已經在bundle的目錄中。在檢查XCode的簽名二進制文件時,它的'info'文件是'有界'的。 – szszsz

回答

0

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

編寫,標誌和使用上最新的MacOSes二進制文件的唯一方法是直接從蘋果公司購買適當的,有針對性的證書(例如,一個針對IPhone/iOS版將無法在MacOS和反之亦然工作)。 我希望經銷商的幫助臺在我輸掉時間之前就知道這件事。