内容发布更新时间 : 2025/1/5 11:29:04星期一 下面是文章的全部内容请认真阅读。
声明:
1.此文档中,证书生成时口令、密码一律是:12345.方便排查;
2.另外,所有命令均可在Openssl在线文档中查询; 3.本文档,支持命令检索,所有命令首字母大写;
一、证书类
1.1证书申请:Req
1)Req
生成和处理PKCS10证书,证书申请文件; 用法:
Openssl req [-inform PEM|DER ] [-in filenames] [-passin arg] [-config filename] [batch] [-newkey rsa:bits] [-new] [-rand file:rand dat] [-text] [-days] [-x509]
[-subj arg /CN=china/OU=tt/O=ab/CN=fxx] [-utf8] [-noout] [-keyout] [-pubkey] 其中,
-inform 指定输入格式;
-newkey rsa:bits 用于生成新的rsa密钥以及证书请求;默认名称为privkey.pem; -new 生成新的证书请求以及私钥,默认1024bits -rand 随机数种子文件;-rand file: rand.dat;
-config file 指定证书请求模板,默认为openssl.cnf;
-subj arg 制定证书请求的用户信息;不指定,则要求输入;-subj /CN=cn/OU=t/O=a; -utf8 指定为utf8,默认为ASCII编码;
-batch 不询问用户请求;
-newhdr 在生成的PEM证书请求文件头尾包含NEW字样;有些CA需要; -pubkey 获取证书请求中的公钥信息; -modulus 输出请求中的模数; -text 打印证书信息; -verify 验证证书请求; -x509 生成自签名证书;
-md5/4/2/sha1/mdc2 生成自签名证书时,指定摘要算法; -days 生成自签名证书的有效期; 例子:
#生成证书申请和私钥 > req -new -batch -out myreq.pem
#只有-new需要输入subj等;加入-batch则不
需要输入;
> req -newkey rsa:1024 -out myreq1.pem -keyout reqkey.pem > req -new -subj /CN=china/OU=tt/O=ab/CN=dzr #查看公钥信息;可见其中包含证书请求; > > > >
req req req req
-in myreq.pem -pubkey -out pubkey.pem -in myreq.pem -pubkey -text -in myreq.pem -text
-in myreq.pem -modulus #所谓模数 -in pubkey.pem -modulus
> req
> req -in pubkey.pem -text #生成自签名证书 >
req -in myreq.pem -x509 -key reqkey.pem -out mycert.pem -days 300 -text -md5
1.2消息格式:PKCS7
1)pkcs7
加密消息语法,各种消息存放的格式标准;包括数据、签名、摘要、数字信封等; 用于处理DER或者PEM格式的pkcs7文件 用法:
Openssl pkcs7 [-inform PEM][-outform] [-in ][-print_certs][-text][noout] 其中,
-print_certs 打印证书或CRL,每行打出持有者和颁布者; -text 打印相关信息; 例子:
#没有pkcs7文件,可通过crltopkcs7生成;
Openssl> Openssl>
pkcs7 -in myreq.pem -outform DER -out myreq_pkcs7.der pkcs7 -in file.pem print_certs -out certs.pem
1.3 个人证书:PKCS12
1)pkcs12
工具,用于生成和分析pkcs12文件 用法:
Openssl pkcs12 [export][ chain][inkey][cedrtfile][CApath][CAfile][name][out] [aes128][des3][password][rand] 其中,
-export 输出pkcs12文件; -chain 添加证书链;
-inkey 指定私钥文件;
-certfile file添加file中所有证书文件; -CApath arg 指定CA文件目录; -CAfile arg 指定CA文件;
-name 指定证书和私钥的友好名;
-in 指定私钥和证书读取的文件,为PEM格式; -out 指定输出的pkcs12文件,默认为标准输出; -nomacver 读取时不验证MAC;
-clcerts 只输出客户证书,不包含CA证书; -nokeys 不输出私钥; -info 输出pkcs12结构信息; -des3/ase128 私钥加密算法;
-nodes 不对私钥加密;
-maciter 加强完整性保护,多次计算MAC; -descert 用3DES加密pkcs12文件,默认RC2-40; -keysig 设置私钥只能用于签名; 例子:
#生成pkcs12,不带CA证书
> pkcs12 -export -inkey reqkey.pem -in mycert.pem -out mypkcs12.pfx
> pkcs12 -export -inkey CA_key.pem -in CAreq_cert.pem -out myPkcs12.pfx #生成,带CA证书
> pkcs12 -export -inkey CA_key.pem -in CAreq_cert.pem -CAfile ../cacert.pem -chain -out ocsp1.pfx
#信息分离出来写入文件; >
pkcs12 -in myPkcs12.pfx -out certandkey.pem
#显示pkcs12信息 >
pkcs12 -in myPkcs12.pfx -info
1.3 转换证书:PKCS8
10.pkcs8
私钥转换工具,pkcs8格式 用法:
Openssl pkcs8 [inform ][outform][in ][passin][out][topk8][noiter][v2][embed] 其中,
-topk8 输出pkcs8文件; -noiter MAC保护计算次数为1; -nooct 不采用8位组表示私钥;
-embed 采用嵌入式DSA 参数格式;
-v2 alg 采用PKCS5 v2.0 并指定加密算法;
例子:
#私钥转换为pkcs8文件;比较前后文件内容,的确不同的格式; Openssl>
pkcs8 -in CA_key.pem -topk8 -out mypkcs8key.pem