修复 macOS 无法验证 App 恶意软件问题(完整指南)

修复 macOS 无法验证 App 恶意软件问题(完整指南)

在使用 macOS 的过程中,你可能会遇到一个令人沮丧的错误提示:“无法验证 App”,“无法打开‘XXX’,因为它来自身份不明的开发者”,或者“‘XXX’已损坏,无法打开。您应该将它移到废纸篓”。这些错误通常与 macOS 的安全机制(Gatekeeper)有关,旨在保护用户免受恶意软件的侵害。虽然 Gatekeeper 是一项重要的安全功能,但有时它可能会阻止你打开合法的应用程序,尤其是那些从非 App Store 下载的应用程序。

本文将深入探讨导致这些错误的原因,并提供一系列详细的解决方案,帮助你顺利打开所需的应用程序,同时确保你的 Mac 保持安全。

1. 理解 macOS 的安全机制:Gatekeeper

Gatekeeper 是 macOS 内置的安全机制,从 OS X Mountain Lion (10.8) 开始引入。它的主要作用是:

  • 代码签名验证: 检查应用程序是否由 Apple 开发者 ID 签名,确保应用程序来自可信的开发者,并且未被篡改。
  • 应用程序来源控制: 允许用户选择可以运行的应用程序的来源。默认情况下,macOS 仅允许来自 App Store 和已识别开发者的应用程序。
  • 恶意软件隔离: 如果应用程序被检测到包含恶意软件,Gatekeeper 会阻止其运行,并提示用户将其移到废纸篓。

Gatekeeper 的设置选项:

你可以在“系统偏好设置”->“安全性与隐私”->“通用”中找到 Gatekeeper 的设置。通常有三个选项:

  1. App Store: 仅允许运行从 App Store 下载的应用程序。这是最安全的选项。
  2. App Store 和已识别的开发者: 允许运行从 App Store 下载的应用程序以及由 Apple 开发者 ID 签名的应用程序。这是默认选项,提供了安全性和便利性的平衡。
  3. 任何来源: 允许运行任何来源的应用程序。这个选项最不安全,应谨慎使用。(强烈不推荐长期启用此选项)

2. “无法验证 App”错误的原因

当你遇到“无法验证 App”或类似错误时,可能有以下几种原因:

  • 应用程序未签名或签名无效: 应用程序可能没有使用有效的 Apple 开发者 ID 进行签名,或者签名已过期、被吊销或损坏。
  • 应用程序来自未知开发者: 如果你的 Gatekeeper 设置为“App Store”或“App Store 和已识别的开发者”,而应用程序既不是从 App Store 下载的,也没有有效的开发者 ID 签名,就会出现此错误。
  • 应用程序已损坏: 应用程序文件可能在下载或传输过程中损坏,导致 macOS 无法验证其完整性。
  • macOS 系统问题: 偶尔,macOS 本身的错误或配置问题也可能导致此错误。
  • 隔离属性(Quarantine Attribute):从网络上下载的App,macOS会自动添加隔离属性。这个属性会触发Gatekeeper进行更严格的检查。
  • XProtect 误报:XProtect是macOS内置的恶意软件定义数据库。有时候,它可能会错误地将合法App标记为恶意软件。

3. 修复“无法验证 App”错误的解决方案

以下是解决“无法验证 App”错误的一系列方法,按照从简单到复杂的顺序排列。请逐一尝试,直到问题解决。

3.1. 方法一:右键打开 (最常用)

这是最简单且通常最有效的方法。它允许你绕过 Gatekeeper 的初始检查,手动授权运行应用程序。

  1. 在 Finder 中找到无法打开的应用程序。
  2. 按住 Control 键(或右键单击) 应用程序图标。
  3. 从上下文菜单中选择“打开”。
  4. 在弹出的警告对话框中,再次点击“打开”。

注意: 只有在你确信应用程序来源可靠的情况下才使用此方法。

3.2. 方法二:更改 Gatekeeper 设置 (临时)

如果右键打开不起作用,你可以尝试临时更改 Gatekeeper 设置。

  1. 打开“系统偏好设置”->“安全性与隐私”->“通用”。
  2. 点击左下角的锁图标,输入你的管理员密码进行解锁。
  3. 在“允许从以下位置下载的 App”下,选择“App Store 和已识别的开发者”(如果尚未选择)。
  4. 如果已经选择了“App Store 和已识别的开发者”,而问题仍然存在,你可以尝试选择“任何来源”。(强烈建议仅在尝试打开应用程序时临时选择此选项,并在完成后立即改回更安全的设置。)
  5. 再次尝试打开应用程序。
  6. 打开应用程序后,立即将 Gatekeeper 设置改回“App Store 和已识别的开发者”或“App Store”。

3.3. 方法三:使用终端命令 (xattr)

