home(h) links(l) memo profile(r)
memo(m) unix関係(u) セキュリティ関係

セキュリティ関係

SELinuxの動作状況の確認

getenforceコマンドでSELinuxの動作状況を確認できる。返り値は「enforcing」(アクセス制御が有効)「permissive」(警告が出すがアクセス制限機能自体は無効)「disabled」(アクセス制限機能は無効)のいずれか一つ。[3]

【例】
# getenforce
Enforcing

sestatusコマンドでSELinuxの動作状況に関するより詳しい状況を確認できる。

SELinuxのセキュリティ内容を変更する(chcon)

指定したファイルのセキュリティ設定を変更する。

【書式1】
chcon オプション ... 設定内容 ファイル名 ...
【書式2】
chcon オプション ... -u ユーザ -r 役割 -l 範囲 -t タイプ ファイル名 ...
【書式3】
chcon オプション ... --reference=参照ファイル名 ファイル名 ...

引数

設定内容
ファイルに設定するSELinuxコンテキスト(ファイルの種別)
ファイル
SELinuxコンテキスト(ファイルの種別)を設定する対象となるファイル。

オプション

--dereference
シンボリックリンクそのものではなくリンク元ファイルに対して設定を行う(この動作が既定)。
-h, --no-dereference
シンボリックリンクの参照元ファイルではなくシンボリック自体に対して設定を行う。
-uユーザ, --user=ユーザ
対象のコンテンツのユーザをユーザに設定する。
-r役割, --role=役割
対象のコンテンツの役割を役割に設定する。
-tタイプ, --type=タイプ
対象のコンテンツのタイプをタイプに設定する。
-l範囲, --range=範囲
対象のコンテンツの範囲を範囲に設定する。
-R, --recursive
サブディレクトリにあるファイルやディレクトリも同様に処理する。
-v, --verbose
各ファイルの進行状況を出力する。-R オプションも指定したとき、以下のオプションを指定することにより階層をどのようにたどっていくかの挙動を調整することができる。複数指定した場合は最後に指定したオプションが有効となる。
-H
引数で指定した対象そのものがディレクトリへのシンボリックであった場合はシンボリック元をたどる。
-L
処理対象の中にディレクトリへのシンボリックがあった場合はすべてリンク元をたどる。
-P
シンボリックはたどらない(既定値)。
--help
ヘルプを表示して終了する。
--version
バージョン情報を表示して終了する。
【例1】ApacheのDocumentRootの下にサブディレクトリを作る
※そのままでは、403 Permission Denied になって閲覧できない
shell> mkdir subdir 
shell> touch subdir/index.html ←空のファイルを作成
shell> ls -Z subdir/index.html ←-Z オプションは --context を指定したのと同じらしい
-rw-r--r--  apache apache user_u:object_r:user_home_t subdir/index.html
shell> ls -Z | grep subdir
drwxr-xr-x  apache apache user_u:object_r:user_home_t subdir
shell> chcon -v --type=httpd_sys_content_t subdir
context of subdir changed to user_u:object_r:httpd_sys_content_t
shell> chcon -v --type=httpd_sys_content_t subdir/index.html
context of subdir/index.html changed to user_u:object_r:httpd_sys_content_t
shell> ls -Z subdir/index.html
-rw-r--r--  apache apache user_u:object_r:httpd_sys_content_t subdir/index.html
shell> ls -Z | grep subdir
drwxr-xr-x  apache apache user_u:object_r:httpd_sys_content_t subdir

参考文献・サイト:

SELinuxのモードを設定する

SElinuxの機能を一時的にON/OFFするにはsetenforceコマンドを使う。この設定はOSを再起動すると元の値に戻る。

一時的に無効(permissive)→引数は「0」または「permissive」
# setenforce 0
# setenforce permissive
一時的に有効(enforcing)→引数は「1」または「enforcing」
# setenforce 1
# setenforce enforcing

但し後述の設定によりSELinuxがdisabledに設定されていると、その旨出力されて終わる。

# setenforce 0
setenforce: SELinux is disabled

