Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
wingsrao opened this issue Jun 12, 2024 · 7 comments
Open

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

wingsrao opened this issue Jun 12, 2024 · 7 comments

Comments

@wingsrao
Copy link

您好:
我使用了您提供的方法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.

@muzipiao
Copy link
Owner

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

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

SDK 签名(苹果官网描述)

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

参考链接

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

@wingsrao
Copy link
Author

查询了一下苹果的新政策,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不确定是否会影响)

@muzipiao
Copy link
Owner

muzipiao commented Jun 13, 2024

此问题使用自己的发布证书签名即可。假设电脑上已安装有发布证书,可执行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

@wingsrao
Copy link
Author

使用自己的发布证书签名即可。如果你电脑上安装有发布证书,直接执行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的签名。
目前已过审核。
再次表示感谢~

@muzipiao
Copy link
Owner

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

@shengxiaolei
Copy link

大佬,请教一下上传应用商店报错使用静态库也是用这个方法解决吗

Asset validation failed (90171)Invalid bundlstructure.The“ sssssss.app/Frameworks/GMObjC.framework/Frameworkspenssl.framework/openssl" binary file is not permitted. Your app cannotcontain stancalone executables or libraries, other than a valid CFBundleExecutable ofsupported bundles. For details, visit: https://developer.apple.com/documentationbundleresources/placing_content in a bundle(lD:06dabbf6-e5ec-4bd9-b882-5d3c519d3b9)
Asset validation failed(90206)Invalid BundlThe bundle at 'sssss.app/Frameworks/GMObjC.framework' containsdisallowed fil'Frameworks.(lD:69693675-13a6-4c6b-992c-21789fabdd91)

@wingsrao
Copy link
Author

大佬,请教一下上传应用商店报错使用静态库也是用这个方法解决吗

Asset validation failed (90171)Invalid bundlstructure.The“ sssssss.app/Frameworks/GMObjC.framework/Frameworkspenssl.framework/openssl" binary file is not permitted. Your app cannotcontain stancalone executables or libraries, other than a valid CFBundleExecutable ofsupported bundles. For details, visit: https://developer.apple.com/documentationbundleresources/placing_content in a bundle(lD:06dabbf6-e5ec-4bd9-b882-5d3c519d3b9) Asset validation failed(90206)Invalid BundlThe bundle at 'sssss.app/Frameworks/GMObjC.framework' containsdisallowed fil'Frameworks.(lD:69693675-13a6-4c6b-992c-21789fabdd91)

不是同一个问题。建议都更新到GMObjC.xcframework和OpenSSL.xcframework

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants