在 Mac OS X 中检查包中的过期证书
目录:
许多Mac用户会下载组合更新或其他软件的软件包文件,以便在多台计算机上安装它们,从而避免使用Mac App Store进行更新。这在 Mac 系统管理员中尤为常见,下载单个软件包更新或安装程序一次并通过网络分发或可能通过 USB 驱动器手动安装更有意义。这种方法没有任何问题,事实上它对于多 Mac 管理更有效,但是当软件包安装程序或更新文件具有过期证书时可能会出现问题,这将阻止软件包完全安装,a当您收到“(应用程序安装程序)已使用已过期的证书签名”错误消息时,这种情况会变得很明显。
为了避免这种情况,您可以自己检查包签名是否有效,是否已过期,甚至根本没有签名。
如何使用pkgutil在Mac OS X中检查包签名状态
出色的pkgutil 命令行实用程序可以轻松确定任何包签名和证书的状态。它很容易使用,所以从 /Applications/Utilities/ 启动终端应用程序并亲自尝试一下。
检查包签名状态的基本语法如下:
pkgutil --check-signature /Path/to/Example.pkg
回车,你会发现签名是否有效,签名是否过期,或者根本没有签名。
例如,假设我们有一个Mac OS X Combo Update 软件安装程序包,这是系统管理员更新多台Mac 的常见情况,您可以像这样检查该包签名的状态:
"pkgutil --check-signature ~/Downloads/OSXUpdateCombo10.10.2.pkg Package OSXUpdateCombo10.10.2.pkg:状态:由已过期的证书签名 "
在这种情况下,更新包的签名已经过期,这意味着如果尝试使用它会抛出错误。
然而,并非所有的软件包安装程序都有签名,虽然来自 Apple 的任何软件更新文件都有签名,但来自第三方的软件包通常没有。例如,这个示例包安装程序文件没有签名,应该适当对待(即如果你不信任来源,也许重新考虑使用它)。
"pkgutil --check-signature ~/Downloads/MysterySketchyInstaller-21.pkg 包 MysterySketchyInstaller-21.pkg:状态:无签名 "
如果包文件可疑,您可以验证代码签名并提取包,而无需使用 pkgutil 安装它以进行进一步检查,或者如果您更喜欢使用 GUI,那么可以使用像 Pacifist 这样的应用程序在更友好的界面中提供类似的包管理工具,即使它仍然处于高级方面。
像所有优秀的命令行工具一样,您甚至可以输入 pkgutil 通配符以轻松地同时检查多个包,在本示例中,我们将检查 ~/ 中包含的每个 .pkg 文件的签名下载次数:
pkgutil --check-signature ~/Downloads/.pkg 包 irssi-0.8.17-0.pkg:状态:无签名 "
"Package wget-4.8.22-0.pkg:状态:无签名"
"Package ComboUpdateOSXElCapitan.pkg:状态:由已过期的证书签名"
"Package InstallOSXSequoiaBeta.pkg:状态:有效"
"打包HRFDeveloperTools.pkg:状态:有效"
通配符可以快速检查许多不同包文件的证书状态,只需确保您指定.pkg 即可完成该过程,而不会在不被认可的包上停止。