https://www.cnblogs.com/linziping/p/16857167.html
相信大家对证书已经有一个比较直关的了解,这里只讲如何创建自签证书,关于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 From: https://www.cnblogs.com/jinanxiaolaohu/p/18224371