caffをセットアップして使ってみた

前回の記事ではcaffっぽいツールを作りましたが、やはりcaffの動きを見ないことには「これでいいのかな?」という気持ちが残りました。
そこでテスト環境にcaffをセットアップして使ってみたため、その記録も残しておきます。

■テスト環境


実際には この記事 の Chef のレシピを以下の通りに変更して、Vagrant upしたものです。
ubuntu-desktopはGUIを、ssmtpはローカルのSMTPとして使うため、Thunderbirdは実際にメールを受信してみるためにセットアップしています。

#
# Cookbook Name:: piyo
# Recipe:: default
#
# Copyright 2013, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#

# 「update package index」の処理を記載
execute "update package index" do
  command "apt-get update"
  ignore_failure true
  action :nothing
end.run_action(:run)

# update が終わったことをログ出力
log "done update"

# 「ubuntu-desktop」パッケージをインストールする
package "ubuntu-desktop" do
  action :install
end

package "gnupg" do
  action :install
end

package "signing-party" do
  action :install
end

package "ssmtp" do
  action :install
end

package "thunderbird" do
  action :install
end

# ubuntu-desktop のインストールが終わったことをログ出力
log "done install"

■caffの設定

以下の記事を参考に、caffからgmailで送信する設定を行いました。

.caffrc の設定

ターミナルで caff と入力した後に作成される .caffrc を以下の通りに編集しました。

  • 「$CONFIG{'email'} = 'hoge@example.com';」のように、メールアドレスを設定
  • 「$CONFIG{'keyid'} = [ qw{hogehogefugafuga} ];」のように、自分の公開鍵IDの後ろ16文字をセット

  通常目にする8文字を設定したところ、エラーが出ました。.caffrcにも注意書きがありますね。

  • 「#!/usr/bin/perl -w」を「# .caffrc -- vim:ft=perl:」へと変更

  caffで送信する際に警告が出る(でもメールは送信できている)のを防ぐために、以下を参考にして変更しました。
  lenny caffの設定 - 間違いだらけの備忘録




ファイルの全文はこちらになります。

~/.caff/gnupghome/gpg.conf ファイルの作成

元記事とは異なる点として、SHA512にしました。

personal-digest-preferences SHA512
cert-digest-algo SHA512


パーミッション変更は元記事通りに行いました。



■caffの実行

VM上でgen-keyして鍵を生成した後、自分の公開鍵IDへの署名でcaffを使ってみたところ、無事に実行できました。
VM上では鍵は一つしか生成しなかったため、以下で自分の公開鍵に署名・送信できました。(hogehogeはメールの送信先である、自分の公開鍵ID)

caff hogehoge


あとはcaffやGPGまわりで調べたことを以下にまとめておきます。



■GPG関連

GPGのコマンドやオプションについて

以下のページにコマンドやオプションがまとまっていました。


HowToはこちら。


チュートリアルは以下がまとまっていました。


日本語の場合は、以下が実行結果も掲載されていたので、分かりやすかったです。


なお、caffのログを見ていたところ「gpg --edit <鍵ID> sign」みたいなログが出ていたので、手元のGpg4winで試してみたところ --edit-key後のsignと同じ動作でした。
そのことから、 --editを使えば --edit-key後の処理が一行でできそうだと分かり、checkなどが楽になりそうです。

# 例
# 鍵のチェック (「quit」がないと、「gpg >」と表示され --edit-key の中に残るような感じになる)
gpg --edit <鍵ID> check quit

# 鍵に署名をして保存(署名しますか?の確認は表示される)
gpg --edit <鍵ID> sign save


また、「gpg --batch --yes --sign-key <鍵ID>」とbatchモードですべてyesを選択して署名しようとしたところ、

  • 鍵IDのuidが一つの場合: 何も表示されずに署名できた
  • 鍵IDのuidが複数の場合: 「gpg: Sorry, we are in batchmode - can't get input」と表示され、署名できなかった

という違いがありました。



PGPの仕組み

暗号化と署名の違いが図示されていて、分かりやすかったです。

fingerprintやtrustの見方
メールでの送信など

Ubuntuでの暗号化できるメーラーについては以下に記載がありました。


暗号化されたGPGテキストから復号化する方法は以下に記載されていました。

■caff関連

Debianwikiの記載は以下の通りでした。


また、caffのオプションについては、以下にまとまっていました。

■その他

すでに絶版ですが、PGPに関する本がオライリーから出ていたようです。

PGP―暗号メールと電子署名

PGP―暗号メールと電子署名