レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

Debian(Ubuntu)で GnuPGを使って自分で作成したパッケージを公開する

2012年6月8日 2015年5月14日
debian howto

今回は、 Debian(Ubuntu)で 自分で作成した(ビルドした)パッケージを公開する 方法について、簡単に解説してみたいと思います。
ここでは、Nginx にリバースプロキシのキャッシュ削除モジュール nginx cache purge を組み込んで使ってみる(Debian/Ubuntu編) でビルドした nginx パッケージを 公開してみたいと思います。

公開する側(サーバ)の設定

GnuPG で公開キーファイルを作成する

GnuPG では、公開鍵と秘密鍵を作成します。

GNU Privacy Guard (GnuPG) とは、Pretty Good Privacy (PGP) の別実装として、GPL に基づいた暗号化ソフトである。 OpenPGP 規格 (RFC4880) に完全準拠しているが、古い PGP との互換性は完全ではない。

Pretty Good Privacy (PGP) とは、フィル・ジマーマン(Philip Zimmermann)が開発、公開した暗号ソフトウェアである。 公開鍵暗号方式を採用しており、暗号、署名ができる。 開発当初、アメリカは暗号を武器とみなし輸出を禁止していた。このためアメリカ外では入手することが出来なかったが、政府は憲法上、出版物を取り締まることができないため、ソースコードを書籍(ISBN 0-262-24039-4)として出版、海外に輸出し有志によって改良がなされ国際版 (PGPi) が公開された。しかし、1999年12月13日にアメリカからのPGPの輸出が一部の国を除いて認められたため、アメリカ国外でも合法的にUS版PGPを使用できるようになり、国際版の開発は終了した。 2001年10月にPGPの開発元であるNetwork AssociatesがPGP部門の解体を発表、売却先を探していたが2002年8月に売却先が見つかり、PGP Corporationを設立して開発及び販売が再開された。2005年8月に公開されたPGP9.0.2からは日本語版も公開されている。現在は日本法人も設立され日本でのサポートも行われている。現在は英語版、ドイツ語版、日本語版が公開されている。 なお、PGP Corporationは2010年6月にSymantecに買収された。

( 出典:Wikipedea )

まず、gpg –gen-key で新しい鍵対を生成します。

$ gpg --gen-key
gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ご希望の鍵の種類を選択してください:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (署名のみ)
   (4) RSA (署名のみ)
選択は? return
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)return
要求された鍵長は2048ビット
鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で満了
      <n>w = 鍵は n 週間で満了
      <n>m = 鍵は n か月間で満了
      <n>y = 鍵は n 年間で満了
鍵の有効期間は? (0)return
Key does not expire at all
これで正しいですか? (y/N) yreturn

あなたの鍵を同定するためにユーザーIDが必要です。
このソフトは本名、コメント、電子メール・アドレスから
次の書式でユーザーIDを構成します:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

本名: I am manreturn
電子メール・アドレス: hoge@example.comreturn
コメント: I am manreturn
次のユーザーIDを選択しました:
    “I am man (I am man) <hoge@example.com>”

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? Oreturn
秘密鍵を保護するためにパスフレーズがいります。

==> ここでパスフレーズの入力を求められるので入力します。また、このパスフレーズ(パスワード)を忘れないようにします。

今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。

十分な長さの乱数が得られません。OSがもっと乱雑さを収集
できるよう、何かしてください! (あと285バイトいります)
+++++
..+++++
今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。
..+++++
.....+++++
gpg: /home/apache/.gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵436CF602を絶対的に信用するよう記録しました
公開鍵と秘密鍵を作成し、署名しました。

gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/XXXXXXXX 2012-05-10
                 指紋 = YYYY YYYY YYYY YYYY YYYY  YYYY YYYY YYYY YYYY YYYY
uid                  I am man (I am man) <hoge@example.com>
sub   2048R/XXXXXXXX 2012-05-10
サーバーによっては、上記の 十分な長さの乱数が得られません。OSがもっと乱雑さを収集できるよう、何かしてください! (あと285バイトいります) 部分で止まってしまうことがあります。

その場合、擬似乱数を使ってエントロピーを増やしてあげるとうまくいきます。
# 現在のエントロピーの供給量を確認します。
$ cat /proc/sys/kernel/random/entropy_avail
129

