
Mac OS Xでパッケージの期限切れ証明書を確認する
多くの Mac ユーザーは、コンボアップデートやその他のソフトウェアのパッケージファイルをダウンロードして複数のコンピュータにインストールし、Mac App Store でのアップデートを避けます。これは特に Mac システム管理者に多く、単一のパッケージアップデートまたはインストーラを一度ダウンロードしてネットワーク経由で配布するか、USB ドライブを使用して手動でインストールする方が合理的です。この方法には何の問題もありませんし、実際には複数の Mac を管理する場合にははるかに効率的です。ただし、パッケージインストーラまたはアップデートファイルに期限切れの証明書がある場合、パッケージを完全にインストールできなくなるという潜在的な問題が 1 つ発生します。この状況は、「(アプリケーションインストーラ) は、期限切れの証明書で署名されています」というエラー メッセージが表示されれば明らかです。
この状況を回避するには、パッケージの署名を自分で確認して、署名が有効かどうか、期限が切れていないかどうか、署名がまったくないかどうかなどを確認します。
Mac OS Xでpkgutilを使ってパッケージ署名のステータスを確認する方法
優れたコマンドラインユーティリティ「pkgutil」を使えば、パッケージの署名と証明書のステータスを簡単に確認できます。使い方も簡単なので、/Applications/Utilities/ からターミナルアプリを起動して、ぜひお試しください。
パッケージ署名のステータスを確認するために使用する基本的な構文は次のようになります。
pkgutil --check-signature /Path/to/Example.pkg
Enter キーを押すと、署名が有効かどうか、署名の有効期限が切れているかどうか、あるいは署名がまったく存在しないかどうかがわかります。
たとえば、Mac OS X Combo Update ソフトウェア インストーラー パッケージがあるとします。これは、システム管理者が複数の Mac をアップデートする場合によくあるシナリオですが、次のようにしてそのパッケージ署名のステータスを確認できます。
pkgutil --check-signature ~/Downloads/OSXUpdateCombo10.10.2.pkg
Package "OSXUpdateCombo10.10.2.pkg":
Status: signed by a certificate that has since expired
この場合、更新パッケージの署名の有効期限が切れているため、使用しようとするとエラーが発生します。
ただし、すべてのパッケージインストーラーに署名があるわけではありません。Apple のソフトウェアアップデートファイルには署名がありますが、サードパーティ製のパッケージには署名がないことがよくあります。例えば、このサンプルのパッケージインストーラーファイルには署名がないため、適切に処理する必要があります(つまり、ソースを信頼できない場合は、使用を再検討する必要があるかもしれません)。
pkgutil --check-signature ~/Downloads/MysterySketchyInstaller-21.pkg
Package "MysterySketchyInstaller-21.pkg":
Status: no signature
パッケージ ファイルが疑わしい場合は、コード署名を検証し、pkgutil を使用してインストールせずにパッケージを抽出してさらに検査することができます。また、GUI を使用する場合は、Pacifist などのアプリが、高度な機能ではありますが、より使いやすいインターフェイスで同様のパッケージ管理ツールを提供します。
すべての優れたコマンドラインツールと同様に、pkgutil にワイルドカードを入力して複数のパッケージを同時に簡単にチェックすることもできます。この例では、~/Downloads に含まれるすべての *.pkg ファイルの署名をチェックします。
pkgutil --check-signature ~/Downloads/*.pkg
Package "irssi-0.8.17-0.pkg":
Status: no signature
Package "wget-4.8.22-0.pkg":
Status: no signature
Package "ComboUpdateOSXElCapitan.pkg":
Status: signed by a certificate that has since expired
Package "InstallOSXSequoiaBeta.pkg":
Status: valid
Package "HRFDeveloperTools.pkg":
Status: valid
ワイルドカードを使用すると、さまざまなパッケージ ファイルの証明書ステータスを迅速に確認できます。認識されないパッケージのファイルでプロセスが停止することなく完了するように、必ず *.pkg を指定してください。