OS再起動後も設定を維持するには/etc/selinux/configを編集し、SELINUXの値を変更する。この設定はOSを再起動すると反映される。Disabledの状態からPermissiveまたはEnforcingへの変更(またはその逆)はsetenforceコマンドでは実施できない7

SELINUX=enforcing | permissive | disabled

SELinuxのセキュリティ設定を初期状態に戻す(restorecon)

【書式1】
restorecon -o 出力ファイル名 -R -v -e ディレクトリ パス名
【書式2】
restorecon -f 入力ファイル名 -o 出力ファイル名 -e ディレクトリ名 -R -n -v -F

オプション

-i
-f 入力ファイル名
-e ディレクトリ名
-R, -r
-n
-o 出力ファイル名
-v
-vv
-F
【例1】/var/www 以下のタイプラベルを初期化する。
restorecon -R /var/www

参考文献・サイト:

アクセス拒否ログからSELinux許可ルールを生成(audit2allow)

【書式】
audit2allow -adhlrv -t TEファイル名 -i 入力ファイル名 -m | -M モジュール名 -o 出力ファイル名

オプション

-a, --all
auditmessageのログ全てを入力ファイルとして読み込む。-i オプションと同時に設定することはできない。
-d, --dmesg
/bin/dmesgの出力を入力として読み込む。auditdが動作している時は全てのauditメッセージをdmesgから受け取ることはできない。その場合はausearch -m avc | audit2allow または -aオプションを使うこと。
-f 内容設定ファイル, --fcfile 内容設定ファイル
モジュールパッケージを生成するための内容設定ファイル(File context file)を追加する。このオプションは-Mオプションも使ってモジュール名を指定する必要がある。
-h, --help
簡単な利用方法を表示する。
-i 入力ファイル, --input 入力ファイル
指定した入力ファイルを読み込む。
-l, --lastreload
-m モジュール名, --module モジュール名
-M モジュール名
-o 出力ファイル名, --output 出力ファイル名
-r, --requires
-R, --reference
-t, --tefile
-v, --verbose
【例】auditログに記録された拒否記録からlocal.pp という参照ポリシーマクロモジュールを作成
audit2allow -M local /var/log/audit/audit.log
→その後semoduleコマンドでSELinuxポリシーを修正。

SELinuxポリシーモジュールを管理する(semodule)

【書式】
semodule -hlnsvBR -iubr モジュールパッケージファイル名
【例】local.pp モジュールパッケージをインストールする
semodule -i local.pp

バッファーオーバーフロー対策

ExecShieldは、Linuxにおいてバッファーオーバーフロー対策を行うための機能。設定状況を確認する方法は以下の通り。

$ cat /proc/sys/kernel/exec-shield
または
$ sysctl kernel.exec-shield

返り値の意味は以下の通り。

内容
0 無効
1 原則無効。但し有効指定された実行ファイルについては有効。CentOS 6はこれが初期値のよう。
2 原則有効。但し無効指定された実行ファイルについては無効。
3 有効

一時的な変更はこのファイルに書かれた値を変更すればいいらしい。恒久的に変更するには設定ファイルに指定を記述する6

# cat /proc/sys/kernel/exec-shield 
1
# echo 3 >/proc/sys/kernel/exec-shield
# cat /proc/sys/kernel/exec-shield 
3
# cat - >>/etc/sysctl.conf
kernel.exec-shield = 3
(Ctrl + D)

実行ファイルや共有ライブラリごとにExec Shieldの有効化・無効化を行ったり現在の設定状況を確認したりするにはexecstackコマンドを使う。

【書式】
execstack オプション ファイル名
-c
--clear-execstack
指定した実行ファイルや共有ライブラリに対し実行スタックを要求しないよう設定する。
-s
--set-execstack
指定した実行ファイルや共有ライブラリに対し実行スタックを要求するよう設定する。
-q
--query
指定した実行ファイルや共有ライブラリの実行スタック要求設定の状況を問い合わせる。実行スタックが要求されない場合は-、要求される場合はX、どちらなのか不明な場合は?が表示される。
【例】
# execstack -q /usr/sbin/httpd
- /usr/sbin/httpd
# execstack -s /usr/sbin/httpd
# execstack -q /usr/sbin/httpd
X /usr/sbin/httpd
# execstack -c /usr/sbin/httpd
# execstack -q /usr/sbin/httpd
- /usr/sbin/httpd

