ファイル暗号化/復号化(OpenSSL,GPG) †◆OPENSSLによるファイル暗号化 # 秘密鍵の作成 (privkey.pem) openssl genrsa -des3 -out privkey.pem~ # 電子証明要求書の作成 (csr.pem) openssl req -new -key privkey.pem -out csr.pem~ # 電子証明書の作成 (csr.pem -> cert.pem : 自己証明書) openssl req -x509 -in csr.pem -key privkey.pem -out cert.pem # opensslのsmimeコマンドを使用して暗号化 openssl smime -encrypt -aes256 -in test.txt -out test.crypt cert.pem # opensslのsmimeコマンドを使用して複号化 openssl smime -decrypt -aes256 -in test.cryp -out test.txt -inkey privkey.pem -recip cert.pem ※以下、別のやり方 (なんかエラー(サイズ制限?)になってダメ?) # CAで電子証明書を作成する場合 (csr.pem -> cert.pem) openssl x509 -req -in csr.pem -out cert.pem -CA cacert.pem -CAkey caprivkey.pem -CAcreateserial # 電子証明書(公開鍵)を使っての暗号化 (plain.txt -> encrypt.txt by cert.pem) openssl rsautl -encrypt -in plain.txt -inkey cert.pem -certin -out encrypt.txt openssl rsautl -encrypt -in mizunodb.tgz -inkey cert.pem -certin -out mizunodb.tgz.crypt # 暗号の復号 (plain.txt -> encrypt.txt by privkey.pem) openssl rsautl -decrypt -in encrypt.txt -inkey privkey.pem -out plain.txt
----設定 --------------------------------------- # 公開鍵,秘密鍵の作成(受信側PC) gpg --gen-key # 公開鍵をファイルに出力(受信側PC) gpg -o 公開鍵ファイル名 --export 鍵ID # 公開鍵を送信側PCに転送 sftp 送信側ホスト sftp> put 公開鍵ファイル名 # 公開鍵を取り込み(送信側PC) gpg --import 公開鍵ファイル名 # インポートされたか確認(送信側PC) gpg --list-keys # 公開鍵に署名(送信側PC) gpg --sign-key 鍵ID ------------------------------------------- ---- 暗号化,バックアップ ---- # 公開鍵を使用して暗号化(送信側PC) ※ファイル名.gpgというファイルができる gpg -r 鍵ID -e 暗号化するファイル名 # 暗号化したファイルを転送(送信側PC) sftp 受信側ホスト sftp> put 暗号化ファイル名 # ファイルの複号化(受信側PC) gpg 暗号化ファイル名 ※パスフレーズを聞かれるので入力 ---- 以下は鍵作成時に表示されたもの ---- すきな鍵の種類を選択してください: (1) DSAとElGamal (既定) (2) DSA (署名のみ) (5) RSA (署名のみ) どれにしますか? 5 どの鍵長にしますか? (1024) 1024 要求された鍵長は1024ビット 鍵の期限を決めてください。 0 = 無期限 = 有効期限 n 日間 w = 有効期限 n 週間 m = 有効期限 n か月間 y = 有効期限 n 年間 鍵の有効期間は? (0) Keyは無期限です これでいいですか (y/n)? y あなたの鍵を同定するためにユーザーIDが必要です。 このソフトは本名、コメント、電子メール・アドレスから 次の書式でユーザーIDを構成します: "Heinrich Heine (Der Dichter) " 本名: daisuke 電子メール・アドレス: daisuke@magata.net コメント: testkey 次のユーザーIDを設定しました: "daisuke (testkey) " 名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O 秘密鍵を保護するためにパスフレーズがいります。 今から長い乱数を生成します。キーボードを打つとか、マウスを動かす とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、お勧めします。 .+++++ +++++ 公開鍵と秘密鍵を作り、署名しました。 絶対的に信用した鍵として記録しました。 pub 1024R/16CDA742 2005-04-16 daisuke (testkey) 指紋 = 9F8C E10D 0711 A18B 0D7D 21AB 95BE 1850 16CD A742 この鍵は暗号化には使用できないことに注意してください。暗号化を行うには、 「--edit-key」コマンドを用いて副鍵を生成してください。 --list-sigs 鍵と署名の一覧 --check-sigs 鍵の署名を検証 --fingerprint 鍵と指紋の一覧 --list-secret-keys 秘密鍵の一覧 gpg --delete-keys 1024R gpg --delete-keys gpg --delete-secret-keys 16CDA742 |