openssl command

openssl genrsa

1
2
3
openssl genrsa #生成私钥,输出到控制台
openssl genrsa -out plaint-private.pem 2048 #密钥长度2048 输出文件plaint-private.pem
openssl genrsa -aes192 -passout pass:123456 -out passwd-private.pem 2048 #指定密码

openssl rsa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
openssl rsa -in plaint-private.pem -pubout -out plaint-public.pem
#从未加密的私钥中提取公钥

openssl rsa -in passwd-private.pem -passin:12345 -pubout -out plaint-public.pem
#从加密的私钥中提取公钥

openssl rsa -in plaint-private.key -pubout
#从未加密的私钥中提取公钥输出到控制台

openssl rsa -in plaint-private.pem -des3 -passout pass:123456 -out passwd-private.pem
#使用des3加密私钥

openssl rsa -inform pem -in plaint-private.pem -outform der -out plaint-private.der
#私钥格式转换pem -> der

openssl rsa -in plaint-private.pem -check -noout
#校验私钥的完整性

openssl rsautl

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
openssl rsautl -encrypt -inkey plaint-public.pem -pubin -in plaintext.txt -out ciphertext.txt
#使用公钥加密文件

openssl rsautl -decrypt -inkey plaint-private.pem -in ciphertext.txt -out plaintext.txt
#使用私钥进行解密

openssl rsautl -sign -inkey plaint-private.pem -in plaintext.txt -out signature.txt
#使用私钥进行签名

openssl rsautl -verify -inkey plaint-public.pem -in signature.txt -out verified.txt
#公钥验签

openssl rsautl -encrypt -inkey test-public.cer -certin -in plaintext.txt -out ciphertext.txt
#证书加密, -certin密钥文件为证书

openssl rsautl -decrypt -inkey test-key.pem -in ciphertext.txt -out decrtpted.txt
#使用私钥解密加密证书


openssl rsautl -sign -inkey text-key.pem -in plaintext.txt -out sinature.txt
#使用私钥签名

openssl rsautl -verify -inkey test-public.cer -certin -in signature.txt -out verified.txt
#使用证书验签

openssl genpkey

1
2
3
4
5
6
7
8
openssl genpkey -algorithm rsa 
#生成私钥,输出到控制台 指定算法为rsa

openssl genpkey -algorithm rsa -out plaint-private.pem -pkeyopt rsa_keygen_bits:2048
#指定使用rsa算法产生2048位私钥

openssl genpkey -algorithm rsa -pass pass:123456 -out passwd-private.pem 2048
#使用密码123456加密私钥

openssl pkey

1
2
3
4
5
6
7
8
9
10
11
12
13
14
openssl pkey -in plaint-private.pem -pubout -out plaint-public.pem 
#提取公钥

openssl pkey -in passwd-private.pem -passin pass:123456 -pubout -out plaint-public.pem
#从加密的私钥中提取公钥

openssl pkey -in plaint-private.pem -pubout
#提取公钥,输出到控制台

openssl pkey -in plaint-private.pem -des3 -passout pass:123456 -out passwd-private.pem
#私钥加密

openssl pkey -inform pem -in plaint-private.pem -outform der -out plaint-private.der
#私钥格式转换,pem--->der格式

openssl pkeyutl

1
2
3
4
5
6
7
8
9
10
11
openssl pkeyutl -encrypt -inkey plaint-public.pem -pubin -in plaintext.txt -out ciphertext.txt
#使用公钥加密文件

openssl pkeyutl -decrypt -inkey palint-private.pem -in ciphertext.txt -out decrypted.txt
#使用私钥进行解密

openssl pkeyutl -sign -inkey plaint-private.pem -in palintext.txt -out signature.txt
#使用私钥进行签名

openssl pkeyutl -verifyrecover -inkey plaint-public.pem -pubin -in signature.txt -out virified.txt
#使用公钥进行验证

openssl req

1
2
3
4
5
6
7
8
9
10
11
12
13
14
openssl req -new -key plaint-private.pem -out palint-request.csr -subj "/C=CN/ST=ZJ/L=HZ/O=RX/OU=ZG/CN=RXCA"
#创建请求证书 -new 创建请求证书, -key使用文件中的私钥, -subj 设置请求证书主题

openssl req -in plaint-request.csr -pubkey -nouut > plaint-public.pem
#提取公钥

openssl req -in plaint-request.csr -subject -noout
#提取主题

openssl req -verify -in plaint-request.csr -noout
#校验请求证书签名是否合法

openssl req -newkey rsa:2048 -nodes -keyout ca-key.pem -out ca-request.csr -subj "/C=CN/ST=ZJ/L=HZ/O=RX/OU=ZG/CN=RXCA"
#创建私钥和请求证书文件,-newkey 创建私钥并指定算法, -nodes 输出私钥不加密 -keyout 指定私钥文件

openssl x509

1
2
3
4
5
6
7
8
9
10
11
12
13
14
openssl genrsa -out ca-key.pem 2048
openssl req -new -key ca-key.pem -out ca-request.csr -subj "/C=CN/ST=ZJ/L=HZ/O=RX/OU=ZG/CN=RXCA"
openssl x509 -req -in ca-request.csr -days 3650 -signkey ca-key.pem -out ca-root.cer
#创建根证书 自签名证书 -req 输入请求证书文件 -signkey 指定自签名证书私钥

openssl genrsa -out test-key.pem 2048
openssl req -new -key test-key.pem -out test-request.csr -subj "/C=CN/ST=ZJ/L=HZ/O=RX/OU=ZG/CN=RXCA"
openssl x509 -req -in text-request.csr -days 365 -CA ca-root.cer -CAkey ca-key.pem -CAcreateserial -out test-public.cer
#创建通信证书 -req 输入请求证书文件 -CA 指定根证书 -CAkey 指定根证书的私钥

openssl x509 -in test-public.cer -dates -issuer -subject -email -noout
#提取证书信息 -dates 证书的可开始和结束的时间 -issuer 发行人主题 -subject 证书主题 -email 邮件信息

openssl x509 -in test-public.cer -pubkey -noout > plaint-public.pem