# rngd デーモンを使ってエントロピーを供給してあげるために、まず、インストールします。
$ apt-get istall rng-tools
...
# rngd デーモンの設定を編集します。
$ vi /etc/default/rng-tools
...
#HRNGDEVICE=/dev/null
HRNGDEVICE=/dev/urandom
...
# 上記の編集を終えたら保存し、rngd デーモンを起動します。
$ /etc/init.d/rng-tools start
Starting Hardware RNG entropy gatherer daemon: rngd.

# 最後に十分なエントロピーが供給できているか確認します。
$ cat /proc/sys/kernel/random/entropy_avail
1982

# 十分に増えていればOKです。
上記のrngdを起動した状態で、再度、gpg –gen-key を実行してみてください。きっとうまくいくでしょう。
GnuPG(gpg) は、OpenSSL(openssl)などで作成する署名と異なり、CRTファイルのようなものが作成されるわけではありません。 gpgコマンドを実行したユーザのホームディレクトリに .gnupg というディレクトリが作成され、以下のようなファイルが作成されます。
~/.gnupg/
	gpg.conf  
	pubring.gpg  
	random_seed  
	secring.gpg  
	trustdb.gpg
	
信用データベース (trustdb.gpg) へ秘密鍵情報が書き込まれるもので、SSLのようなCRTファイルが作成されるわけではない。

次に、gpg –export で公開鍵ファイルを作成します。

# 先に作成した鍵情報を確認しておきます。
$ gpg --list-keys
/home/hoge/.gnupg/pubring.gpg
-------------------------------
pub   2048R/XXXXXXXX 2012-05-10
uid                  I am man (I am man) <hoge@example.com>
sub   2048R/XXXXXXXX 2012-05-10

# XXXXXXXX : KEY-IDになります。
# KEY-IDを使って公開鍵ファイルを作成します。
$ gpg --export -a XXXXXXXX > debian-pkg.key
# 公開鍵ファイルが作成できたか確認します。
$ cat debian-pkg.key
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.10 (GNU/Linux)

mQENBE+sFNcBCADHe4cD+sTfCJYxlP2hxc4RiRnaNNw3aSOU9cHKDyPj8aygVJ7S
  ...
  ...
ounTqa+l8FK0tLhXyP4c+jHXxmg6sf/Nd/F47PnbvWPqN1/Y07L8PXg=
=MURt
-----END PGP PUBLIC KEY BLOCK-----

公開するパッケージを公開キーファイルをウェブサイトに配置する

公開する側の最後は、公開するパッケージと公開キーをウェブサイトへ配置し、一般公開すれば完了です。
ここでは、公開ディレクトリを /var/www/html/public/ を公開ウェブサイト(www.example.com)のルートディレクトリとしています。また、公開するパッケージは、Nginx にリバースプロキシのキャッシュ削除モジュール nginx cache purge を組み込んで使ってみる(Debian/Ubuntu編) でビルドした nginx パッケージを 公開してみたいと思います。
以下にその手順を簡単に解説してみます。( )

# パッケージを公開するディレクトリを作成します。
# 以下の例では、http://wwww.example.com/debian-pkg/ がパッケージ公開ディレクトリのイメージです。
$ mkdir /var/www/html/public/debian-pkg

$ cd  /var/www/html/public/debian-pkg

# 公開したいパッケージ ( ここでは、nginx のバイナリパッケージ ) をコピーします。
[debian-pkg]$ cp ~/nginx_1.0.13-1~squeeze_i386.deb .
# 公開鍵ファイルをコピーします。
[debian-pkg]$ cp ~/debian-pkg.key .
# apt-ftparchive を使って aptリポジトリ を作成します。
#   Pakagesファイルを作成します。
[debian-pkg]$ apt-ftparchive packages . > Packages
#   Releaseファイルを作成します。
[debian-pkg]$ apt-ftparchive release . > Release
#   ----以下は、今回は、ソースコードやコンテンツの公開をしないので、不要です。
#   Sourcesファイルを作成します。
#   Contentsファイルを作成します。
# [debian-pkg]$ apt-ftparchive sources . > Sources
# [debian-pkg]$ apt-ftparchive contents . > Contents-$(dpkg --print-architecture)
#   Pakagesファイルを圧縮します。
[debian-pkg]$ gzip -c9 Packages > Packages.gz 
#   Sourcesファイルを圧縮します。
# [debian-pkg]$ gzip -c9 Sources > Sources.gz 
#   Contentsファイルを圧縮します。
# [debian-pkg]$ gzip -c9 Contents-$(dpkg --print-architecture) > Contents-$(dpkg --print-architecture).gz
#   Releaseファイルに GPG署名をします。
[debian-pkg]$ gpg --sign -b -a -o Release.gpg Release
次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“I am man (I am man) <hoge@example.com>”
2048ビットRSA鍵, ID XXXXXXXX作成日付は2012-06-07

