install
brew install gpg
鍵の生成
X.509 subject name を聞かれるので用意しておく。
C=JP, ST=Okinawa, L=Ginowan, O=Univerisy of the Ryukyus, OU=Faculty of Engineering, CN=kono@ie.u-ryukyu.ac.jp以下のコマンドを実行すると pem 形式の鍵が作られる。パスワードを要求されるので三回入れる。
% gpgsm --generate-key -o kono-cr.pem gpgsm (GnuPG) 2.3.2; Copyright (C) 2021 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. Please select what kind of key you want: (1) RSA (2) Existing key (3) Existing key from card Your selection? 1 What keysize do you want? (3072) Requested keysize is 3072 bits Possible actions for a RSA key: (1) sign, encrypt (2) sign (3) encrypt Your selection? 1 Enter the X.509 subject name: C=JP, ST=Okinawa, L=Ginowan, O=Univerisy of the Ryukyus, OU=Faculty of Engineering, CN=kono@ie.u-ryukyu.ac.jp Enter email addresses (end with an empty line): > kono@cr.ie.u-ryukyu.ac.jp > Enter DNS names (optional; end with an empty line): > Enter URIs (optional; end with an empty line): > Create self-signed certificate? (y/N) y These parameters are used: Key-Type: RSA Key-Length: 3072 Key-Usage: sign, encrypt Serial: random Name-DN: C=JP, ST=Okinawa, L=Ginowan, O=Univerisy of the Ryukyus, OU=Faculty of Engineering, CN=kono@ie.u-ryukyu.ac.jp Name-Email: kono@cr.ie.u-ryukyu.ac.jp Proceed with creation? (y/N) y Now creating self-signed certificate. This may take a while ... gpgsm: about to sign the certificate for key: &469055AB822ADC3CF2BAACB99F75EF5879284FDE gpgsm: certificate created Ready.kono-cr.pem が作られる。中身は
-----BEGIN CERTIFICATE----- MIIFDjCCA3agAwIBAgIIaquhrzh3ue4wDQYJKoZIhvcNAQELBQAwgZYxHzAdBgNV .... T8ReSdO/npRqfx+6u7WcEuJdhmdUR6ILCu0U2ueNvfIjaMF80aiNnCQH+3IVV0AM f0E= -----END CERTIFICATE-----みたいな感じ。
pem の確認
% file kono-cr.pem kono-cr.pem: PEM certificate確かに pem だ。詳しく見るには openssl を使って
openssl x509 -text -noout -in kono-cr.pem | moreで見ることができます。gpgsm では以下の用に import してから見る。
秘密鍵のimport
これを gpgsm に import すると使えるようになる。
% gpgsm --import kono-cr.pem gpgsm: total number processed: 1 gpgsm: imported: 1これを macOSの Mail.app で使うには
% gpgsm -o secret-gpg-key.p12 --export-secret-key-p12 0xkeyidとしてから、open secret-gpg-key.p12 して、KeyChain.app から trust してやれば良い。
ただし、brew の gpgsm (GnuPG) 2.3.2 は壊れているので、gpgsm (GnuPG) 2.3.2-beta105 を自分で build して使う。github のは少しファイルが足りないが、
wget https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.3.2.tar.bz2から足りないのを補えばいける。
秘密鍵のlist
% gpgsm --list-secret /Users/kono/.gnupg/pubring.kbx ------------------------------ ID: 0x4BB8BEDD S/N: 6AABA1AF3877B9EE (dec): 7686414962976602606 Issuer: /CN=kono@ie.u-ryukyu.ac.jp/OU=Faculty of Engineering/O=Univerisy of the Ryukyus/L=Ginowan/ST=Okinawa/C=JP Subject: /CN=kono@ie.u-ryukyu.ac.jp/OU=Faculty of Engineering/O=Univerisy of the Ryukyus/L=Ginowan/ST=Okinawa/C=JP aka: kono@cr.ie.u-ryukyu.ac.jp validity: 2021-10-09 22:41:34 through 2063-04-05 17:00:00 key type: rsa3072 key usage: digitalSignature nonRepudiation keyEncipherment dataEncipherment chain length: unlimited sha1 fpr: 58:50:69:9C:DC:96:30:F5:9C:6D:C6:B0:25:22:32:86:4B:B8:BE:DD sha2 fpr: E6:6C:E5:B4:B8:00:48:8B:13:14:9F:2B:D5:99:82:88:32:E1:B2:6E:1F:68:92:D0:91:BA:0B:D4:53:97:4E:BB
gpgsm での署名と検証
draft を用意する。
gpgsm --sign -b -o gpg.sign draft -b でハッシュを別に生成できる。 gpgsm --verify gpg.sign draftこの二つを MIME multi-part でまとめれば良いはず。
もらったメールを gpgsm で検証するには mhn ではなく手動で展開してコマンドを実行すれば良いはず。
gpgsm での暗号化
署名とファイルと二つ必要で、それを mime multi part してくれることはないので、自分でやる。暗号化と署名
% gpgsm --recipient kono@cr.ie.u-ryukyu.ac.jp -a -o draft.enc.gpgsm -e draft % gpgsm --sign -a -o draft.sign.gpgsm draft.enc.gpgsm検証
% gpgsm --verify -a draft.draft.sign.gpgsm draft.enc.gpgsm復号
% gpgsm -d draft.enc.gpgsmそうじゃなくて、
% gpgsm --recipient kono@cr.ie.u-ryukyu.ac.jp -a -o draft.enc.p7m -e draft % gpgsm -d draft.enc.p7mで良いらしい。
No comments:
Post a Comment