[TOC]

OpenSSL命令有两种运行模式交互模式和批处理:

  • 输入openssl回车进入交互模式
  • 输入带命令选项的openssl进入批处理模式

OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序,OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的;

功能说明:

  • 处理数字证书:可以用作证书颁发机构(Certificate Authority 即 CA)
  • 进行证书、公钥、私钥的管理

0x01 Openssl 命令

Syntax & Param

基础语法:

1
openssl [Standard]

基础参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#Standard commands (标准命令)
asn1parse ca ciphers cms
crl crl2pkcs7 dgst dh
dhparam(dh加密方式) dsa dsaparam(dsa加密方式) ec
ecparam enc(加密) engine errstr
gendh gendsa genpkey genrsa(生成rsa密匙)
nseq ocsp passwd pkcs12
pkcs7 pkcs8 pkey pkeyparam
pkeyutl prime rand(随机) req
rsa(密钥生成公钥) rsautl(公私钥加解密)s_client s_server
s_time sess_id smime speed
spkac ts verify version
x509(公钥证书的格式标准)

#Message Digest commands (消息摘要命令)
md2 md4 md5 rmd160
sha sha1

#Cipher commands (Cipher commands)
aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb
aes-256-cbc aes-256-ecb base64 bf
bf-cbc bf-cfb bf-ecb bf-ofb
camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb
camellia-256-cbc camellia-256-ecb cast cast-cbc
cast5-cbc cast5-cfb cast5-ecb cast5-ofb
des des-cbc des-cfb des-ecb
des-ede des-ede-cbc des-ede-cfb des-ede-ofb
des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb
des-ofb des3 desx idea
idea-cbc idea-cfb idea-ecb idea-ofb
rc2 rc2-40-cbc rc2-64-cbc rc2-cbc
rc2-cfb rc2-ecb rc2-ofb rc4
rc4-40 rc5 rc5-cbc rc5-cfb
rc5-ecb rc5-ofb seed seed-cbc
seed-cfb seed-ecb seed-ofb zlib


命令一览
1
2
3
#实例:文件生成base64字符串
openssl base64 -in test.txt #等同于 base64 test.txt
N2ZmYjJhZmQ2ODZjZDk5NDdlOTY1ODMyZTY4MGQwYzI0NTY0ZGM4NDlhZmRjZGVhMDQzZmRkZDY1ZDIxN2ZlNwo=

rand

1
2
3
4
#实例1.随机数的生成
openssl rand -base64 位数 -out 写出的文件
openssl rand -base64 128
od3xDJVOVKGYfSXHELXI3oVw0hyElUE34tZWsYHrU6yk7Gyr6Z7B8QlZ2zbZBcTCR3DJMr81j1l3SaFYxbO1xhs4ki4iZXPwwpO1gyG4sAnfGC1bDEBYzKw+u/jlSCSBlCoukUa41nvEQ2hE2BGxbQoWeuwO0L3hQk5wwxMHPiE=


req大致有3个功能:生成证书请求文件、验证证书请求文件和创建根CA。

dgst - 摘要校验与生成

描述:它是OpenSSL子命令主要用于文件的摘要信息的验证与生成;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$openssl dgst -h
options are
-c to output the digest with separating colons
-r to output the digest in coreutils format
-d to output debug info
-hex output as hex dump
-binary output in binary form
-hmac arg set the HMAC key to arg
-non-fips-allow allow use of non FIPS digest
-sign file 在文件中使用私钥的符号摘要
-verify file 使用文件中的公钥验证签名
-prverify file 使用文件中的私钥验证签名
-keyform arg 关键文件格式(PEM或引擎)
-out filename 输出到文件名而不是标准输出
-signature file 签名验证
-sigopt nm:v 参数验证
-hmac key create hashed MAC with key
-mac algorithm create MAC (not neccessarily HMAC)
-macopt nm:v MAC algorithm parameters or key
-engine e 使用引擎e,可能是硬件设备。
# 支持的信息摘要算法
-md4 to use the md4 message digest algorithm
-md5 to use the md5 message digest algorithm
-ripemd160 to use the ripemd160 message digest algorithm
-sha to use the sha message digest algorithm
-sha1 to use the sha1 message digest algorithm
-sha224 to use the sha224 message digest algorithm
-sha256 to use the sha256 message digest algorithm
-sha384 to use the sha384 message digest algorithm
-sha512 to use the sha512 message digest algorithm
-whirlpool to use the whirlpool message digest algorithm

简单示例:

1
2
3
# (1) 用SHA1/MD5算法计算文件file.txt的哈希值输出到stdout;
openssl dgst -sha1 file.txt
openssl dgst -md5 file.txt