==> ここでパスフレーズの入力を求められるので入力します。
apt-ftparchive がインストールされていない場合はインストールしましょう。
$ apt-get install apt-utils
...

自動更新する側の設定

更新するパッケージのウェブサイトを指定する

Debian(Ubuntu)で apt-get upgrade で自動更新したくない場合の対応 でも示したように、apt preferences を用いて更新するパッケージの公開ウェブサイトを指定することができます。

# APTの自動更新のために、先に設定したウェブサイトを公開サイトとして追加します。
$ vim /etc/apt/sources.list
...
# local nginx
deb http://wwww.example.com/debian-pkg/ ./


# nginxのパッケージは、先に設定したウェブサイトを公開サイトとします。
$ vim /etc/apt/preferences.d/nginx

Package: nginx
Pin: origin wwww.example.com
Pin-Priority: 1001
上記に設定が、正しく指定のとおりのウェブサイトのパッケージを候補とするか確認するには、以下のようにコマンドをと投入するとわかります。
$ apt-get update
...
$ apt-cache policy nginx
nginx:
  インストールされているバージョン: 1.0.12-1~squeeze
  候補:               1.0.13-1~squeeze
  パッケージ Pin: 1.0.13-1~squeeze
  バージョンテーブル:
     1.2.1-1~squeeze 1001
        500 http://nginx.org/packages/debian/ squeeze/nginx amd64 Packages
     1.0.13-1~squeeze 1001
        500 http://wwww.example.com/debian-pkg/ ./ Packages
     1.2.0-1~dotdeb.1 1001
        500 http://packages.dotdeb.org/ squeeze/all amd64 Packages
 *** 1.0.15-1~squeeze 1001
        100 /var/lib/dpkg/status
     0.7.67-3+squeeze2 1001
        500 http://ftp.jp.debian.org/debian/ squeeze/main amd64 Packages
        500 http://security.debian.org/ squeeze/updates/main amd64 Packages
上記のように wwww.example.com のパッケージが候補として出力されればOKです。

公開キーファイルをダウンロードし、キーを追加する

次に先に設定した公開ウェブサイトから公開鍵ファイルをダウンロードし、APT-KEYに追加します。

# 先に設定した公開ウェブサイトから公開鍵ファイルをダウンロードします。
$ wget http://wwww.example.com/debian-pkg/debian-pkg.key
--2012-05-11 12:02:44--  http://wwww.example.com/debian-pkg/debian-pkg.key
49.212.151.64:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 1731 (1.7K) [application/octet-stream]
'debian-pkg.key' に保存中

100%[======================================>] 1,731       --.-K/s 時間 0.001s

2012-05-11 12:02:44 (2.37 MB/s) - 'debian-pkg.key' へ保存完了 [1731/1731]


# 公開鍵ファイルを認証済として追加します。
$ apt-key add debian-pkg.key
OK

# 認証済リストを出力します。
$ apt-key list
/etc/apt/trusted.gpg
--------------------
...
pub   2048R/XXXXXXXX 2012-05-10
uid                  I am man (I am man) <hoge@example.com>
sub   2048R/XXXXXXXX 2012-05-10

アップグレードする

ここまでできたら、設定は完了です。最後にアップグレードを実施してみてください。

$ aptitude update
取得:1 http://wwww.example.com ./ Release.gpg [490 B]
無視 http://wwww.example.com/debian-pkg/ ./ Translation-en
無視 http://wwww.example.com/debian-pkg/ ./ Translation-ja
取得:2 http://wwww.example.com ./ Release [726 B]
無視 http://wwww.example.com ./ Packages
取得:3 http://wwww.example.com ./ Packages [580 B]
...
得:6 http://security.debian.org squeeze/updates/main Sources [79.3 kB]
取得:7 http://security.debian.org squeeze/updates/main amd64 Packages [227 kB]
396 kB を 2秒 秒でダウンロードしました (152 kB/s)

