macOS公证错误:“使用的签名算法太弱”

时间:2019-05-28 23:57:20

标签: cocoa codesign notarize

我想知道是否有人熟悉此错误,这种错误仅在将我的应用程序上载到Apple进行公证时才会发生:

"AppName.zip/AppName.app/Contents/Resources/EWSMacCompress.tar.gz/EWSMacCompress.tar/EWSMac.framework/Versions/A/EWSMac83886082"
"The signature algorithm used is too weak."

其他信息:

-我已经签署我的应用程序好多年了,没有任何问题。该错误仅在发送应用程序以进行公证时发生。

-我在2018年11月提交了一个错误,向苹果提供了他们要求的所有信息-但此问题从未得到进一步解决。

-我最近再次联系了Apple,他们向我指出了一些资源页面,该页面最后一次更新是在2016年。它简短地提到了一个类似的错误-但仍然没有任何有关如何解决该错误的信息: https://developer.apple.com/library/archive/technotes/tn2206/_index.html#//apple_ref/doc/uid/DTS40007919-CH1-TNTAG301

-搜索此错误没有产生任何有用的结果。

-所涉及的tar.gz文件是eSellerate许可框架。正如许多人可能知道的那样,十多年来,它一直是Mac软件的流行许可平台。不久前我切换到另一个许可平台时,我仍然拥有成千上万的拥有eSellerate许可的客户(我敢肯定其他许多Mac开发人员的情况)。

据我了解,整个情况必须与tar.gz归档文件中的文件签名有关-在该文件上我也找不到任何信息

任何帮助将不胜感激!

谢谢, 狮子座

1 个答案:

答案 0 :(得分:2)

您必须解压缩tarzipjar文件,对所有有错误的文件进行代码签名,然后重新打包。

只需遍历日志并对所有错误进行代码签名,然后对整个应用程序进行签名。 对我来说,我使用以下两个命令。

find ./MyApp -type f \
 -exec codesign --timestamp \
 --keychain /Users/builduser/Library/Keychains/login.keychain-db \
 -s 'Developer ID Application: XXXXXXXX' -f --verbose=9 --deep \
 --options=runtime --entitlements entitlements.xml {} +

然后签名应用

codesign --timestamp \
 --keychain /Users/builduser/Library/Keychains/login.keychain-db \
 -s 'Developer ID Application: XXXXXXXX' -f --verbose=9 --deep \
 --options=runtime --entitlements entitlements.xml MyApp

您必须使用--options=runtime运行codesign。 这是要进行公证的guide

如果要构建Java应用程序,这些链接也可能会有所帮助: How to build MacOS app with hardened runtime in AppBundler

https://bitbucket.org/infinitekind/appbundler/issues/39/build-with-hardened-runtime