🗝️

GnuPG で電子署名する

2022/11/12に公開

いくつかクラウドサービスを試したものの、イマイチよくわからず挫折したので、古き良き(?)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つです。

  1. 署名したいファイル.pdf
  2. 署名したいファイル.pdf.asc
  3. gpg.fingerprint
  4. 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