一 DH算法(Gendh/Dhparam/Dh)
1 gendh
功能:用于生成DH参数。
用法:openssl gendh [-out file ] [-rand ] [-engine e ]
选项:
-out file 输出结果到file指定的文件,如果不指定,结果显示在屏幕屏幕上
-2 将2作为生成值,此为默认值
-5 将5作为生成值
-rand 指定随机数文件
-engine e 采用Engine生成;
例子1:将DH参数打印到屏幕
[root@localhost opensscommand]# openssl gendh
Generating DH parameters, 512 bit long safe prime, generator 2
This is going to take a long time
..........................++*++*++*++*++*++*
-----BEGIN DH PARAMETERS-----
MEYCQQD1x7k6EepYbX+TSDTsxGCA2rNxTgsFHg9nLXThBjU5hogTMfPcOGaZxJPL
W+gPiWmvCDmDa5T26Uy3lURwzrFLAgEC
-----END DH PARAMETERS-----
例子2:将DH参数打印到文件CA_dh.pem下载
[root@localhost opensscommand]# openssl gendh -5 -out CA_dh.pem 1024
Generating DH parameters, 1024 bit long safe prime, generator 5
This is going to take a long time
..........................
[root@localhost opensscommand]# cat CA_dh.pem
-----BEGIN DH PARAMETERS-----
MIGHAoGBAOOBKbr4HYu9SUHVeWkIypXKdMo4NpgNtERK6tm56CaZ1PzRQhHx/0h8
5I5qK8V40R+xmGmXcEM6mg/CEkdcMN64Q9H22aakXqhiGDVXXjbFm/i+jXmD8L98
Js1+eh6MSuebpdDoHy6T3QVa77nVvwx03+JrI0shjUc9XLH2TyMfAgEF
-----END DH PARAMETERS-----
2 dhparam和dh
功能:dhparam为dh参数操作和生成工具,dh命令与dhparam用法大致一致,下面只给出了dhparam的说明。
用法:openssl dhparam [-inform DER|PEM] [-outform DER|PEM] [-in filename] [-out filename] [-dsaparam] [-noout] [-check] [-text] [-C] [-2] [-5] [-rand file(s)] [-engine id] [numbits]
选项:
-inform DER|PEM 输入文件格式,DER或者PEM格式。
-outform DER|PEM 输出文件格式,DER或者PEM格式。
-in filename 读取DH参数的文件,默认为标准输入。
-out filename dh参数输出文件,默认为标准输出。
-dsaparam 生成DSA参数,并转换为DH格式。
-noout 不输出信息。
-text 打印信息。
-check 检查dh参数。
-C 以C语言风格打印信息。
-2,-5 指定2或5为发生器,默认为2,如果指定这些项,输入DH参数文件将被忽略,自动生成DH参数。
-rand files 指定随机数种子文件。
-engine id 指定硬件引擎。
-numbits 指定素数bit数,默认为512。
例子1:将DH参数输出到文件dhparam.pem
[root@localhost opensscommand]# openssl dhparam -out dhparam.pem -text 512
Generating DH parameters, 512 bit long safe prime, generator 2
This is going to take a long time
...............................
[root@localhost opensscommand]# cat dhparam.pem
PKCS#3 DH Parameters: (512 bit)
prime:
00:8b:fa:d6:58:ab:93:69:ab:61:23:87:e4:7e:4e:
26:8e:9b:c4:d4:03:12:56:22:ee:e7:ea:b8:e2:7a:
d2:04:f6:f4:4f:d5:3e:11:70:63:8e:ec:d1:85:40:
95:79:52:c5:7b:5f:06:46:19:b2:b0:35:e3:40:97:
a0:de:c6:cf:d3
generator: 2 (0x2)
-----BEGIN DH PARAMETERS-----
MEYCQQCL+tZYq5Npq2Ejh+R+TiaOm8TUAxJWIu7n6rjietIE9vRP1T4RcGOO7NGF
QJV5UsV7XwZGGbKwNeNAl6Dexs/TAgEC
-----END DH PARAMETERS-----
例子2:检查生成的DH参数下载
[root@localhost opensscommand]# openssl dhparam -in dhparam.pem -text -check
PKCS#3 DH Parameters: (512 bit)
prime:
00:8b:fa:d6:58:ab:93:69:ab:61:23:87:e4:7e:4e:
26:8e:9b:c4:d4:03:12:56:22:ee:e7:ea:b8:e2:7a:
d2:04:f6:f4:4f:d5:3e:11:70:63:8e:ec:d1:85:40:
95:79:52:c5:7b:5f:06:46:19:b2:b0:35:e3:40:97:
a0:de:c6:cf:d3
generator: 2 (0x2)
DH parameters appear to be ok.
-----BEGIN DH PARAMETERS-----
MEYCQQCL+tZYq5Npq2Ejh+R+TiaOm8TUAxJWIu7n6rjietIE9vRP1T4RcGOO7NGF
QJV5UsV7XwZGGbKwNeNAl6Dexs/TAgEC
-----END DH PARAMETERS-----
二 摘要算法(Dgst)
1 dgst
功能:用于数据摘要。
用法:openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1 ] [-c] [-d ] [-hex] [-binary] [-out filename] [-sign filename] [-passin arg] [-verify filename] [-prverify filename]
[-signature filename ] [file...]
选项:
-d 打印调试信息。
-sign privatekeyfile 用privatekeyfile中的私钥签名。
-verify publickeyfile 用publickeyfile中的公钥验证签名。
-prverify privatekeyfile 用privatekeyfile中的私钥验证签名。
-keyform PEM|ENGINE 密钥格式,PEM格式或者采用Engine。
-hex 显示ASCII编码的十六进制结果,默认选项。
-binary 显示二进制数据。
-engine e 采用引擎e来运算。
-md5 默认选项,用md5进行摘要。
-md4 用md4摘要。
-md2 用md2摘要。
-sha1 用sha1摘要。
-sha 用sha摘要。
-sha256 用-sha256摘要。
-sha512 用sha512摘要。
-mdc2 用mdc2摘要。
-ripemd160 用ripemd160摘要。
例子1:各种方式显示摘要值下载
[root@localhost opensscommand]# openssl dgst -hex a.txt
MD5(a.txt)= 65cf359cb255f94f9649133d6200b8b9
[root@localhost opensscommand]# openssl dgst -binary a.txt
e?.U..=b腹
[root@localhost opensscommand]# openssl dgst -hex -c a.txt
MD5(a.txt)= 65:cf:35:9c:b2:55:f9:4f:96:49:13:3d:62:00:b8:b9
例子2:将文件a.txt用sha512摘要,并用prikey.pem中的私钥签名。
[root@localhost opensscommand]# openssl dgst -sign prikey.pem -sha512 -out CA_sigDgst.pem a.txt
Enter pass phrase for prikey.pem:
[root@localhost opensscommand]# cat CA_sigDgst.pem
5$.捻?ㄩL7.?颀.`%.5?T/x??Z?
.5??F?=?.p.g..?l??OS.?架I耵饷|io:&Q??'.on
nAv讧?L?0.妫.
三 RSA(Genrsa/Rsa/Rsautl)
1 Genrsa
功能:生成RSA密钥
用法:Openssl >genrsa [-out filename] [-passout arg] [-des3] [-rand files] [-engine id] [-numbits]
选项:
-des/des3/idea/aes128/aes192/aes256 以des/des3/idea/aes128/aes192/aes256模式加密密钥
-out file 输出文件
-f4/3 指定E 为f4/3
-rand file 指定随机数种子文件
-numbits 密钥长度,默认为512
例子1: 生成秘钥文件CA_rsa_key.pem,并要aes256模式加密秘钥文件。
openssl genrsa -aes256 -out CA_rsa_key.pem -f4 1024
[root@localhost ~]# openssl genrsa -aes256 -out CA_rsa_key.pem -f4 1024
Generating RSA private key, 1024 bit long modulus
............++++++
.......................++++++
e is 65537 (0x10001)
Enter pass phrase for CA_rsa_key.pem:
Verifying - Enter pass phrase for CA_rsa_key.pem:
2 Rsa下载
功能:用于处理RSA密钥、格式转换和打印信息。
用法:openssl rsa [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-sgckey] [-des] [-des3]
[-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-engine id]
选项:
-inform DER|PEM|NET 指定输入的格式,NET格式是与老的Netscape服务以及微软的IIS兼容的一种不×××全的格式。
-outform DER|PEM|NET 指定输出格式。
-in filename 输入文件名。
-passin arg 私钥保护密钥来源,比如:-passin file:pwd.txt。
-out filename 输出的文件名。
-des|-des3|-idea 指定私钥保护加密算法。
-text 打印密钥信息。
-noout 不打印任何信息。
-modulus 打印密钥模数。
-pubin 表明输入文件为公钥,默认的输入文件是私钥。
-pubout 表明输出文件为公钥。
-check 检查RSA私钥。
-engine id 指明硬件引擎。
例子1:生成明文私钥文件key.pem
[root@localhost opensscommand]# openssl genrsa -out key.pem
Generating RSA private key, 1024 bit long modulus
.++++++
..............++++++
e is 65537 (0x10001)
例子2:转换为DER编码文件key.der
[root@localhost opensscommand]# openssl rsa -in key.pem -outform der -out key.der
writing RSA key
例子3:将明文私钥文件转换为密码保护,输出到enckey.pem
[root@localhost opensscommand]# openssl rsa -inform der -in key.der -des3 -out enckey.pem
writing RSA key
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
例子4:将公钥写入文件pubkey.pem
[root@localhost opensscommand]# openssl rsa -in key.pem -pubout -out pubkey.pem
writing RSA key
例子5:打印公钥信息到屏幕:
[root@localhost opensscommand]# openssl rsa -pubin -in pubkey.pem -text -modulus
Public-Key: (1024 bit)
Modulus:
00:cd:93:d9:08:ca:97:2e:5a:91:3a:b8:33:7f:1f:
84:8e:ba:16:94:ac:97:ce:b6:f5:57:5d:96:d3:fd:
1f:2f:fb:32:6b:0e:cf:82:45:77:70:12:75:56:8c:
79:a2:62:fe:07:e0:6c:8c:01:3a:41:a4:49:49:29:
fa:51:1a:cc:b3:8c:f7:1f:17:c1:b3:46:09:13:ee:
f6:1d:bc:3c:45:88:ca:5b:43:d2:18:b5:de:b9:61:
ad:b5:d4:ca:d9:1b:02:1c:88:9f:aa:07:a8:e9:9c:
27:46:e7:88:8d:02:3d:cb:62:91:e4:43:46:60:ac:
87:66:29:8f:4e:36:85:cf:bd
Exponent: 65537 (0x10001)
Modulus=CD93D908CA972E5A913AB8337F1F848EBA1694AC97CEB6F5575D96D3FD1F2FFB326B0ECF824577701275568C79A262FE07E06C8C013A41A4494929FA511ACCB38CF71F17C1B3460913EEF61DBC3C4588CA5B43D218B5DEB961ADB5D4CAD91B021C889FAA07A8E99C2746E7888D023DCB6291E4434660AC8766298F4E3685CFBD
writing RSA key
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNk9kIypcuWpE6uDN/H4SOuhaU
rJfOtvVXXZbT/R8v+zJrDs+CRXdwEnVWjHmiYv4H4GyMATpBpElJKfpRGsyzjPcf
F8GzRgkT7vYdvDxFiMpbQ9IYtd65Ya211MrZGwIciJ+qB6jpnCdG54iNAj3LYpHk
Q0ZgrIdmKY9ONoXPvQIDAQAB
-----END PUBLIC KEY-----
例子6:显示私钥信息
[root@localhost opensscommand]# openssl rsa -in enckey.pem
Enter pass phrase for enckey.pem:
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDNk9kIypcuWpE6uDN/H4SOuhaUrJfOtvVXXZbT/R8v+zJrDs+C
RXdwEnVWjHmiYv4H4GyMATpBpElJKfpRGsyzjPcfF8GzRgkT7vYdvDxFiMpbQ9IY
td65Ya211MrZGwIciJ+qB6jpnCdG54iNAj3LYpHkQ0ZgrIdmKY9ONoXPvQIDAQAB
AoGATsf45UiV9RqaCzGp8m6GoxenLa***JIqpSdldKnM+Ns/8A0F8rtiUR2Rv/An
cNaU2Tnk/yY9SAiIWTRwDALELN4OFhsWvAMOMDJ+vfCE133avWX9QLhSEpUCWLOr
zz0qrQ6k4yQ5YBPId8EVFuJZY2mRSqEfHlh5/muPJbp/POECQQD89zbYUnd54m4T
5Nw0tac9VOyTGnOiWqqBqUtw6p9ZgZ/mpD/kmghhl/O5kheaZwogUi5vPucwvf4g
eyOYzZkJAkEA0AseNVWy5VtDG6wGFJxmoh6CIPertMNG2tRmFqXMszOrVZXVDSXa
HMKE+jv52barX+dVf8aHi0RBPrrCf0CyFQJBAI5AnvDq/xDlii1Zx5NEi7VrqlXW
zCwCfFvJzgjDh7SXtknHF77/97KZ9o7mXquPQhyG2mHop627ScsONChbhbECQQCs
gWuNAgCS2betjFiGYqFfsANZXsSL4Jgx/4ifIt+3gBKDpvfALTDMRCcLbwvfkO5N
WX61sqLVwcTwBOAdsEF5AkEAt3fpT0ZWfdSlDKvcm6AI19c0W4G2erf9xuii0F+q
Omw/JD9diG+Z/QMVq5yoqgLKqmmzKmQRI/OYwgQONwY33A==
-----END RSA PRIVATE KEY-----
3 Rsatul
功能:rsautl为RSA工具,能够使用RSA算法签名,验证身份,加密/解密数据。
用法:openssl rsautl [-in file] [-out file] [-inkey file] [-pubin] [-certin] [-sign] [-verify] [-encrypt] [-decrypt]
[-pkcs] [-ssl] [-raw] [-hexdump] [-engine e] [-passin arg]
选项:
-in filename 指定输入文件名,缺省为标准输入。
-out filename 指定输入文件名,缺省为标准输出。
-inkey file 输入私钥文件名。
-pubin 表明我们输入的是一个公钥文件,默认输入为私钥文件。
-certin 表明我们输入的是一个证书文件。
-sign 给输入的数据签名。
-verify 对输入的数据进行验证。
-encrypt 用公钥对输入数据加密。
-decrypt 用私钥对输入数据解密。
-pkcs, -oaep, -ssl, -raw 指定填充方式,上述四个值分别代表:PKCS#1.5(默认值)、 PKCS#1OAEP、SSLv2以及不填充。
-hexdump 用十六进制输出数据。
-engine e 指定硬件引擎。
-passin arg 指定私钥保护口令的来源,比如:-passin file:pwd.txt。
例子1:生成RSA密钥文件prikey.pem
[root@localhost opensscommand]# openssl genrsa -des3 -out prikey.pem
Generating RSA private key, 1024 bit long modulus
..........................++++++
...........++++++
e is 65537 (0x10001)
Enter pass phrase for prikey.pem:
Verifying - Enter pass phrase for prikey.pem:
例子2:分离出公钥文件pubkey.pem下载
[root@localhost opensscommand]# openssl rsa -in prikey.pem -pubout -out pubkey.pem
Enter pass phrase for prikey.pem:
writing RSA key
例子3:对a.txt文件签名,签名输出到屏幕
[root@localhost opensscommand]# openssl rsautl -sign -inkey prikey.pem -in a.txt -hexdump
Enter pass phrase for prikey.pem:
0000 - 0c 71 0b a2 d3 37 ee 96-15 b5 ae fe 78 66 06 84 .q...7......xf..
0010 - bb bb a6 15 5c 97 cd 3a-62 b3 ec 5a a2 10 e1 43 ....\..:b..Z...C
0020 - 45 8a 19 b0 d7 dd 42 3c-9d 6f d2 96 e4 22 99 89 E.....B<.o..."..
0030 - 5c 26 3f a8 e1 bb eb f8-1f 75 48 0d a4 20 b2 5e \&?......uH.. .^
0040 - fc 04 06 5d 9b 1b 6f 36-88 26 ab 05 fa 0f 91 c2 ...]..o6.&......
0050 - 2c e9 aa cd d7 e5 52 98-f3 d3 27 91 e9 a0 ed 25 ,.....R...'....%
0060 - 78 bc e4 a9 52 9c df 1f-c5 ff 6c 8f 88 8b e2 8d x...R.....l.....
0070 - cf 30 4e 0e 55 38 51 3a-ea 35 51 07 87 bf e1 d9 .0N.U8Q:.5Q.....
例子4:对a.txt文件签名,签名文件为sig.dat
[root@localhost opensscommand]# openssl rsautl -sign -inkey prikey.pem -in a.txt -out sig.dat
Enter pass phrase for prikey.pem:
例子5:验证签名
[root@localhost opensscommand]# openssl rsautl -verify -inkey prikey.pem -in sig.dat
Enter pass phrase for prikey.pem:
ttest
例子6:公钥加密a.txt,机密后的文件为b.txt
[root@localhost opensscommand]# openssl rsautl -encrypt -pubin -inkey pubkey.pem -in a.txt -out b.txt
例子7:私钥解密b.txt
[root@localhost opensscommand]# openssl rsautl -decrypt -inkey prikey.pem -in b.txt
Enter pass phrase for prikey.pem:
ttest
四 椭圆曲线算法(Ecparam/Ec)
1 ecparam下载
功能:椭圆曲线密钥参数生成及操作。
用法:openssl ecparam [-inform DER|PEM] [-outform DER|PEM] [-in filename] [-out filename] [-noout] [-text] [-C]
[-check] [-name arg] [-list_curve] [-conv_form arg] [-param_enc arg] [-no_seed] [-rand file(s)] [-genkey] [-engine id]
选项:
-inform DER|PEM 输入文件格式。
-outform DER|PEM 输出文件格式。
-in filename 输入文件。
-out filename 输出文件。
-noout 不打印信息。
-text 打印信息。
-C 以C语言风格打印信息。
-check 检查参数。
-name arg 采用短名字。
-list_curves 打印所有可用的短名字。
-conv_form arg 指定信息存放方式,可以是compressed、uncompressed或者hybrid,默认为compressed。
-param_enc arg 指定参数编码方法,可以是named_curve和explicit,默认为named_curve。
-no_seed 如果-param_enc指定编码方式为explicit,不采用随机数种子。
-rand file(s) 指定随机数种子。
-genkey 生成密钥。
-engine id 指定硬件引擎。
例子1:打印所有可用的短名字
[root@localhost opensscommand]# openssl ecparam -list_curves
secp384r1 : NIST/SECG curve over a 384 bit prime field
secp521r1 : NIST/SECG curve over a 521 bit prime field
prime256v1: X9.62/SECG curve over a 256 bit prime field
例子2:生成椭圆曲线密钥,打印到屏幕
[root@localhost opensscommand]# openssl ecparam -name secp384r1 -genkey -text
ASN1 OID: secp384r1
-----BEGIN EC PARAMETERS-----
BgUrgQQAIg==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MIGkAgEBBDDbMZ0LbFJsV04INQaDc5wJtXa83yCnu84BO/lDzeRi7l2Ce1xQu0qU
J4nktlZ1CDSgBwYFK4EEACKhZANiAARbG35i5AdcJ1ciCfbuH0VmTndhCFaL2AuN
wacjBxgExyc82U9efp6BmaWIBYwMIyZSkzfj2mZkKJvQXWfKPiKqXXJ37TeLIvgA
fMMCxFkiLkuJjL5m6an0d6JSDKGh6AE=
-----END EC PRIVATE KEY-----
例子3:生成椭圆曲线密钥,输出到secp384.pem
[root@localhost opensscommand]# openssl ecparam -name secp384r1 -out secp384.pem
例子4:更新生成密钥
[root@localhost opensscommand]# openssl req -newkey ec:secp384.pem
Generating a 384 bit EC private key
writing new private key to 'privkey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。