使用OpenSSL工具制作X.509证书的方法及其注意事项总结

如何使用OpenSSL工具生成根证书与应用证书

本文由CSDN-蚍蜉撼青松 【主页:http://blog.csdn.net/howeverpf】原创,转载请注明出处!

 

零、写在前面

       最近出于工作需要,倒腾了一下如何生成X.509证书。在此过程中遇到一些问题,也查过网上很多资料,磕磕碰碰,总算按照既定要求达到了目标。因为感觉网上的资料太散,查找起来不很方便,所以在这里做一个总结。

       主要的参考信息来源是以下三个:

  • 《OpenSSL编程》(赵春平 著)【一本难得的中文资料,未出版】
  • OpenSSL官方文档---OpenSSL命令》(英文),几乎可以找到所有问题的答案和原因,但是由于很多时候不知道问题出在哪里,所以还是需要另外查资料
  • 互动百科---SSL》,说明了证书中各DN字段的含义

        一些前辈的博文,也对我快速定位问题提供了很大的帮助,在此表示感谢!并列举如下:

 

一、步骤简记

       以生成一个二级证书链为例,将会用到以下命令:

// 生成顶级CA的公钥证书和私钥文件,有效期10年(RSA 1024bits,默认)
openssl req -new -x509 -days 3650 -keyout CARoot.key -out CARoot.crt 
// 为顶级CA的私钥文件去除保护口令
openssl rsa -in CARoot.key -out CARoot.key

// 生成顶级CA的公钥证书和私钥文件,有效期15年(RSA 2048bits,指定)
openssl req -newkey rsa:2048 -x509 -days 5480 -keyout CARoot.key -out CARoot.crt
// 为顶级CA的私钥文件去除保护口令
openssl rsa -in CARoot.key -out CARoot.key

// 为应用证书/中级证书生成私钥文件
openssl genrsa -out app.key 2048
// 根据私钥文件,为应用证书/中级证书生成 csr 文件(证书请求文件)
openssl req -new -key app.key -out app.csr
// 使用CA的公私钥文件给 csr 文件签名,生成应用证书,有效期5年
openssl ca -in app.csr -out app.crt -cert CARoot.crt -keyfile CARoot.key -days 1826 -policy policy_anything
// 使用CA的公私钥文件给 csr 文件签名,生成中级证书,有效期5年
openssl ca -extensions v3_ca -in app.csr -out app.crt -cert CARoot.crt -keyfile CARoot.key -days 1826 -policy policy_anything

       根据生成目标不同,以上命令可以分为三组。其中,前面两组都用于生成自签名的顶级CA(区别只在于密钥长度不同),实际应用中只需根据需求选择一组即可。

       最后一组用于生成非自签名的证书,包括中级证书与应用证书。所谓中级证书,是具有继续颁发下级证书权限的子CA,而本文中所说的应用证书,特指不能用来继续颁发下级证书,只能用来证明个体身份的证书。顶级CA在签发二者的时候,只是多少一个 -extensions v3_ca 选项的区别,这个选项赋予被签发的证书继续签发下级证书的权力。【详参2.5[3]小节相关介绍】

二、各步详解

2.1 生成自签名根证书(即顶级CA)

典型示例:openssl req -new -x509 -days 5480 -keyout CA.key -out CA.crt

[1] 命令选项和参数解读

       示例中,各选项(及参数)的意义如下:

req              //使用openssl的req子命令
-new             //生成新的证书请求
-x509            //生成自签名证书
-days 5480       //自签名证书的有效期5480天(15年)【仅当使用了 -x509 选项后有效】
-keyout CA.key   //私钥文件名指定为CA.key【此选项的一般作用是新生成文件命名;但若同时使用了-key选项,则此选项用于原私钥文件的更名】
-out CA.crt      //指定输出所生成自签名证书的信息到文件,且文件名为CA.crt【建议不要省略】

       其中,-days,-keyout 两个选项可以省

  • 15
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值