macOS下.NET MAUI应用签名后云下载运行提示无法检查恶意软件
问题:.NET MAUI应用签名后,下载启动提示“Apple无法检查恶意软件”
我在macOS环境中创建了.NET MAUI应用,按照Apple官方步骤使用证书对应用包签名:
codesign --deep --force --sign "Developer ID Application: Developer_Certificate" TestApp.app
随后创建dmg安装包:
create-dmg 'TestApp.app'
并对安装包签名:
codesign --deep --force --sign "Developer ID Application: Installer_Certificate" TestApp.dmg
本地安装运行正常,但上传至云存储后下载安装,启动时提示:
"TestApp" can't be opened because Apple cannot check it for malicious software
解决步骤
1. 完成Apple应用公证(核心解决方法)
对外分发的macOS应用必须经过Apple公证,仅签名无法通过下载后的安全校验:
- 先对
.app包提交公证:xcrun notarytool submit TestApp.app --keychain-profile "你的公证密钥链配置" --wait - 公证通过后,给应用加盖公证戳:
xcrun stapler staple TestApp.app - 重新生成dmg并签名,再对dmg执行公证和加盖戳:
注:密钥链配置需提前在Apple Developer后台创建API密钥,并导入本地密钥链。create-dmg 'TestApp.app' codesign --deep --force --sign "Developer ID Installer: Installer_Certificate" TestApp.dmg xcrun notarytool submit TestApp.dmg --keychain-profile "你的公证密钥链配置" --wait xcrun stapler staple TestApp.dmg
2. 修正签名证书类型
当前用Developer ID Application证书签名dmg是错误的,dmg安装包需使用Developer ID Installer证书:
codesign --deep --force --sign "Developer ID Installer: Installer_Certificate" TestApp.dmg
3. 检查签名有效性
避免过度依赖--deep,先验证应用签名是否合规:
codesign --verify --verbose=4 TestApp.app
若存在嵌套框架签名问题,需先单独签名所有嵌套框架,再签名主应用包。
4. 临时解除隔离(针对用户侧)
若用户已下载应用,可手动移除macOS的互联网隔离标记:
xattr -d com.apple.quarantine /Applications/TestApp.app
5. 确认证书状态
- 检查Apple Developer后台的Developer ID证书是否有效、未过期/吊销
- 本地密钥链中证书的私钥是否可用、未锁定
内容的提问来源于stack exchange,提问作者Archie
相关产品推荐
相关产品推荐

