一. 首先说一下几种常见证书的存放形式:
证书格式 存放形式
.p12 用于存放公钥/私钥。
.pem 用于存放公钥/私钥
.pfx 用于存放公钥/私钥
.cer/.crt 用于存放公钥/证书序列号还有证书的信息等等
二. 提取证书中的内容(仅限linux命令方式)
1. .p12证书
openssl pkcs12 -in 700000000000001.p12 -out 700000000000001.pem --将.p12证书转化为.pem证书(如果pfx证书已加密,会提示输入密码)
openssl rsa -in 700000000000001.pem -text -out private.key --提取证书的私钥
openssl rsa -in private.key -pubout -out public.key --提取证书的公钥
2. .pem证书
openssl rsa -in 700000000000001.pem -text -out private.key --提取证书的私钥(如果pfx证书已加密,会提示输入密码)
openssl rsa -in private.key -pubout -out public.key --提取证书的公钥
3. .pfx证书
openssl pkcs12 -in 700000000000001.pfx -nocerts -nodes -out pri_pub.key --提取证书中的密钥对(如果pfx证书已加密,会提示输入密码)
openssl rsa -in pri_pu.key -out private.key --提取密钥对中的私钥
openssl rsa -in private.key -pubout -out public.key --提取密钥对中的公钥
4. .cer/.crt证书
openssl x509 -in 700000000000001.cer -text -out info.text --提取证书中的序列号等信息
三. 用命令进行加密/解密/签名/验签等等
加密--公钥 解密--私钥 签名--私钥 验证--公钥
1. 对文件签名
openssl rsautl -sign -inkey prikey.pem -in a.txt -hexdump --文件a.txt的内容不能太长
openssl rsautl -sign -inkey prikey.pem -in a.txt -out sig.dat
2. 验证签名
openssl rsautl -verify -inkey prikey.pem -in sig.dat --验证成功后打印出a.txt的内容
3. 公钥加密
openssl rsautl -encrypt -pubin -inkey pubkey.pem -in a.txt -out b.txt
4. 私钥解密
openssl rsautl -decrypt -inkey prikey.pem -in b.txt