署名の確認や管理(gpg)

ダウンロードしたファイルなどの署名を確認する。

署名の作成

自分で署名を作成する方法。自身で作成したrpmパッケージなどに署名する際あらかじめGPGキーを作成しておく必要がある。

【書式】秘密鍵と公開鍵のセットを作る
gpg --gen-key
shell> gpg --gen-key
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

gpg: ディレクトリー「/home/user/.gnupg」ができました
gpg: 新しい構成ファイル「/home/user/.gnupg/gpg.conf」ができました
gpg: 警告: 「/home/user/.gnupg/gpg.conf」のオプションは起動している間、有効になりません
gpg: 鍵輪「/home/user/.gnupg/secring.gpg」ができました
gpg: 鍵輪「/home/user/.gnupg/pubring.gpg」ができました
ご希望の鍵の種類を選択してください:
   (1) DSAとElgamal (既定)
   (2) DSA (署名のみ)
   (5) RSA (署名のみ)
選択は?  ←Enterのみ入力で既定の1を選択
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)  ←Enterのみ入力で既定の2048を選択
要求された鍵長は2048ビット
鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で満了
      <n>w = 鍵は n 週間で満了
      <n>m = 鍵は n か月間で満了
      <n>y = 鍵は n 年間で満了
鍵の有効期間は? (0) ←Enterのみ入力で既定の0(無期限)を選択
Key expires at 2011年01月05日 09時22分48秒 JST
これで正しいですか? (y/N) y

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

本名: Gpg User
電子メール・アドレス: user@hoge.com
コメント: foo
次のユーザーIDを選択しました:
    “Gpg User (foo) <user@hoge.com>”

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? o
直接この操作を行うUNIXユーザでログインしておかないと、この先のステップに進めない。
つまり、su や sudo により他のユーザから操作しているとここで処理が打ち切られてしまう[4]
秘密鍵を保護するためにパスフレーズがいります。

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

十分な長さの乱数が得られません。OSがもっと乱雑さを収集
できるよう、何かしてください! (あと284バイトいります)
別セッションを開いて、ファイルを編集するなどいろいろ操作をする。それなりに時間がかかる。
今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。
++++++++++.++++++++++++++++++++.+++++++++++++++++++++++
++....+++++++++++++++++++++++++.++++++++++..+++++.+++++
.++++++++++...+++++.+++++.+++++++++++++++++++++++++>+++
++.+++++>+++++.............................>.+++++>++++
+.<+++++...............................................
......................................................<
+++++...............................>+++++>+++++...<+++
++................<+++++>..+++++.<..+++++>..+++++......
..+++++^^^
gpg: /home/user/.gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵A1E58E23を絶対的に信用するよう記録しました
公開鍵と秘密鍵を作成し、署名しました。

gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 1u
pub   1024D/A1E58E23 2010-01-05
                 指紋 = 436A 8205 3476 2103 7723  8AFF 0306 C257 A1E5 8E23
uid                  Gpg User (foo) <user@hoge.com>
sub   2048g/95F968B2 2010-01-05

本名、メールアドレスなどを指定した後、次のようなエラーが出て鍵作成が中断されてしまう場合、以下の対策を行えばいいとのこと[7]。CentOS 6でこの現象が起きた。

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? o
You need a Passphrase to protect your secret key.

can't connect to `/home/pdbj/.gnupg/S.gpg-agent': No such file or directory
gpg-agent[41275]: command get_passphrase failed: Operation cancelled
gpg: cancelled by user
gpg: Key generation canceled.

あるいはこんな出力(CentOS Stream 8で確認)

名前(N)、電子メール(E)の変更、またはOK(O)か終了(Q)? O たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生 成器に十分なエントロピーを供給する機会を与えることができます。 gpg: agent_genkey failed: 許可がありません 鍵の生成に失敗しました: 許可がありません

以下のようにすればいいらしい[6][7]

