🗝️
GnuPG で電子署名する
いくつかクラウドサービスを試したものの、イマイチよくわからず挫折したので、古き良き(?)GnuPGを使ってみました。
ここでは、
- 自分自身で署名したファイルを、
- 相手に渡す
ということをやってみました。
オレオレ署名なので法的にどこまで効力があるのか分かりませんが、やってる感は出せると思います
署名のための鍵ペアを作る
gpg --gen-key
メールアドレスとかいろいろ聞かれるので、適宜入力します。
署名する
$ gpg -ba 署名したいファイル.pdf
$ cat 署名したいファイル.pdf.asc
-----BEGIN PGP SIGNATURE-----
(snip)
-----END PGP SIGNATURE-----
ファイルを相手に渡す
自分の公開鍵と、それを相手が検証するためのフィンガープリントを生成し、この2つも共有相手に渡します。
$ gpg --fingerprint > gpg.fingerprint
$ gpg -a --export > gpg.pub
渡すファイルは以下4つです。
署名したいファイル.pdf
署名したいファイル.pdf.asc
gpg.fingerprint
gpg.pub
このうち、3. と 4. は最初の一回だけで大丈夫です。
[受け取り側] 署名を検証する
$ gpg --import gpg.pub
$ gpg --verify 署名したいファイル.pdf.asc 署名したいファイル.pdf
このままだと鍵が信頼されていないよ!みたいなwarningが出るので、gpg.pub を信頼する操作をします
$ gpg --gen-key
$ gpg --edit-key KEY_ID # メールアドレスを指定すればOKなはず
gpg> trust
どれくらい信用するかのレベルを聞かれます。私はいつも 4 にしています。
gpg > sign
gpg > save
この状態でもう一度 verify すると、今度は Good signature と言われるようになるはずです。
$ gpg --verify 署名したいファイル.pdf.asc 署名したいファイル.pdf
めでたしめでたし。
Discussion