证书知识简单介绍

证书有2种格式:PEM(base64格式)、DER(二进制)

crt、cer都为证书(证书包含公钥,crt常见linux、cer常见windows)
csr为证书请求文件
pfx、p12为带证书的私钥
pem为base64格式的文件
der为二进制格式的文件
http://blog.sina.com.cn/s/blog_3d5517850102w2rs.html

一、生成私钥:生成des3加密的私钥private.pem(1024/2048位的密钥)
openssl genrsa -des3 -out private.pem 2048
生成无密的私钥
openssl genrsa -out private.pem 2048
去除掉密钥文件保护密码
openssl rsa -in prikey.pem -out prikey.pem
如下信息表示私钥已加密

(JAVA需要使用的私钥需要经过PKCS#8编码,PHP程序不需要,可以直接略过)
openssl pkcs8 -topk8 -inform PEM -in private.pem -outform PEM
生成无密的私钥
openssl pkcs8 -topk8 -inform PEM -in private.pem -outform PEM -nocrypt

二、生成公钥
openssl rsa -in private.pem -pubout -out public.pem

三、生成证书:生成X509格式的CA自签名证书(有效期一年)
openssl req -new -x509 -key private.pem -out ca.crt -days 3650
生成der格式的证书:
openssl req -new -x509 -key private.pem -out ca.crt -days 3650 -outform der
向权威证书颁发机构申请证书(只需要提交private.pem、证书请求文件server.csr)
1、根据私钥生成csr(证书请求文件)
openssl req -new -key private.pem -out server.csr
2、向权威证书颁发机构申请证书(此时ca.crt为颁发机构的证书、server.crt 就是我们需要的证书)
openssl x509 -req -days 3650 -in server.csr \
-CA ca.crt -CAkey private.pem \
-CAcreateserial -out server.crt
如果要在google等浏览器显示出安全的绿锁标志,自己颁发的证书肯定不好使,得花钱向第三方权威证书颁发机构申请
ca.srl文件-CAcreateserial——表示创建证书序列号文件

http://www.cnblogs.com/yjmyzz/p/openssl-tutorial.html

四、生成pfx或p12(pfx带证书跟私钥的二进制)
openssl pkcs12 -export -out private.pfx -inkey private.pem -in ca.crt
pfx转pem(pem带证书跟私钥的base64格式)
openssl pkcs12 -in private.pfx -nodes -out private.pem

包含证书与私钥的pem或pfx或p12分离出私钥
openssl rsa -in private.pem -out private.key
pem分离出证书
openssl x509 -in server.pem -out ca.crt

五、加密与验证
对文件进行签名
open rsautl -sign -inkey prikey.pem -in a.txt -out sig.dat
验证签名
openssl rsautl -verify -inkey prikey.pem -in sig.dat
用公钥对文件加密
openssl rsautl -encrypt -pubin -inkey pubkey.pem -in a.text -out b.text
用私钥解密
openssl rsautl -decrypt -inkey prikey.pem -in b.text
用证书中的公钥加密
opensll rsautl -encrypt -certin -inkey cert1.pem -in a.txt

六、格式转换

将der格式的证书转成pem格式
openssl x509 -inform PEM -outform DER -in public.der -out public.pem
将pem转化成der
openssl x509 -outform der -in public.pem -out public.der

PEM–DER/CER(BASE64–DER编码的转换)

   openssl x509 -outform der -in certificate.pem -out certificate.der

PEM–P7B(PEM–PKCS#7)

   openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer

PEM–PFX(PEM–PKCS#12)

   openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

PEM–p12(PEM–PKCS#12)

   openssl pkcs12 -export -out Cert.p12 -in Cert.pem -inkey key.pem

CER/DER–PEM(编码DER–BASE64)

   openssl x509 -inform der -in certificate.cer -out certificate.pem

P7B–PEM(PKCS#7–PEM)

   openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer

P7B–PFX(PKCS#7–PKCS#12)

   openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
   openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer

PFX/p12–PEM(PKCS#12–PEM)

   openssl pkcs12 -in certificate.pfx -out certificate.cer
   如无需加密pem中私钥,可以添加选项-nodes;
   如无需导出私钥,可以添加选项-nokeys;

PEM BASE64–X.509文本格式

   openssl x509 -in Key.pem -text -out Cert.pem

PFX文件中提取私钥(.key)

   openssl pkcs12 -in mycert.pfx -nocerts -nodes -out mycert.key

PEM–SPC

   openssl crl2pkcs7 -nocrl -certfile venus.pem -outform DER -out venus.spc

PEM--PVK(openssl 1.x开始支持)

   openssl rsa -in mycert.pem -outform PVK -pvk-strong -out mypvk.pvk

PEM--PVK(对于openssl 1.x之前的版本,可以下载pvk转换器后通过以下命令完成)

   pvk -in ca.key -out ca.pvk -nocrypt -topvk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值