macOS notarization error: "The signature algorithm used is too weak"

macOS notarization error: "The signature algorithm used is too weak"

我想知道是否有人熟悉这个错误,这个错误只会在我将我的应用程序上传到 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 提供了他们要求的所有信息——但从未得到进一步解决。

-我最近再次联系了 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 档案中的签名文件有关 - 我也找不到任何信息

任何帮助将不胜感激!

谢谢, 狮子座

您必须解压您的 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 共同设计。 这是一个 guide 公证。

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

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