首页 > 其他分享 >关于OpeSSL生成自签名证书-包含完整证书链生成(全网最全)

关于OpeSSL生成自签名证书-包含完整证书链生成(全网最全)

时间:2022-11-04 11:36:52浏览次数:52  
标签:crt 证书 mid ca openssl 生成 server OpeSSL

  相信大家对证书已经有一个比较直关的了解,这里只讲如何创建自签证书,关于openssl的使用或者证书的相关内容,此处不做过多讲解

废话不多说,直接上手。

  一般证书分为根证书,中间证书,用户证书三级,也可以是根证书和用户证书两级,或者直接用户证书。对于单向验证一般只需要用户证书,客户端和服务端双向验证的话,则需要两级或者三级证书,对于安全性高的一般是三级证书,且根证书必须是正规的CA证书。

我们以三级证书来讲解:

1.生成CA根证书

# 创建root-ca并自签名

 openssl req -x509 -newkey rsa:2048 -nodes -keyout root-ca.key -out root-ca.crt -days 3650  -subj "/C=CN/ST=hangzhou/L=test/O=test/OU=test/CN=root-ca"

# 查看创建的证书

openssl x509 -in root-ca.crt -text -noout

2生成中间证书

# 创建mid-ca的证书签名请求

openssl req -new -newkey rsa:2048 -nodes -keyout secondary-ca.key -out secondary-ca.csr -subj "/C=CN/ST=hangzhou/L=test/O=test/OU=test-it/CN=mid-ca"

# 使用root-ca签发mid-ca的证书签名请求,中间证书指的是可以允许继续生成下级证书,否则的话默认生成终端证书,即使可以用中间证书生成下一级客户端和服务端等用户证书,最终验证的无法通过,此处是非常重要的,很多使用证书链无法通过都是此处踩坑

 新建配置文件 -extfile inntext.cnf

输入内容:basicConstraints=critical,CA:TRUE

openssl x509 -req -in mid-ca.csr -CA root-ca.crt -CAkey root-ca.key -CAcreateserial -out mid-ca.crt -days 3650  -extfile inntext.cnf

# 查看创建的证书

openssl x509 -in mid-ca.crt -text -noout

3生成服务端证书

# 创建server的证书签名请求

openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr -subj "/C=CN/ST=hangzhou/L=test/O=test/OU=test-it/CN=server"

# 用mid-ca签发server的证书签名请求

openssl x509 -req -in server.csr -CA mid-ca.crt -CAkey mid-ca.key -CAcreateserial -out server.crt -days 3650

生成.net core识别的证书文件client.pfx

openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx

# 查看创建的证书

openssl x509 -in server.crt -text -noout

4生成客户端证书

# 创建client的证书签名请求

openssl req -new -newkey rsa:2048 -nodes -keyout client.key -out client.csr -subj "/C=CN/ST=hangzhou/L=test/O=test/OU=test-it/CN=client"

# 用secondary-ca签发client的证书签名请求

openssl x509 -req -in client.csr -CA mid-ca.crt -CAkey mid-ca.key -CAcreateserial -out client.crt -days 3650

# 查看创建的证书

openssl x509 -in client.crt -text -noout

生成.net core识别的证书文件client.pfx

openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx

5制作证书链

# server.crt的签发是secondary-ca,而secondary-ca的签发是root-ca

# 对server.crt的验证必须使用到这两个证书,需要制作为证书链。

# 制作证书链的方法直白而简单:将证书拼接在一个文件中即可

Linux :cat root-ca.crt mid-ca.crt > chain-ca.crt

windows :type  root-ca.crt  mid-ca.crt > chain-ca.crt

验证: openssl verify -verbose -CAfile root-ca.crt server.crt 单个无法验证

验证:openssl verify -verbose -CAfile mid-ca.crt server.crt 单个无法验证

验证:openssl verify -verbose -CAfile chain-ca.crt  server.crt 合成之后在验证

标签:crt,证书,mid,ca,openssl,生成,server,OpeSSL
From: https://www.cnblogs.com/linziping/p/16857167.html

相关文章

  • python-迭代器与生成器
    迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法:iter()和next()。字符串,列表或元组对象都可用于创建......
  • Vue脚手架生成一个新项目
    Vue脚手架生成一个新项目 1.输入cmd打开当前目录,并输入指令vuecreate项目名称 2.选择自己配置的历史配置或使用新配置Manuallyselectfeatures(即为新配置......
  • Java(screw)生成数据库表结构
    数据库支持MySQLMariaDBTIDBOracleSqlServerPostgreSQLCacheDB(2016)文档生成支持htmlwordmarkdown方式一:代码生成<dependency><groupId>cn......
  • js 树的各种骚操作,生成树,父子链,树推平
    js生成树结构1、假树,利用共享内存实现,非真遍历,这个是一种比较直观的写法letlist=[{id:1,name:100},{id:11,name:101,pid:1},{id:11......
  • C# .Net MVC Razor 视图静态分页导航栏生成器
    这里贴出3个重要组成部分1.分页导航栏主算法代码(包括@Html扩展方法)2.HTML页面调用代码(包括导航栏样式)3.Controller控制器代码4.测试路径:http://www.****.com/EBusines......
  • 一个简单的ID生成器,请帮忙看看还有那些毛病
    业务系统经常需要生成各种唯一ID,想到UUID、雪花算法等;UUID字符没有含义,掏出来给客户看,比较的很丑;雪花算法是64位的,小业务用户感觉太长了,有点不满意;琢磨了好些天,自己写了......
  • VS 生成事件 xcopy 报错的解决方法
    出现这种情况有可能原因有2种可能:1、目标文件夹设为只读:此时报错:MSB3073代码4,输出显示:访问遭到拒绝。解决:去掉文件夹只读属性。2、缺少环境变量:报错为::MSB3073代......
  • Django生成静态页面和使用缓存
       生成并使用静态页面importosfromdjango.shortcutsimportrenderfromdjango.template.loaderimportrender_to_stringdefmy_view(request):co......
  • MySQL生成连续的数
    背景MySQL版本5.7,需要生成连续的日期,只通过select,而不走自定义函数或存储过程思路只需要生成连续的数字,然后通过日期时间函数操作即可脚本SELECT DATE_ADD......
  • 元素JS 完成 html 文件的生成 下载
    前端生成html字符串模板,并进行下载通过字符串拼接出完整的html文件使用Blob构造出一个Blob文件对象使用window.URL.createObjectURL将文件对象解析成url将......