https网络编程——如何建立利用根证书(凭证)签发建立中继证书(凭证)详解

参考:如何建立利用根证书(凭证)签发建立中继证书(凭证)详解
地址:https://qingmu.blog.csdn.net/article/details/108221568?spm=1001.2014.3001.5502

目录

  • 在建立中继之前需要自建根证书
  • 建立根证书的具体步骤
    • 1、建立一个目录存放所有中继资料
    • 2、进入中继目录,建立相关的文件夹
      • 2.1、进入中继目录,建立相关的文件夹
      • 2.2、更改private文件夹得权限
      • 2.3、建立index.txt文件
      • 2.4、建立serial
    • 3、填写 OpenSSL 需要的配置文件
    • 4、在中继凭证得目录中产生中继凭证得私钥
    • 5、在中继凭证目录产生中继凭证的凭证签发申请
    • 6、使用根凭证去签发中继凭证的凭证签发申请档, 产生中继凭证的凭证
      • 6.1、签发凭证签发申请档, 有效期限是 3650 天.
      • 6.2、变更签发的凭证的存取权限.
    • 7、检查签发的中继凭证是否无误.
    • 8、确认中继凭证是由根凭证所签发.
    • 9、产生中继凭证的凭证串链
      • 9.1、回到中继凭证目录来
    • 10、中继凭证建立完成

在建立中继之前需要自建根证书

自建根证书详解,参照之前的博文

需要安装openssl库

sudo apt-get install  openssl

我们在建立根证书的前提下来建立中继

建立根证书的具体步骤

1、建立一个目录存放所有中继资料

在这里插入图片描述

2、进入中继目录,建立相关的文件夹

2.1、进入中继目录,建立相关的文件夹

cd intermediate
mkdir private csr cert chain signed_certs

在这里插入图片描述
这些文件夹得作用:

文件作用
private存放中继凭证的私钥.
csr存放中继凭证的凭证签发申请档.
cert存放中继凭证的凭证串链
chain存放中继凭证的凭证.
signed_certs存放中继凭证签发过的凭证的副本.

2.2、更改private文件夹得权限

chmod 700 private

2.3、建立index.txt文件

建立 index.txt, 此档案会用来纪录中继凭证签发过的凭证的纪录, 每次中继凭证签发凭证OpenSSL 会自动更新此档案.(具体没什么用但必须要有)

touch index.txt

2.4、建立serial

建立 serial, 并在档案中填入 0001, 被签发的凭证都会有序号的栏位, 纪录此凭证在上一层签发单位所签发的凭证的序号, 此档案会用来纪录中继凭证签发的凭证的序号, 每次中继凭证签发凭证 OpenSSL 会自动更新此档案(具体没什么用但必须要有)

echo 0001 > serial

3、填写 OpenSSL 需要的配置文件

文件名:openssl_intermediate_ca.cnf
位置:intermediate目录下

用vim打开,然后复制下面得内容进去,注意路径要修改

[ ca ]
default_ca = CA_default[ CA_default ]
# # 放置相关的文件和目录.
dir           = /home/qingmu/works/ca/intermediate
certs         = $dir/cert
new_certs_dir = $dir/signed_certs
database      = $dir/index.txt
serial        = $dir/serial
RANDFILE      = $dir/private/.rand# 放置私钥和证书的路径.
private_key   = $dir/private/intermediate_ca.key.pem
certificate   = $dir/cert/intermediate_ca.cert.pemdefault_md    = sha256name_opt      = ca_default
cert_opt      = ca_default
default_days  = 365
preserve      = no
policy        = policy_defualt[ policy_defualt ]
countryName            = optional
stateOrProvinceName    = optional
organizationName       = optional
organizationalUnitName = optional
commonName             = supplied
emailAddress           = optional[ req ]
# req 工具需要的參数.
default_bits       = 2048
distinguished_name = req_distinguished_name
string_mask        = utf8only
default_md         = sha256[ req_distinguished_name ]
# 产生凭证时要输入的资料的说明
countryName            = Country Name (2 letter code)
stateOrProvinceName    = State or Province Name
localityName           = Locality Name
0.organizationName     = Organization Name
organizationalUnitName = Organizational Unit Name
commonName             = Common Name
emailAddress           = Email Address[ server_cert ]
# 签发服务器凭证时使用
basicConstraints = CA:FALSE
nsCertType = server
nsComment = "OpenSSL Generated Server Certificate"
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth[ client_cert ]
# 签发客户端凭证时使用
basicConstraints = CA:FALSE
nsCertType = client, email
nsComment = "OpenSSL Generated Client Certificate"
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = clientAuth, emailProtection

