OpenSSL(1) コマンドライン
OpenSSLのメッセージダイジェストコマンドでファイルのメッセージダイジェストを取得する
file.txtの内容
0123456789
SHA1でfile.txtのメッセージダイジェストを取得する
$ openssl dgst -sha1 file.txt
SHA1(file.txt)= 49ad9642416718c30ecaa5dada706d2e9273083d
MD5でfile.txtのメッセージダイジェストを取得する
$ openssl dgst -md5 file.txt
MD5(file.txt)= c47658d102d5b989e0da09ce403f7463
file.txtファイルのSHA1ハッシュ値を計算し、その値をdigest.txtに書き出す。
$ openssl sha1 -out digest.txt file.txt
DSAコマンド
DSAパラメータを1セット生成し、dsaparam.pemファイルに出力する。素数と生成もとのパラメータ長は1024ビット。
$ openssl dsaparam -out dsaparam.pem 1024
Generating DSA parameters, 1024 bit long prime
This could take some time
......+.......+..................+......
......+.......+..................+......
$ vi dsaparam.pem
-----BEGIN DSA PARAMETERS-----
MIIBHgKBgQDxYEJYZ6/+lqfz9+WoktMMzSqv29rFpZ8hbEBIG+8NxDxzuvITDOzr
VmIP1FSa5cTLHt0mdleg+ONOYNNXDcjZ6g0iqOtAMU6F3kHwIZQuA4Bd2prgwKyl
CBy1r4hdDkpzIL4eS40OKmFB3g0Eh0GOBH21uHCITavgTWjbHexVGwIVAJekoYc4
dpx5oqs+q+t70gcE7vYpAoGAUw62maVuMuEd776U/+rdMA9f6WiLgfHIaqE5OHT/
RGVzguH42+CFcDRMM+taFOInYQ5pse/XjrfEGXzeo8gO9ZKmPHpDjX5Fbcy3s8kp
6SLV8XfdNr+lAF4umNqChNj/oaemwwINetNvUOF+oip8CJiDh9NG2p/xKCzvtW/g
JAA=
-----END DSA PARAMETERS-----
dsaparam.pemファイルにあるパラメータを使ってDSA秘密鍵を生成する。生成した秘密鍵は3DESで暗号化し、出力結果をdsaprivatekey.pemファイルに出力する。
$ openssl gendsa -out dsaprivatekey.pem -des3 dsaparam.pem
Generating DSA key, 1024 bits
Enter PEM pass phrase:password
Verifying - Enter PEM pass phrase:password$ vi dsaprivatekey.pem
-----BEGIN DSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,A2EC94199FB8B407i2p1swT3nsNmpWOPWKwNeviWW/2hC9TYOMCFhm1NG8DsiHgV5PyzC/PW1HbdN3o9
DDJtXFY/dXLccUsT2ChKiPlnf86SuKTBl4dhmWHtAVtZvE6md87X0EFOZ7sJ/jH1
pl3Jhvqsp+n6xY0eX8T0+bg0rOGJmtvk08P8EjFg/uXoOC+tDIsrLPaDcSwZP6/W
c0dXvU2KjOFSIaagaXpumHwLj+UmfKEsxjtH4GgbmhST+IyMdx4FGgSHHRFe2V3h
sK8clErfgro4tO0MG82P6sg+KlKNfALWKW5NusX1QyNjZOy5mOwYNHfaEApr35ck
NQjk/2IyQaWreq35ZWgzVu7rAt02gfuS7MwJsYWg7Q4yio4c7IOY9Jn3nf1qoAd1
YX3PRFMUWPlesXP9pO6Y4DdF6BlO9WOeDEVHEBnwUSgc4CI56tHMLJC+CRGdkYAY
MTfm+L6St305X+6KN65h52hcDdSsIiUv7rOjvxbYZuqd38sCmweSJHIx13HJdLU7
bfm4Imk3ne0cT3pmxF1R4GFsq2TcPSNmkfZF3htYLkpEYkB5juwv/BSL7OqXAZ2d
lqm0A61/XFWdA/JO7eVEBQ==
-----END DSA PRIVATE KEY-----
dsaprivatekey.pemファイルに格納された秘密鍵に対応する公開鍵を計算し、dsapublickey.pemファイルに出力する。
$ openssl dsa -in dsaprivatekey.pem -pubout -out dsapublickey.pem
read DSA key
Enter PEM pass phrase:password
writing DSA key$ vi dsapublickey.pem
-----BEGIN PUBLIC KEY-----
MIIBtzCCASsGByqGSM44BAEwggEeAoGBAPFgQlhnr/6Wp/P35aiS0wzNKq/b2sWl
nyFsQEgb7w3EPHO68hMM7OtWYg/UVJrlxMse3SZ2V6D4405g01cNyNnqDSKo60Ax
ToXeQfAhlC4DgF3amuDArKUIHLWviF0OSnMgvh5LjQ4qYUHeDQSHQY4EfbW4cIhN
q+BNaNsd7FUbAhUAl6Shhzh2nHmiqz6r63vSBwTu9ikCgYBTDraZpW4y4R3vvpT/
6t0wD1/paIuB8chqoTk4dP9EZXOC4fjb4IVwNEwz61oU4idhDmmx79eOt8QZfN6j
yA71kqY8ekONfkVtzLezySnpItXxd902v6UAXi6Y2oKE2P+hp6bDAg16029Q4X6i
KnwImIOH00ban/EoLO+1b+AkAAOBhQACgYEA3GRYAyx6jE2C3b8hoUt8P6Ch97bj
HatJDifg63XjcPZ1cidw12bB3X3h1n5B9JW4gZkJhuth5uzy3vvTG14le5ZZNhIH
46LCX67TvDook5DFe0T8V3PD/54IoyB+i8a/+v/mWpHXmDemGPfB94PWIQdBXL1z
GE7aTopZe2mVZ4U=
-----END PUBLIC KEY-----
dsaprivatekey.pemファイルから秘密鍵を読み込み、「password」というパスワードを使って復号する。その秘密鍵を「newpassword」というパスワードで再度暗号化した後、dsaprivatekey.pemファイルに戻す。
$ openssl dsa -in dsaprivatekey.pem -out dsaprivatekey.pem -des3 -passin pass:password -passout pass:newpassword
read DSA key
writing DSA key-----BEGIN DSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,BB2827F3263F5C88WEPiglmSPGeMFnip0fPQWE4RVfkPTbHQKyF+TZJ9YbTlZtGhzSGmh2wknQozjGH1
kTukncpoBvwmcAuFzt9jl5TdpwOeIORWbE/IVG0AJ97T/+r7FGvQKSLKHJx7QxO3
v6Im7p66ilCjY1WKmBmOKqJEcFboP4X5mkV5rKvft+NBfy1p+gAkpkGeLsbqP7RF
RVmbCEb8sWbAEVLZZBUysccyB9XOEQJ3m9GZ4vmHis0He399aUJH5ERt7PfUToA/
1fN/DHFL9Dg/YbEdUWgd2tCs3KowF/6ydWEr9RQFg2thXRj6LlmI9qGlT23LiMrD
CPmdNZtXQwi14jJr8/0zuLpMhNc3hdm2lBET9ZHt9uG3YM1uyUTKzuOQcZfw3Qoc
NXash5Ein9gL0Nwu0SnBxI7zduehqFgb19g/xmEHIZFlEUBKX1jNxuouV/Hnu/5v
umhIj0YQGLKAhDDAodhu6VWfs4h2wz6vVhgz6/6gvsWHT93JQ36tg3o2wSObMfN7
tI01zFV83tULkALN1sLcog0d4gb20DfmeUfHgB/w7rixVCzij/KGN2ZVxSMO0FF/
o0xsgoI4kcUzR8UqmE9hKQ==
-----END DSA PRIVATE KEY-----
1024ビットのRSA秘密鍵を生成し、3DESを使用して「password」というパスワードで暗号化した後、結果をrsaprivatekey.pemファイルに出力する
$ openssl genrsa -out rsaprivatekey.pem -passout pass:password -des3 1024
Generating RSA private key, 1024 bit long modulus
.......++++++
....++++++
e is 65537 (0x10001)
$ vi rsaprivatekey.pem
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,3117EB77EF315017pNRpEg1oT47ehIpn1PZ6Y+ACE/4ihckEz312ZQ3yzMZr+FyZI8HZCbMdQ9OH/upi
51KoCeF4czlEcusJs8gr2im+2+Ml74mWNR+TNuSXIEjo5PXz7pPQE3MwO4MDCHLY
b5KNACu3dnQLtud0evtc6iJ1MXMkz0ChDE10iggb73wA1uw3TIIWqa7QFsRauiUt
BblV2e+Bg4zBvxmMEyCfUNKYVTdOO6ujw7RY48ujMn8Gdrnp/tjDL2f6cRogw6gp
7p9uovm8xlYpU3D+jsein79vZdxsmsuWmgwNr9t5UXLmK0XTBacGoJececRA3uF/
PUgKtuRQO48ystKS2JKxvCR6Wv0cz5SnYBm+yY3n6MfHWKc/s7ya0+saJTa06Eo9
uwxGhVC/z0q/7jqd9VfwooWQcTgRJltfhpRVCy3/jwBwAc+pOz/mvMhW7Ywfyyme
s+387HumZPQH5iVjBOtNtkLilfRGOYkIflfJg0o+M00KOf/jwN0QU3c+iLiWKCZD
Xa1wTXU5ZRv/vjwYC1jTbxieLREQdhYEZZ1T3m5lvI6qz5/WQqfrMOwf84dqpAW/
Eta4/VhCoyAnoaEs++Wx/jNpBIcgDo0+JJc3L4Nd7pUhwbjScuX9fR9xm/dTnHwS
4Fwi4Kt0FiuSD82Gm6SL7j8f+Ko8xn7D8GZYMeyExkd78As8CNcsqwdN9sv69NnI
zzKaKumkqeaIHMzP+irJv46vGpNL3GolRXNN5gWtXvhXAsDJth0uhbZeMCHul8nh
4gD+/bSG51d2ZqU0Y0e+5+740AK71dkuM8uV0oOtfyPqmoRag3cpGg==
-----END RSA PRIVATE KEY-----
rsaprivatekey.pemファイルからRSA秘密鍵を読み込み、「password」というパスワードで復号化し、対応する公開鍵をrsapublickey.pemファイルに出力する
$ openssl rsa -in rsaprivatekey.pem -passin pass:password -pubout -out rsapublickey.pem$ vi rsapublickey.pem
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsp8PajpegZoJuxaurP4JCwlK2
X39INkHVmbH/v77TltRIzWszAqigX1oyepzkHOL2v15lXrOrqhU5IkEs87YXe9Jb
snGUim73RidUZEG1aVRBv4ERRrVF5Ruyvx42OeE570QScEu1lmiVIz9lR4+pUCDV
0+nxBSGwo7AawFqN+QIDAQAB
-----END PUBLIC KEY-----
rsapublickey.pemにあるRSA公開鍵を使用してfile.txtファイルの内容を暗号化し、cipher.txtファイルに出力する
$ openssl rsautl -encrypt -pubin -inkey rsapublickey.pem -in file.txt -out cipher.txt$ vi cipher.txt
Yj<83>y<97>Z<ÛJèY@_¡^_Êc^Z^BÊä^S:^EzJ8´¾'^T<82>^sú,¶^_ý§<97>ÓSÖ^G²FñßÛ¢ÍÕ<8a>ÞFÒ)^LE®3/<84>\ÝNhQßsàÕ<>^E=W^_¡Þ9Ê¿<87><85>H<96>^R<81><89>^FÄ<8a>/5~v]<9f>Õ^Èy¨X|[°¼^@ï_ª®º3<92>îmQãfdLj
rsaprivatekey.pem にあるRSA秘密鍵を使用してcipher.txtファイルの内容を復号化し、file2.txtファイルに出力する
$ openssl rsautl -decrypt -inkey rsaprivatekey.pem -in cipher.txt -out file2.txt
Enter pass phrase for rsaprivatekey.pem:password$ vi file2.txt
012345678
rsaprivatekey.pemにあるRSA秘密鍵を使用してfile.txtファイルの内容に署名し、電子署名をsignature.binファイルに出力する
$ openssl rsautl -sign -inkey rsaprivatekey.pem -in file.txt -out signature.bin
rsapublickey.pemファイルにあるRSA公開鍵を使用してsignature.binファイル内の電子署名を検証し、元の電子署名されていないデータをfile3.txtに出力する
$ openssl rsautl -verify -pubin -inkey rsapublickey.pem -in signature.bin -out file3.txt