[user@server ~]$ gpg-agent --daemon --use-standard-socket
GPG_AGENT_INFO=/home/user/.gnupg/S.gpg-agent:45853:1; export GPG_AGENT_INFO;
[user@server ~]$ sudo chmod a+rwx `tty`
[user@server ~]$ gpg --gen-key
...
gpg: 鍵12345678を絶対的に信用するよう記録しました
公開鍵と秘密鍵を作成し、署名しました。

gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   3  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 3u
pub   2048R/18273643 2016-10-14
                 指紋 = 0072 BD91 2A5A 1EF4 4F6B  BDB1 2D01 E4D1 84FA 11C3
uid                  First Family (comment) <test@example.org>
sub   2048R/87654321 2016-10-14
[user@server ~]$ sudo chmod 640 `tty`

キーリストの表示

【書式】
gpg --list-key

【例】
shell> gpg --list-key
gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 1u
/home/user/.gnupg/pubring.gpg
------------------------------
pub   1024D/1A9496E0 2010-01-22
uid                  Hoge Fuga (GroupX) <user@hoge.com>
sub   2048g/C68285D1 2010-01-22

公開鍵の取り込み

公開鍵が手元にない場合に必要

【書式】指定した公開鍵ファイルを取り込む
gpg --import 公開鍵ファイル名
【書式】指定したキーサーバ、から指定鍵IDのキーを取り込む
gpg --keyserver キーサーバードメイン名 --recv-key 鍵ID
--keyserver キーサーバードメイン名
キーをどこから取ってくるかを指定する。指定がない場合の既定値は「keys.gnupg.net」→CentOS6のgpg(2.0.14)では指定が必須となったよう(--keyserverの指定がないとエラーになる)。
【例】Wikimedia の公開鍵リストをダウンロードして取り込む
[user@server ~]$ wget https://secure.wikimedia.org/keys.txt
[user@server ~]$ gpg --import keys.txt
gpg: 鍵E8A3FEC4:“Tim Starling <tstarling@wikimedia.org>”変更なし
gpg: 鍵4D70938E:“Brion Vibber <brion@pobox.com>”変更なし
gpg: 鍵F9F8CD79:“Tim Starling <tstarling@wikimedia.org>”変更なし
gpg: 鍵9D3BB7B0:“Sam Reed <reedy@wikimedia.org>”変更なし
gpg: 鍵4D70938E:“Brion Vibber <brion@pobox.com>”変更なし
gpg: 鍵9D3BB7B0:“Sam Reed <reedy@wikimedia.org>”変更なし
gpg: 鍵62D84F01: 公開鍵“Chris Steipp <csteipp@wikimedia.org>”を読み込みました
gpg:     処理数の合計: 7
gpg:           読込み: 1
gpg:         変更なし: 6

【例】キーサーバから指定鍵IDのキーを取り込む
[user@server ~]$ gpg --verify openssh_gzsig_key.pub.asc 
gpg: 2010年04月16日 09時17分18秒 JSTにDSA鍵ID 86FF9C48で施された署名
gpg: 署名を検査できません: 公開鍵が見つかりません
[user@server ~]$ gpg --keyserver keys.gnupg.net --recv-keys 86FF9C48 ←上記メッセージ中にあるIDを指定
a                        ↑キーサーバは特に指定がなければ「keys.gnupg.net」を指定すればいいみたい?
gpg: 鍵86FF9C48をhkpからサーバーkeys.gnupg.netに要求
gpg: 鍵86FF9C48: 重複したユーザーIDの検出 - 併合
gpg: /root/.gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵86FF9C48: 公開鍵“Damien Miller (Personal Key) <djm@mindrot.org>”を読み込みました
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 1u
gpg:     処理数の合計: 1
gpg:           読込み: 1  (RSA: 1)
[user@server ~]$ gpg --verify openssh_gzsig_key.pub.asc 
gpg: 2005年05月24日 15時17分05秒 JSTにDSA鍵ID 86FF9C48で施された署名
gpg: “Damien Miller (Personal Key) <djm@mindrot.org>”からの正しい署名 ←今度は検査OK
gpg: 警告: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
主鍵の指紋: 3981 992A 1523 ABA0 79DB  FC66 CE8E CB03 86FF 9C48