4、在中继凭证得目录中产生中继凭证得私钥

文件名:intermediate_ca.key.pem
位置:ca/intermediate/private

使用命令:

openssl genrsa -aes256 -out private/intermediate_ca.key.pem 4096
会提示输入密码,也就是:bob123  (信息可以自己随意输入)
Enter pass phrase for private/intermediate_ca.key.pem:bob123
再次确认密码:
Verifying - Enter pass phrase for private/intermediate_ca.key.pem:bob123

在这里插入图片描述
更改私钥的权限,使其只读

chmod 400 private/intermediate_ca.key.pem

5、在中继凭证目录产生中继凭证的凭证签发申请

输入命令:

openssl req -config openssl_intermediate_ca.cnf -new -sha256 -key private/intermediate_ca.key.pem -out csr/intermediate_ca.csr.pem
 会提示输入私钥密码, 也就是 bob123
Enter pass phrase for private/intermediate_ca.key.pem:bob123接著需要输入凭证拥有者的信息:
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank For some fields there will be a default value,
If you enter '.', the field will be left blank.所在国家的缩写, 2 个字母, 例如
Country Name (2 letter code) []:US
所在的州或省.
State or Province Name []:California
所在的城市.
Locality Name []:San Francisco
所在的公司.
Organization Name []:Bob Ltd
所在的公司的单位.
Organizational Unit Name []:Bob Ltd Certificate Authority
证书名称
Common Name []:Bob Ltd Intermediate CA
邮箱.
Email Address []:bob@local

在这里插入图片描述

6、使用根凭证去签发中继凭证的凭证签发申请档, 产生中继凭证的凭证

文件名:intermediate_ca.cert.pem

注意:回到root目录下来操作
在这里插入图片描述

6.1、签发凭证签发申请档, 有效期限是 3650 天.

输入命令:

openssl ca -config openssl_root_ca.cnf -extensions intermediate_ca -days 3650 -notext -md sha256 -in ../intermediate/csr/intermediate_ca.csr.pem -out ../intermediate/cert/intermediate_ca.cert.pem
# 会提示需要输入根凭证的私钥密码, 也就是 alice123
Enter pass phrase for /ca/root/private/root_ca.key.pem:alice123# 接著会显示要签发的凭证签发申请档的内容.
Check that the request matches the signature
Signature ok
Certificate Details:
...
# 并询问是否签发, 输入 y
Sign the certificate? [y/n]:y
# 以及询问是否纪录签发的凭证到资料库 (index.txt, serial), 输入 y
1 out of 1 certificate requests certified, commit? [y/n]y

在这里插入图片描述

6.2、变更签发的凭证的存取权限.

chmod 444 ../intermediate/cert/intermediate_ca.cert.pem

在这里插入图片描述

7、检查签发的中继凭证是否无误.

输入命令:

openssl x509 -noout -text -in ../intermediate/cert/intermediate_ca.cert.pem

# 使用的算法
Signature Algorithm: sha256WithRSAEncryption# 公钥的长度
Subject Public Key Info:Public-Key: (4096 bit)# 有效日期.
Validity:Not Before: Aug  4 23:56:43 2017 GMTNot After : Aug  4 23:56:43 2027 GMT# 主旨 (Bob 的资料).
Subject: C=US, ST=Unit State, O=Bob Ltd, OU=Bob Ltd Certificate Authority, CN=Bob Ltd Intermediate CA/emailAddress=bob@local# 签发者 (Alice 的资料).
Issuer: C=TW, ST=Taiwan, L=Taipei, O=Alice Ltd, OU=Alice Ltd Certificate Authority, CN=Alice Ltd Root CA/emailAddress=alice@local

在这里插入图片描述

8、确认中继凭证是由根凭证所签发.

输入命令:

openssl verify -CAfile cert/root_ca.cert.pem ../intermediate/cert/intermediate_ca.cert.pem
显示 OK 表示正确.
../intermediate/cert/intermediate_ca.cert.pem: OK

