在 Mac OS X 中检查过期证书的包

如何检查包文件中的过期证书

许多 Mac 用户会下载组合更新或其他软件的包文件,以便在多台计算机上安装它们,从而避免 使用 Mac App Store 更新。这在 Mac 系统管理员中尤为常见,下载单个软件包更新或安装程序一次并通过网络分发或可能通过 USB 驱动器手动安装更有意义。这种方法没有任何问题,事实上,它对于多 Mac 管理更有效,但是当软件包安装程序或更新文件具有过期证书时,可能会出现问题,这将阻止软件包完全安装,a当您收到“(应用程序安装程序)已使用已过期的证书签名”错误消息时,这种情况会变得很明显。

为避免这种情况,您可以自己检查包签名是否有效,是否已过期,甚至根本没有签名。

如何在 Mac OS X 中使用 pkgutil 检查包签名状态

出色的 pkgutil 命令行实用程序可以轻松确定任何包签名和证书的状态。它易于使用,因此从 /Applications/Utilities/ 启动终端应用程序并亲自试用。

检查包签名状态的基本语法如下:

pkgutil --check-signature /Path/to/Example.pkg

点击返回,你会发现签名是否有效,签名是否过期,或者根本没有签名。

例如,假设我们有一个 Mac OS X Combo Update 软件安装程序包,这是系统管理员更新多台 Mac 的常见情况,您可以像这样检查该包签名的状态:

pkgutil --check-signature ~/Downloads/OSXUpdateCombo10.10.2.pkg
包“OSXUpdateCombo10.10.2.pkg”:
状态:由已过期的证书签名

在这种情况下,更新包的签名已过期,这意味着如果尝试使用它将抛出错误。

然而,并非所有软件包安装程序都有签名,虽然来自 Apple 的任何软件更新文件都有签名,但来自第三方的软件包通常没有。例如,这个示例包安装程序文件没有签名,应该适当对待(即,如果您不信任来源,也许重新考虑使用它)。

pkgutil --check-signature ~/Downloads/MysterySketchyInstaller-21.pkg
包“MysterySketchyInstaller-21.pkg”:
状态:无签名

如果包文件可疑,您可以验证代码签名并且解压包而不用pkgutil安装给它进一步检查,或者如果您更喜欢使用 GUI,那么像 Pacifist 这样的应用程序提供类似的包管理工具在更友好的界面中,即使它仍然处于高级方面。

像所有优秀的命令行工具一样,您甚至可以输入 pkgutil 通配符以轻松地同时检查多个包,在本示例中,我们将检查 ~/Downloads 中包含的每个 *.pkg 文件的签名:

pkgutil --check-signature ~/Downloads/*.pkg
包“irssi-0.8.17-0.pkg”:
状态:无签名

包“wget-4.8.22-0.pkg”:
状态:无签名

包“ComboUpdateOSXElCapitan.pkg”:
状态:由已过期的证书签名

包“InstallOSXSequoiaBeta.pkg”:
状态:有效

包“HRFDeveloperTools.pkg”:
状态:有效

通配符可以快速检查许多不同包文件的证书状态,只需确保指定 *.pkg 即可完成该过程,而不会在非识别包文件上停止。