如果以上方法都无效,你可以使用终端命令来移除应用程序的隔离属性。

  1. 打开“应用程序”->“实用工具”->“终端”。
  2. 输入以下命令,但不要按回车键
    bash
    xattr -dr com.apple.quarantine

    注意: 命令的最后有一个空格。
  3. 将无法打开的应用程序图标从 Finder 拖放到终端窗口中。这会自动将应用程序的路径添加到命令中。
  4. 按回车键执行命令。
  5. 再次尝试打开应用程序。

更详细的xattr命令解释:

  • xattr:这是一个用于操作文件扩展属性的命令行工具。
  • -d:删除指定的扩展属性。
  • -r:递归地应用于目录中的所有文件和子目录(如果目标是一个应用程序包,这很重要)。
  • com.apple.quarantine:这是 macOS 用于标记从互联网下载的文件的隔离属性。

3.4. 方法四: 使用终端命令(codesign)

如果App没有签名, 或者签名有问题, 可以尝试用codesign命令重新签名。 注意: 这个方法需要你安装Xcode命令行工具。如果没有安装,可以在终端中输入xcode-select --install来安装。

  1. 打开“应用程序”->“实用工具”->“终端”。

  2. 输入以下命令, 尝试强制重新签名:

bash
sudo codesign --force --deep --sign - /path/to/your/Application.app

* sudo: 以管理员权限运行
* codesign: 签名工具
* --force: 强制覆盖已有的签名
* --deep:对整个app进行签名,包括嵌套的内容
* --sign -: 使用临时的ad-hoc签名。 这是一个自签名,不会验证开发者身份,但是能让Gatekeeper放行。
* /path/to/your/Application.app: 替换成你的App的路径。 (可以直接把App拖拽到终端窗口来获取路径)

3.5. 方法五:检查应用程序的完整性

如果应用程序文件已损坏,你可以尝试重新下载应用程序。

  1. 将损坏的应用程序移到废纸篓。
  2. 清空废纸篓。
  3. 从应用程序的官方网站或可信来源重新下载应用程序。
  4. 再次尝试打开应用程序。

3.6. 方法六:更新 macOS

有时,macOS 本身的错误可能会导致此问题。确保你的 macOS 是最新版本。

  1. 点击屏幕左上角的苹果菜单。
  2. 选择“关于本机”。
  3. 点击“软件更新”。
  4. 如果有可用的更新,请按照提示进行安装。

3.7 方法七: 检查XProtect定义

虽然罕见,但如果XProtect定义过时或者有错误,可能会误报。

  1. 打开“系统偏好设置”->“安全性与隐私”->“通用”。
  2. 点击“高级...” 按钮。
  3. 确保“自动更新安全文件和系统数据文件”选项被勾选。
  4. 你也可以尝试重启Mac,让系统在启动时自动更新XProtect定义。

3.8 方法八: 创建新的管理员账户

有时,用户账户的配置文件损坏可能导致此问题。创建一个新的管理员账户,看看在新账户中是否可以打开应用程序。
1. 点击屏幕左上角的苹果菜单, 选择 “系统偏好设置”。
2. 点击 “用户与群组”。
3. 点击左下角的锁图标, 并输入管理员密码.
4. 点击“+”号, 添加一个新用户.
5. 将新用户设置为“管理员”类型。
6. 用新用户登录, 并尝试打开App。

3.9. 方法九:联系应用程序开发者

如果以上方法都无法解决问题,你可以尝试联系应用程序的开发者寻求帮助。他们可能能够提供特定于其应用程序的解决方案或确认应用程序是否存在已知问题。

4. 保持 macOS 安全的最佳实践

在解决“无法验证 App”错误的同时,请务必牢记以下安全最佳实践:

  • 仅从可信来源下载应用程序: 优先从 App Store 下载应用程序。如果需要从其他来源下载,请确保该来源是官方网站或可信的第三方下载站点。
  • 保持 macOS 和应用程序更新: 及时安装 macOS 和应用程序的更新,以修复安全漏洞和错误。
  • 使用防病毒软件: 虽然 macOS 相对安全,但安装一款可靠的防病毒软件可以提供额外的保护。
  • 谨慎对待未知应用程序: 在打开未知来源的应用程序之前,请仔细考虑其安全性。
  • 不要长期启用“任何来源”选项: 仅在必要时临时启用此选项,并在完成后立即改回更安全的设置。
  • 了解代码签名和公证:如果你是开发者,请确保你的应用程序经过正确的代码签名和公证(Notarization),以避免用户遇到这些问题。 Apple提供了详细的文档指导开发者完成这些步骤。

5. 总结

“无法验证 App”错误是 macOS 安全机制的一部分,旨在保护用户免受恶意软件的侵害。虽然有时它可能会带来不便,但通过本文提供的多种解决方案,你应该能够成功打开所需的应用程序,同时确保你的 Mac 保持安全。请记住,始终从可信来源下载应用程序,并保持系统和应用程序更新,以最大程度地降低安全风险。 如果问题依旧,一定要联系App开发者或Apple支持寻求进一步的帮助。

THE END