tail head cat sleep
QR code linking to this page

manページ  — PKG_SIGN

名称

pkg_sign, pkg_check – package の署名を扱う

内容

書式


pkg_sign [-sc] [-t type] [-u id] [-k key] [file ...]
pkg_check [-sc] [-u id] [-k cert] [file ...]

解説

pkg_sign ユーティリティは暗号化された署名を gzip ファイル file に埋めこみます。 type には pgp (デフォルト), sha1, x509 が指定できます。 type pgp にすると、 pgp 秘密鍵の利用を可能にするための パスフレーズ入力を促すプロンプトが表示されます。 パスフレーズを設定していなくても表示されます (これはいずれにせよ良くない状況ですが)。 type sha1 の場合は、 id を指定する必要があります。これは package (訳注: FreeBSD の package system におけるパッケージを指す場合にこう表記します) の名前として記録され、SHA1 チェックサムとして表示されます。

pkg_check ユーティリティは暗号化された署名をチェックします。 現在は type を無視し、一番上 (topmost) の署名だけをチェックします。 sha1 に対しては、 pkg_check はファイルのチェックサムを取り、 結果が /var/db/pkg/SHA1 に記録されているチェックサムのリストにマッチするかどうか確認します。

オプション -s および -c は「package への署名」モードおよび「署名チェック」モードを強制します。

pgp では、 package への署名や署名チェックに用いる id-u で指定できます。

x509 では、 署名キーまたは検証する証明書 (certificate) を -k オプションで指定できます。 指定しないと、package は以下で記述している デフォルトのキーで署名 (デフォルトの証明書で検証) されます。

file がダッシュひとつ ('-') だったり指定されなかった場合は、 pkg_sign は標準入力から読み込みます。

package への署名では gzip 形式の特徴を利用しています。 これは、gzip のヘッダには EXTRA_FIELD というフラグを設定でき、余分のデータを gzip ヘッダと圧縮ファイルの間に保存できる、というものです。 OpenBSD の署名機構では、 'SIGPGP' + length や 'CKSHA1' + length のような 8 バイトのマーカを署名に用いています (これらのマーカは伝統的に 8 バイト長となっています)。

診断

pkg_sign および pkg_check のユーティリティは、 file のいずれかになにか問題があると、0 より大きい終了コードを返します。 pkg_check の場合、これは通常 package が署名されていない、 あるいは署名が捏造されていることを意味します。
File %s is already signed その gzip ファイルには、既に署名が埋めこまれています。 pkg_sign ユーティリティは今のところ複数の署名を扱いません。
File %s is not a signed gzip file この package には署名がありません。
File %s is not a gzip file gzip ヘッダが見つかりませんでした。
File %s contains an unknown extension gzip ファイルの拡張領域が、別の何らかの用途に既に使われていました。
File %s uses old signatures, no longer supported この gzip ファイルは、非常に古い版の (かなり遅くなる) package 署名を用いています。

バグ

pgp(1) ユーティリティはあまり設計の良くないプログラムで、 インタフェースを取るのが難しいです。 例えば pgp が提供しているといっている 「分離署名機能 (separate signing scheme)」 は不便極まりないもので、パイプを通しての利用ができません。 したがって pgp_sign ではこれをなんとかするために、 pgp 署名の長さを知っていることにして、 pgp を「シームレス」署名モードで起動し、 ファイル本体は圧縮しないで署名のみを取出しています。

チェック動作ではあまり複雑なことはしていません。 pgp に入力するファイルをその場で再ビルドしています。

pgp およびチェックサムファイルへのパスは不正利用を妨げるために ハードコードされています。そのため柔軟性は損なわれています。

関連ファイル

file.sign pkg_signfile からビルドする一時ファイル
/usr/local/bin/pgp
  pgp(1) のデフォルトのパス
/var/db/pkgs/SHA1 記録済みのチェックサム
/etc/ssl/pkg.key デフォルトの package への署名キー
/etc/ssl/pkg.crt デフォルトの package 検証用証明書

関連項目

gzip(1), pgp(1), pkg_add(1), sha1(1)

作者

pkg_sign ユーティリティは Marc Espie が OpenBSD プロジェクトのために作成しました。 X.509 署名と FreeBSD サポートは Wes Peters <wes@softweyr.com> が追加しました。

PKG_SIGN (1) September 24, 1999

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

C is a language that combines all the elegance and power of assembly language with all the readability and maintainability of assembly language.