一. 首先說一下幾種常見證書的存放形式:
證書格式 存放形式
.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