【例】Gitの現行PHP5.3 Release ManagerのGnuPG鍵を取り込み
PHP Downloadサイトに記述された以下の記述に従い公開鍵を取り込む

pub   2048R/FC9C83D7 2012-03-18 [expires: 2017-03-17]
      Key fingerprint = 0A95 E9A0 2654 2D53 835E  3F3A 7DEC 4E69 FC9C 83D7
uid                  Johannes Schlüter <johannes@schlueters.de>
uid                  Johannes Schlüter <johannes@php.net>

$ gpg --recv-key FC9C83D7
gpg: 鍵FC9C83D7をhkpからサーバーkeys.gnupg.netに要求
gpg: 鍵FC9C83D7: 公開鍵“Johannes Schlüter <johannes@schlueters.de>”を読み込みました
gpg:     処理数の合計: 1
gpg:           読込み: 1  (RSA: 1)

下記エラーで鍵が取得できない時。

$ gpg --recv-key 2527436A
gpg: requesting key 2527436A from hkp server keys.gnupg.net
gpgkeys: HTTP fetch error 7: Failed to connect to 2001:470:b2a7:1:225:90ff:fe93:e9fc: Network is unreachable
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0

IPv6で接続しに行こうとして接続に失敗しているようだが、IPv4での接続に失敗して次候補としてIPv6での接続を試み、最終的に接続できていないということであれば、IPv6を無効化(→[4])しても問題は解消しないよう。この場合、IPv4での接続に失敗しているというところが問題。既定ではポート11371を使って接続を試みるようだが、ファイアウォールなどで通信が許可されていないと通信に失敗する。80番(http)ポートなど空いているポートを使えばOKとのこと[10][11]

$ gpg --keyserver hkp://keys.gnupg.net:80 --recv-key 2527436A
gpg: requesting key 2527436A from hkp server keys.gnupg.net
gpg: key 2527436A: public key "Eric Blake " imported
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

署名の検証

あるファイルが改竄されていないことを確認する。なお事前に対応する公開鍵を入手しておく必要がある(→公開鍵の取り込み参照)。

【書式】
gpg --verify 署名ファイル名 署名チェック対象ファイル名...

【例】mediawiki-1.15.3.tar.gz を 署名ファイル mediawiki-1.15.3.tar.gz.sig で検証
[user@server ~]$ gpg --verify mediawiki-1.15.3.tar.gz.sig
gpg: 2010年04月07日 09時43分51秒 JSTにDSA鍵ID F9F8CD79で施された署名
gpg: “Tim Starling <tstarling@wikimedia.org>”からの正しい署名 ←これが出ればとりあえずOK
gpg: 警告: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
主鍵の指紋: F7F7 80D8 2EBF B8A5 6556  E7EE 8240 3E59 F9F8 CD79

【例】公開鍵を取り込んでいない例
[user@server ~]$ gpg --verify openssh-5.5p1.tar.gz.asc
gpg: 2010年04月16日 09時17分18秒 JSTにDSA鍵ID 86FF9C48で施された署名
gpg: 署名を検査できません: 公開鍵が見つかりません
→表示されたIDの公開鍵をインポートする→公開鍵の取り込み参照

引数を何も指定しなかった場合、署名パケットは標準入力から読み込まれる。引数を1つだけ(署名ファイルだけ)指定した場合、署名ファイル名から拡張子「.sig」または「.asc」を取り除いたものが署名対象ファイルに指定されたものとみなして検証処理が行われる。引数が2つ以上指定された場合は、1つ目の引数を署名ファイルとして、2つ目以降の各ファイルに対して署名検証が行われる。 署名対象ファイルを標準入力から読み込む場合、「-」(ハイフン)を2つ目の引数に指定する。なお、セキュリティ上の理由から、これ以外の方法で署名ファイルが署名対象ファイルを標準入力から読み込むことはできない。

鍵の削除

【秘密鍵の削除】
gpg --delete-secret-key 鍵ID
【公開鍵の削除】※組となる秘密鍵があると削除できない
gpg --delete-key 鍵ID
【秘密鍵と公開鍵の削除】
gpg --delete-secret-and-public-key 鍵ID