$ aptitude safe-upgrade
以下のパッケージが更新されます:
  nginx
更新: 1 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
480 kB のアーカイブを取得する必要があります。展開後に 36.9 kB のディスク領域が新たに消費されます。
先に進みますか? [Y/n/?] y
取得:1 http://wwww.example.com/debian-pkg/ ./ nginx_1.0.13-1~squeeze [480 kB]
480 kB を 0秒 秒でダウンロードしました (3,587 kB/s)
changelog を読んでいます... 完了
(データベースを読み込んでいます ... 現在 41079 個のファイルとディレクトリがイン ストールされています。)
nginx 1.0.12-1~squeeze を (.../nginx_1.0.13-1~squeeze_i386.deb で) 置換するため の準備をしています ...
nginx を展開し、置換しています...
nginx (1.0.13-1~squeeze) を設定しています ...
設定ファイル /etc/nginx/scgi_params を新規にインストールしています ...
設定ファイル /etc/nginx/uwsgi_params を新規にインストールしています ...
設定ファイル /etc/nginx/fastcgi_params を新規にインストールしています ...
nginx: [warn] duplicate MIME type "text/html" in /etc/nginx/nginx.conf:95
nginx: [warn] the "log_format" directive may be used only on "http" level in /etc/nginx/nginx.conf:826
nginx: [warn] the "log_format" directive may be used only on "http" level in /etc/nginx/nginx.conf:946

現在の状態: 更新が 0 個 [-1]。
$
もし、GnuPGの署名がない場合は、アップグレードを実行した際に以下のような警告メッセージが表示されます。
$ aptitude safe-upgrade
以下のパッケージが更新されます:
  nginx
更新: 1 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
480 kB のアーカイブを取得する必要があります。展開後に 36.9 kB のディスク領域が新たに消費されます。
先に進みますか? [Y/n/?] yreturn
警告: 以下のパッケージは信頼できないバージョンがインストールされます!

信頼できないパッケージはシステムのセキュリティを危うくする可能性があります。
自分がこのインストールを望んでいると確信できる場合のみ、インストールを先に進め
てください。

  nginx

この警告を無視して意地でも先に進みますか?
先に進む場合は "Yes" を、中断する場合は "No" を、入力してください:


GnuPG で、ちょっと一手間ありますが、複数台を管理している方にとっては、この手間は、案外、「急がば回れ」のようなもので、便利に感じるかもしれませんね。

個別のパッケージを公開する上で、上記の流れでやれば、Debian(Ubuntu)では、自前のサーバーでいくらでも公開できます。一度、お試しあれ。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

Debian(Ubuntu)で apt-get upgrade で自動更新したくない場合の対応

今回は、 Debian(Ubuntu)で apt-get upgrade (aptitude も同様)で自動更新したくない場合の対処方法につい ...

Nginxを公式サイトから最新版をインストールする(Debian/Ubuntu編)

Debian(Ubuntu 12) で Dotdeb から最新のnginx をインストール、php-fprm を使ってphpを動かしてみる では ...

Nginx にリバースプロキシのキャッシュ削除モジュール nginx cache purge を組み込んで使ってみる(Debian/Ubuntu編)

今回は、Ubuntu Server(Debian) で nginx を使ってみたいと思います。 Ubuntu(Debian) では、apt ...

Ubuntu (Debian) で nginx に perl module (モジュール) を組み込んで使ってみる

今回は、Ubuntu Server(Debian) で nginx の perl module (モジュール) を使ってみたいと思います。 ...

Ubuntu (Debian) で nginx に WebDAV拡張モジュール(ngx-dav-ext-module)を組み込むで使ってみる

今回は、Ubuntu Server(Debian) で nginx を使った WebDAV を構築してみたいと思います。 ( Apache 版 ...



コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

[ 画像提供元 : Amazon ] 先日、1TBのディスクの入れ替え時にバックアップをとろうとディスクコピーを行いました。 その際 ...

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...

今回は、Windows で Compass を使ってみました。 Compass とは、 Sass(サス、Syntactica ...

今回は、Anti Adblock を使ってみました。 Anti Adblock とは、 そもそも Adblock という ウェブ ...

デスクトップ環境でない サーバーで、Webページのキャプチャー画像をコマンドで撮る には、wkhtmltoimage, CutyCapt ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ
Time : 0.2014 [s]