最新的 macOS 版本 10.15.4 声称代码签名对客户无效
Posted
技术标签:
【中文标题】最新的 macOS 版本 10.15.4 声称代码签名对客户无效【英文标题】:Latest macOS version 10.15.4 claims code signing is not valid at customer 【发布时间】:2020-03-28 19:42:55 【问题描述】:好的,我正在为我的 macOS 桌面应用程序使用代码签名和(经过验证的)公证。
我还通过下载和执行在 macOS 10.15.3 上测试我自己的下载。 (例如,如果我忘记了代码签名,那么我将无法运行我的可执行文件)
但现在我有一个客户使用 macOS 10.15.4,他发送了一个屏幕截图显示以下错误:
异常类型:EXC_Crach(代码签名无效)
异常代码:0x0000000000000000, 0x0000000000000000
例外说明:EXC_CORPSE_NOTIFY
终止原因:命名空间 CODESIGNING,代码 0x1
以下是我如何签名的相关部分
codesign --force --options runtime --timestamp --entitlements "/Volumes/DiskW/projects-cool/myapp/osx/shrents/casc-dlv.plist" --sign "Example" "/Volumes/DiskW/projects-cool/myapp/osx/finaldist/myapp.app"
codesign --display --entitlements :- "/Volumes/DiskW/projects-cool/myapp/osx/finaldist/myapp.app"
/usr/bin/xcrun altool --notarize-app --primary-bundle-id "com.example.myapp" -u "info@example.com" -p "xxx" -t osx -f "/Volumes/DiskW/projects-cool/myapp/osx/finaldist/myapp.zip"
/usr/bin/xcrun altool --notarization-info yyyy -u "info@example.com" -p "xxx"
/usr/bin/xcrun stapler staple -v "/Volumes/DiskW/projects-cool/myapp/osx/finaldist/myapp.app"
casc-dlv.plist的内容:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
Info.plist 的内容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>MyApp</string>
<key>CFBundleName</key>
<string>MA</string>
<key>LSApplicationCategoryType</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.example.MyApp</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>a1wse</string>
<key>CFBundleShortVersionString</key>
<string>10.1.4</string>
<key>CFBundleVersion</key>
<string>10.1.4</string>
<key>CFBundleIconFile</key>
<string>MyApp.icns</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>NSRequiresAquaSystemAppearance</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleTypeExtensions</key>
<array>
<string>*</string>
</array>
<key>CFBundleTypeOSTypes</key>
<array>
<string>fold</string>
<string>disk</string>
<string>****</string>
</array>
</dict>
</array>
<key>NSHighResolutionCapable</key>
<true/>
<key>LSMinimumSystemVersion</key>
<string>10.8</string>
</dict>
</plist>
在 macOS 中检查我的“钥匙串”:
“开发者 ID 应用程序:示例 (xyz)”(没有其他相关性)
...
正在查看:https://developer.apple.com/account/resources/profiles/list
我只有多年前用于开发应用程序的已过期配置文件
【问题讨论】:
你没有使用 xcode 作为 ide,但你已经安装了它并且正在使用它的组件,对吧? 是的。我在几秒钟内发布了我的命令行 能否创建一个运行10.15.4的虚拟机并重现客户的错误?如果是这样,请尝试删除权利并装订。您不必拥有测试代码设计的权利(或真正功能强大的应用程序)。如果您和您的客户可以访问互联网,则无需装订。 This 可能是阅读的良好开端。但是,我认为我之前关于权利的建议可能是开始测试的好地方。创建具有不同(或无)权利的应用程序的不同版本,直到其中一个可以在(或)可重现的环境中打开。 此时,您需要关注 Apple 特定的社区,例如 this 和 this。祝你好运,伙计。 【参考方案1】:删除权利/casc-dlv.plist 似乎可以解决问题。
这是一个答案,因为它解决了问题,但我不会将此答案标记为正确答案,因为在许多情况下,简单地转储权利并不总是可能的。
【讨论】:
以上是关于最新的 macOS 版本 10.15.4 声称代码签名对客户无效的主要内容,如果未能解决你的问题,请参考以下文章
靠!安装了macOS Catalina(10.15.4)后,文件系统都乱套了
靠!安装了macOS Catalina(10.15.4)后,文件系统都乱套了