如何在 Mac OS X 中显示和验证应用程序的代码签名

检查并验证代码签名Mac OS X 中的应用程序

代码签名的应用程序允许具有安全意识的用户验证特定应用程序的创建者和哈希值,以帮助确认它没有被破坏或篡改。这对于普通 Mac 用户来说几乎没有必要,尤其是那些从 Mac App Store 或其他受信任来源获取软件的用户,因为这些应用程序已经过认证,但验证应用程序的数字签名对于从第三方获取应用程序的用户来说非常有帮助来源。

验证代码签名对于那些从 p2p 和分布式源(可能是 torrent 站点或新闻组、IRC、公共 ftp 或其他网络资源)获取软件和安装程序的人来说尤为重要。举一个实际的例子,假设用户出于某种原因无法访问 Mac App Store,但需要下载 Mac OS X 安装程序应用程序,因此依赖于第三方来源。在这种情况下,重要的是要知道并验证安装程序没有被篡改并且合法地来自 Apple,除了 直接检查 sha1 哈希,最简单的方法是检查相关应用程序的代码签名和加密哈希。

如何在 Mac 上检查应用程序的代码签名

要开始,请启动位于 /Applications/Utilities/ 中的 Terminal。我们将使用恰当命名的“codesign”命令,并使用 -dv 和 –verbose=4 标志来显示有关任何应用程序的标识信息,包括它的哈希类型、哈希校验和和签名权限。

基本语法如下:

codesign -dv --verbose=4 /Path/To/Application.app

例如,让我们检查位于 /Applications/Utilities/ 中的 Terminal.app 上的签名

codesign -dv --verbose=4 /Applications/Utilities/Terminal.app
Executable=/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal
Identifier=com. apple.Terminal
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20100 size=5227 flags=0x0(none) hashes=255+3 location=embedded
Platform identifier= 1
哈希类型=sha1 大小=20
CDHash=0941049019f9fa3499333fb5b52b53735b498aed6cde6a23
签名大小=4105
Authority=软件签名
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
Info.plist entries=34
TeamIdentifier=not set
Sealed Resources version=2 rules=13 files=996
内部要求count=1 size=68

您要查找的是散列类型、散列和权限条目。在这种情况下,哈希类型是 sha1,签名机构是 Apple,这是您所期望的。

是的,您也可以使用命令行来检查sha1或者md5 应用程序安装程序和下载的哈希值,并将它们与合法来源进行比较,但这不会不要泄露代码签名和证书详细信息。

请记住,大多数被未经授权方修改的代码签名软件将被 Mac OS X 中的 Gatekeeper 拒绝,除非 Gatekeeper 已被禁用 或者 绕过,但即使保留 Gatekeeper,理论上有进取心的暴徒也有可能找到绕过它的方法,当然,未经确定的开发人员认证的软件始终可以围绕 Gatekeeper 启动反正。

您可以在维基百科 和 <一个 target="_blank" rel="nofollow noopener" href="https://developer.apple.com/library/mac/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html#//apple_ref/doc/uid /TP40005929-CH1-SW1">Apple 开发者代码签名指南。

如何通过 Apple 进行代码签名

您是否检查过应用程序是否已签名?它可以是确定某些进程和应用程序是什么的有效方法,也有助于故障排除。下次当您想知道什么是什么以及是否已签名时,请尝试一下!