【例】
shell> gpg --list-key
gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 1u
/home/user/.gnupg/pubring.gpg
------------------------------
pub   1024D/1A9496E0 2010-01-22
uid                  Hoge Fuga (GroupX) <user@hoge.com>
sub   2048g/C68285D1 2010-01-22
shell> gpg --delete-key C68285D1
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

gpg: この公開鍵にたいする秘密鍵“C68285D1”があります!
gpg: まず“--delete-secret-keys”オプションでこれを削除してください。
shell> gpg --delete-secret-key 1A9496E0
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.


sec  1024D/1A9496E0 2010-01-22 Hoge Fuga (GroupX) <user@hoge.com>

この鍵を鍵輪から削除しますか? (y/N) y
これは秘密鍵です! 本当に削除しますか? (y/N) y
shell> gpg --delete-key C68285D1
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

pub   1024D/1A9496E0 2010-01-22 Hoge Fuga (GroupX) <user@hoge.com>
この鍵を鍵輪から削除しますか? (y/N) y

【例2】期限の切れた公開鍵を削除する(秘密鍵は手元にない)
# gpg --list-key
/root/.gnupg/pubring.gpg
------------------------
pub   1024D/4D70938E 2003-11-15
uid                  Brion Vibber <brion@pobox.com>
sub   1024g/965B3548 2003-11-15

pub   1024D/F9F8CD79 2009-08-02 [満了: 2012-08-01] ←期限の切れたこの鍵を削除
uid                  Tim Starling <tstarling@wikimedia.org>

# gpg --delete-key F9F8CD79
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.


pub  1024D/F9F8CD79 2009-08-02 Tim Starling <tstarling@wikimedia.org>

この鍵を鍵輪から削除しますか? (y/N) y
# gpg --list-key
/root/.gnupg/pubring.gpg
------------------------
pub   1024D/4D70938E 2003-11-15
uid                  Brion Vibber <brion@pobox.com>
sub   1024g/965B3548 2003-11-15

gpgコマンド

その他gpgコマンドのオプション類を記す。

【書式】
gpg オプション コマンド 引数
--export キーIDまたはキー所有者名
キーの公開鍵を出力する。引数を指定しないとキーリング中にある全てのキーが、指定した場合は指定したキーが対象となる。既定の出力先が標準出力だが、--outputオプションを併用することでファイルに出力することもできる? それともこのオプションを使わなくてもリダイレクトでファイルへの出力は可能? 引数は英数字のキーIDで指定することも、「名前 <メールアドレス>」の形式で表記される所有者名のどちらで指定してもOK。なお、ASCII形式で出力するには-aオプションを合わせて指定する。
【例】
[user@pc1 ~]$ gpg --output 出力先ファイル名 --export キーIDまたはキー所有者名
[user@pc1 ~]$ scp gpg.key user@pc2:~
gpg.key                                                           100%  902     0.9KB/s   00:00
[user@pc2 ~]$ gpg --import ~/gpg.key
-a
--armor
ASCII形式で出力する。
-o ファイル名
--output ファイル名
指定したファイルに出力する?

SSL証明書の生成と署名要求(genkey)

出典:man genkey (crypto-utils April 2005)

genkeyはSSL証明書や、証明書署名要求(Certificate Signing Requests、CSR)の生成を行うことができる対話的コマンドラインツール。生成されたSSL証明書は/etc/pki/tls/certs/、対応する秘密鍵は/etc/pki/tls/private/に保存される。

genkeyは希望するキーのサイズ、CSRを生成するかどうか、暗号化した秘密鍵が必要かどうか、the certificate subject DN detailsを尋ねてきます。

genkeyはtruerandライブラリを使い、ユーザにランダムなテキストを入力させることにより、秘密鍵を生成するためのランダムデータを作る。

【書式】
genkey オプション ホスト名
--makeca
証明局のキーペアを生成する
--genreq
証明書署名要求を既存の秘密鍵に対して生成する。これは署名局に送ることができる。
--test
テストのみを実行する。時間のかかるランダムデータ生成過程は省略する。
--days 日数
自己署名証明書を生成する際、証明書の有効日数を指定する。既定値は30(日)。