web开发中使用证书中的密钥进行加密与签名

一. 首先说一下几种常见证书的存放形式:

      证书格式      存放形式        

  .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  

    

      

原文地址:https://www.cnblogs.com/dreamer-One/p/5621134.html