在这里插入图片描述

9、产生中继凭证的凭证串链

文件名:chain_ca.cert.pem

浏览器在验证网站传来的凭证是否可信任时, 需要验证从 根凭证 -> 中继凭证-1 -> … -> 中继凭证-N -> 终端凭证 整个串链, 所以网站在传送凭证时是传送整个串链的凭证给浏览器.

因此凭证中心除了签发凭证给对方之外, 还必须将上层凭证中心给的凭证串链加上自己的凭证产生新的凭证串链, 再将新的凭证串链给对方.

凭证串链的格式是:
-----BEGIN CERTIFICATE-----
凭证 1 内容.:
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
凭证 2 内容:
-----END CERTIFICATE-----
...
-----BEGIN CERTIFICATE-----
凭证 N 內容:
-----END CERTIFICATE-----凭证串链内凭证的顺序是自己的凭证在最前面, 所以就是.
-----BEGIN CERTIFICATE-----
中继凭证-N.
-----END CERTIFICATE-----
...
-----BEGIN CERTIFICATE-----
中继凭证-1.
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
根凭证
-----END CERTIFICATE-----应用程式必须自己拥有对方的凭证的根凭证, 表示信任此根凭证所签发的凭证, 才有办法验证对方传来的凭证串链, 所以实际使用时凭证串链可以不包含根凭证部分.

9.1、回到中继凭证目录来

cd ../intermediate

产生凭证串链 (包含根凭证)

cat cert/intermediate_ca.cert.pem ../root/cert/root_ca.cert.pem > chain/chain.cert.pem

变更凭证串链的存取权限

chmod 444 chain/chain.cert.pem

10、中继凭证建立完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NURBS曲线与曲面

B样条方法在表示与设计自由型曲线曲面形状时显示了强大的威力,然而在表示与设计初等曲线曲面时时却遇到了麻烦。因为B样条曲线包括其特例的Bezier曲线都不能精确表示出抛物线外的二次曲线,B样条曲面包括其特例的Bezier曲面都不能精确表示出抛物面外的二次…

https网络编程——如何利用中继证书(凭证)建立服务器证书

参考:如何利用中继证书(凭证)建立服务器证书 地址:https://qingmu.blog.csdn.net/article/details/108225569?spm1001.2014.3001.5502 目录建立服务器证书的前提是要建立中继证书建立服务器证书的具体步骤1、建立一个目录&#x…

上传图片

2019独角兽企业重金招聘Python工程师标准>>> private File imageFile;// 上传文件名称private String imageFileFileName;// 上传文件类型private String imageFileContextType; InputStream is new FileInputStream(imageFile);String suffixName imageFileFileN…

https网络编程——如何利用中继证书(凭证)建立客户端证书

参考:如何利用中继证书(凭证)建立客户端证书 地址:https://qingmu.blog.csdn.net/article/details/108226592?spm1001.2014.3001.5502 目录建立客户端证书的前提是要建立中继证书建立客户端证书的具体步骤1、建立一个目录&#x…

2019.2.4 nfs原理和安装实验

NFS 访问一个本地文件还是NFS共享文件对于客户端而言都是透明的,当文件打开的瞬间,内核会作出一个决定,如果是本地文件内核会将本地NFS共享文件内核会将NFS共享文件的所有引用传递给——》NFS客户端枢中 NFS客户端是通过TCP/IP协议及模块向NF…

形容人的内核是什么意思_成语雪泥鸿爪是形容什么的?雪泥鸿爪什么意思?蚂蚁庄园2020年12月10日答案...

斑马线和斑马什么关系?大家都知道斑马和斑马线,但是两者之间有什么关系?蚂蚁庄园12月10日提到了这个问题,我们一起来看看正确答案吧。问题:斑马线和斑马有什么关系?答案:横线酷似斑马纹答案解析…

.Net 2.0里有一个有用的新功能:迭代器

