muzipiao/GMObjC

苹果审核被拒:使用了OpenSSL.xcframework

Opened this issue · 5 comments

您好:
我使用了您提供的方法carthage方式编译了OpenSSL.xcframework,里面有对于的签名和privacy文件。另外使用了GMObjC.xcframework。

但是审核不过。

ITMS-91065: Missing signature - Your app includes “Frameworks/OpenSSL.framework/OpenSSL”, which includes BoringSSL / openssl_grpc, an SDK that was identified in the documentation as a privacy-impacting third-party SDK. If a new app includes a privacy-impacting SDK, or an app update adds a new privacy-impacting SDK, the SDK must include a signature file. Please contact the provider of the SDK that includes this file to get an updated SDK version with a signature.

查询了一下苹果的新政策,2024年5月1日起,新提交APP,旧APP新增/更新SDK时,需要提供 xcprivacy 文件;二进制文件需要验证它是否由同一个开发人员签名(我不是很理解这个签名验证要的是谁的签名)。

PrivacyInfo.xcprivacy 文件已经有了,应该不是这个原因。签名原因,应用发布者在 Distribute App 时可以对三方 SDK进行覆盖签名,你检查一下是否有此选项,尝试对三方SDK覆盖/重新签名。

SDK 签名(苹果官网描述)

现在有了 SDK 签名,当您在应用程序中采用第三方 SDK 的新版本时,Xcode 将验证它是否由同一个开发人员签名,从而提高软件供应链的完整性。

参考链接

苹果官方三方SDK隐私政策要求

查询了一下苹果的新政策,2024年5月1日起,新提交APP,旧APP新增/更新SDK时,需要提供 xcprivacy 文件;二进制文件需要验证它是否由同一个开发人员签名(我不是很理解这个签名验证要的是谁的签名)。

PrivacyInfo.xcprivacy 文件已经有了,应该不是这个原因。签名原因,应用发布者在 Distribute App 时可以对三方 SDK进行覆盖签名,你检查一下是否有此选项,尝试对三方SDK覆盖/重新签名。

SDK 签名(苹果官网描述)

现在有了 SDK 签名,当您在应用程序中采用第三方 SDK 的新版本时,Xcode 将验证它是否由同一个开发人员签名,从而提高软件供应链的完整性。

参考链接

苹果官方三方SDK隐私政策要求

您好,我使用codesign -dv UMCommon.xcframework测试了友盟的xc,能返回对应的签名信息。但是codesign -dv OpenSSL.xcframework 则返回code object is not signed at all。然后我分别进入对应平台目录去使用codesign -dv OpenSSL.framework,会返回对应的签名信息。
接下来我这边先尝试自己去签名测试一下是否可行,因为苹果没有要求签名必须是第三方(不过这里有个Identifier=com.lifei.gmopenssl不确定是否会影响)

此问题使用自己的发布证书签名即可。假设电脑上已安装有发布证书,可执行xcrun codesign --timestamp -s "证书名称" 待签名二进制.xcframework签名二进制文件。

# 查看签名,无签名显示 code object is not signed at all
codesign -dv openssl.xcframework
# 发布证书以"Apple Distribution"开头,执行此命令即可签名。
xcrun codesign --timestamp -s "Apple Distribution" openssl.xcframework
# 发布证书以"iPhone Distribution"开头,执行此命令即可签名。
xcrun codesign --timestamp -s "iPhone Distribution" openssl.xcframework
# 当有多个发布证书,指定发布证书全称,钥匙串复制证书名称,执行此命令即可签名。
xcrun codesign --timestamp -s "证书全称" openssl.xcframework
# 已经签名的framework,可以使用-f参数强制重新签名
xcrun codesign --timestamp -f -s "证书全称" openssl.xcframework
# 验证签名
xcrun codesign --verify --verbose openssl.xcframework

使用自己的发布证书签名即可。如果你电脑上安装有发布证书,直接执行xcrun codesign --timestamp -s "证书名称" 待签名二进制.xcframework即可签名。

# 只有一个发布证书,且证书以"Apple Distribution"开头,执行此命令即可签名。
xcrun codesign --timestamp -s "Apple Distribution" GMObjC.xcframework
# 只有一个发布证书,且证书以"iPhone Distribution"开头,执行此命令即可签名。
xcrun codesign --timestamp -s "iPhone Distribution" GMObjC.xcframework
# 指定发布证书全称,钥匙串复制证书名称,执行此命令即可签名。
xcrun codesign --timestamp -s "证书名称" GMObjC.xcframework

感谢回复~GMObjC没有强制要求。OpenSSL.xcframework是之前提供方式导出的,而且里面有签名文件,我就以为可以直接使用。后面使用codesign --timestamp -v --sign "Apple Distribution indentity" OpenSSL.xcframework对xcframework签名了。也就是说,苹果的审核应该只是认xcframework的签名。
目前已过审核。
再次表示感谢~

OK,此 issue 先不用关闭,后面谁遇到相同问题可查阅。