nwjs mac app簽名

clipboard.png
如上圖所示,沒有通過簽名的APP打開的時候會有不信任的提示,很是影響用戶第一印象和使用ios

下面是一個小白走過的路,僅供參考。

google搜索nwjs mac sign, 推薦下面這兩篇文章
https://github.com/nwjs/nw.js/wiki/Mac-App-Store-(MAS)-Submission-Guideline
https://github.com/nwjs/nw.js/issues/616git

按照連接1的教程開始搗騰起來,須要注意的是證書類型github

  • Mac App Store(簽名,提交到App Store)app

  • Developer ID (簽名,不用提交到App Store)ide

坑:最開始ios同事給個人apple開發者帳號建立證書的時候沒有Developer ID這個類型,便使用Mac App Store類型的證書,發現簽名成功了,很開心,覺得搞定了,但打開仍是不受信任ui

codesign -vvv -d WorkPlus.app
spctl -a -v WorkPlus.app

codesign命令查看app是簽名成功了,spctl命令顯示WorkPlus.app: rejectedthis

怎麼辦?

這時候想到了友商釘釘,執行codesign -vvv -d 釘釘.app 發現Authority的值是Developer ID的證書,因而換Developer ID證書google

  • 只有花99美刀的開發者帳號纔有建立Developer ID證書的選項spa

簽名腳本(參考上面第二個連接)

export app=/Users/xxx/Downloads/nwjs-v0.12.3-osx-x64/sign/WorkPlus.app
export identity=1FD05730FA3DD1C66BEA507EE76B425FB20CC3B1

codesign --force --verify --verbose --sign $identity $app"/Contents/Frameworks/crash_inspector"
codesign --force --verify --verbose --sign $identity $app"/Contents/Frameworks/nwjs Framework.framework/"
codesign --force --verify --verbose --sign $identity $app"/Contents/Frameworks/nwjs Helper EH.app/"
codesign --force --verify --verbose --sign $identity $app"/Contents/Frameworks/nwjs Helper NP.app/"
codesign --force --verify --verbose --sign $identity $app"/Contents/Frameworks/nwjs Helper.app/"

echo "### signing app"
codesign --force --verify --verbose --sign $identity $app

echo "### verifying signature"
codesign -vvv -d $app

identity怎麼獲取?

Save the string in parenthesis (beginning with LK7 on the capture).
When signing the app, we will refer to it as the identity.3d

這個nwjs教程上描述的,意思是說取證書名最後花括號內的值做爲identity,我試過是不行的,不知道是我作錯了仍是文檔有誤?

有些教程說identity=證書名,也是不對的

google一下: codesign no identity found

http://stackoverflow.com/questions/16036571/codesign-gives-always-no-identity-found-error-via-terminal
http://stackoverflow.com/questions/14274180/questions-about-code-signing-mac-app-with-developer-id

關鍵命令

sudo security add-trusted-cert -d -r trustRoot -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/gdb-cert.cer

security find-identity -p codesigning

經過第二個命令能夠查看到證書的identity,正常狀況下已經簽名成功了。

坑:上面都弄完了還找不到identity,此時已經弄了一天了,還沒搞定,要崩潰了。

耐心!

First, go into Keychain Access and verify that your DeveloperID certificate has an accompanying private key associated with it (this will be visible under a disclosure triangle). If it does not, then you should go check around to see if you saved off the key related to that certificate anywhere, because if you can't find and reimport it (from, for example, a Developer Profile exported from Xcode), you will need to revoke and reissue the certificate, since there's no way to sign it.

我發現我鑰匙串裏的Developer ID證書左側沒有可展開的三角形,這就是問題所在了,其餘證書左側都有可展開的三角形,緣由是我建立certSigningRequest文件的時候的帳號不是開發者帳號,默認拿了我apple store的帳號,夠悲劇的。

遇到那麼多問題,本質上仍是對mac整個證書體系不熟悉。資料上也沒有一篇小白的教程,一路艱辛,但願能夠幫助到和我同樣的小白。

相關文章
相關標籤/搜索