下面内容节选至MSDN2005。迭代器(C# 编程指南) 迭代器是 C# 2.0 中的新功能。迭代器是方法、get 访问器或运算符,它使您能够在类或结构中支持 foreach 迭代,而不必实现整个 IEnumerable 接口。您只需提供一个迭代器,即…

MySQL 服务器变量 数据操作DML-视图

原文:MySQL 服务器变量 数据操作DML-视图SQL语言的组成部分 常见分类: DDL:数据定义语言 DCL:数据控制语言,如授权 DML:数据操作语言 其它分类: 完整性定义语言:DDL的一部分功能约束约束&#x…

kafka内存不断增加_为什么 Kafka 能这么快的 6 个原因

无论 kafka 作为 MQ 也好,作为存储层也罢,无非就是两个功能(好简单的样子),一是 Producer 生产的数据存到 broker,二是 Consumer 从 broker 读取数据。那 Kafka 的快也就体现在读写两个方面了,下面我们就聊聊 Kafka 快…

https网络编程——DNS域名解析获取IP地址

参考:DNS域名解析 地址:https://qingmu.blog.csdn.net/article/details/115825036?spm1001.2014.3001.5502 1、原理 我在在通过域名解析获取IP的过程中一般使用的是DNS域名解析。 DNS协议是一种应用层协议,他是基于UDP来实现的。 2、代码…

C#桌面时钟

使用C#制作的桌面时钟,提供闹钟功能(虽然很简陋)、万年历功能(包含农历)源码:http://www.cnblogs.com/Files/shiweifu/MyClock.rar截图:适合初学者研究 转载于:https://www.cnblogs.…

小a与黄金街道(欧拉函数)/**模运算规则总结*/

链接:https://ac.nowcoder.com/acm/contest/317/D 来源:牛客网 题目描述 小a和小b来到了一条布满了黄金的街道上。它们想要带几块黄金回去,然而这里的城管担心他们拿走的太多,于是要求小a和小b通过做一个游戏来决定最后得到的黄金…

堆栈认知——逆向IDA工具的基本使用

参考:逆向-IDA工具的基本使用 地址:https://qingmu.blog.csdn.net/article/details/118862881 目录1、文件的打开与关闭2、窗口介绍:图形 文本 其他窗口2.1、图形界面:2.2、文本界面:2.3、反汇编窗口2.4、 十六进制窗口…

堆栈认知——栈溢出实例(ret2text)

参考:栈溢出实例–笔记一(ret2text) 地址:https://qingmu.blog.csdn.net/article/details/119295954 目录1、什么是栈溢出?2、栈结构3、栈溢出需要解决的问题3.1、解决如何跳转的问题3.2、跳转到哪里去?4、…

堆栈认知——栈溢出实例(ret2shellcode)

参考:栈溢出实例–笔记二(ret2shellcode) 地址:https://qingmu.blog.csdn.net/article/details/119303513 目录1、栈溢出含义及栈结构2、ret2shellcode基本思路3、实战一下3.1、二进制程序如下3.2、分析调试查看栈3.3、编写payloa…

Glusterfs初试

Gluster的模式及介绍在此不表,这里只记录安装及配置过程。 1.整体环境 server1 : gfs1.cluster.com server2 : gfs2.cluster.com Client: 2.安装Gluster 下载软件https://access.redhat.com/downloads/content/186/ver3/rhel---7/3.4/x86_64/product-software 下…

堆栈认知——堆简介

参考:Linux笔记–堆简介 地址:https://qingmu.blog.csdn.net/article/details/119510863 目录1、前言2、堆的由来3、Linux中堆简介4、堆分类4.1、请求堆4.2、释放堆5、内存分配背后的系统调用6、堆相关数据结构7、堆的申请8、调试验证1、前言 当前针对各…

如何为 Horizon View 配置 VMware VSAN?

原文:http://myvirtualcloud.net/?p5440注明:本文内容基于 VMwareVSAN beta 版本撰写,请访问http://www.vmware.com/products/virtual-san/获得有关正式版本的更新信息。我已经在前面的文章中讨论了VSAN 给 Horizon View 带来的益处&#xf…

配置vscode远程免密登入Linux服务器

视频教程:https://www.bilibili.com/video/BV1s64y167cM?vd_sourcecc0e43b449de7e8663ca1f89dd5fea7d 参考:配置vscode远程免密登入Linux服务器 地址:https://blog.csdn.net/weixin_54178481/article/details/123977675?spm1001.2014.3001.…

Wss 3.0安装指南(一)

Wss 3.0安装指南(一) "基本" 模式 WSS3.0的安装可分为独立服务器安装和服务器场安装,前者是将所有的服务和应用安装在一台Server 上,后者则是…