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

2023-11-10

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

目录

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

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

需要安装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.pem

default_md    = sha256

name_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 GMT
    Not 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、中继凭证建立完成

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 二叉树的相关列题!!

    对于二叉树 很难 很难 笔者也是感觉很难 虽然能听懂课程 但是 对于大部分的练习题并不能做出来 所以感觉很尴尬 因此 笔者经过先前的那篇博客 已经开启了大脑奇迹 现在还热乎着 刚刚的更文 二叉树讲解https blog csdn net w
  • OC学习篇之---类的延展

    前一篇文章我们介绍了类的类目概念和使用 http blog csdn net jiangwei0910410003 article details 41775329 那么这篇文章我们继续来介绍一下OC中的一个特性 延展 其实说白了 延展就是
  • 有关EMQX桥接的配置工作

    前言 桥接是一种连接多个 EMQ X 或者其他 MQTT 消息中间件的方式 不同于集群 工作在桥接模式下的节点之间不会复制主题树和路由表 桥接模式所做的是 按照规则把消息转发至桥接节点 从桥接节点订阅主题 并在收到消息后在本节点 集群中转发
  • Unity - 微信小游戏

    总参考 Unity WebGL 微信小游戏适配方案 公测 安装与使用 下载 Unity插件 并导入至游戏项目中 版本更新请查看更新日志 请查阅推荐引擎版本 安装时选择WebGL组件 最终选择Unity2021 2 5f1c1InstantG
  • 实战项目:图书管理系统介绍

    本文详细的介绍了实战项目之一的图书管理系统 下载后可以直接使用 也可以直接用于毕业设计 本系统前端使用的框架是vue2 elementUI 后端使用的框架为springboot mybatis maven 数据库使用的是myql数据库 安全
  • 【我不知道的css】巧用flex:0实现上方图片下方文字效果

    我不知道的css 巧用flex 0实现上方图片下方文字效果 要求 代码 原理 要求 要求使用flex布局实现下图所示的效果 容器内部左边为图片和文字 图片在上 文字在下 图片大小不一 文字长度不一 但要求文字根据图片的宽度自动换行 代码 d
  • java mysql教程基于_SpringBoot入门教程(五)Java基于MySQL实现附近的人

    附近的人 这个功能估计都不陌生 与之类似的功能最开始是在各大地图应用上接触过 比如搜附近的电影院 附近的超市等等 然而真正让附近的人火遍大江南北的应该是微信 附近的人 这个功能 记得微信刚出的时候 坊间还有一句 寂寞女聊玩微信 寂寞男人搜附
  • spring security 入门与理解

    1 pom加载
  • seo积分排名系统源码_SEO快速排名系统操作手法以及细节

    SEO快速排名是目前我国SEO行业最热门的话题之一 总之 所有的快速行都可以用两个词来解释 那就是点击 任何行业 包括SEO 都可以使用的原因也是一样的 例如 目前我国有大量的快速排序系统 这种快速排序系统由于百度的雷声算法而受到不同程度的
  • 使用阿里云服务器安装宝塔面板搭建网站教程(图文全流程)

    阿里云服务器安装宝塔面板教程 云服务器吧以阿里云Linux系统云服务器安装宝塔Linux面板为例 先配置云服务器安全组开放宝塔所需端口8888 888 80 443 20和21端口 然后执行安装宝塔面板命令脚本 最后登录宝塔后台安装LNMP
  • 6 款 超好用的 Python 时间库

    开源最前线 ID OpenSourceTop 链接 https opensource com article 18 4 python datetime libraries 写过Python程序的人都知道 Python日期和时间的处理非常繁琐
  • TIDB 详解

    TIDB是什么 TIDB 受谷歌Spanner和F1的论文启发的new sql数据库 这类数据库不仅具有NoSQL对海量数据的存储管理能力 还保持了传统数据库支持ACID和SQL等特性 同类数据库还包括巨杉数据库 TiDB的原理与实现 Ti
  • 嵌入式web服务器Boa的移植

    Boa是一种非常小巧的Web服务器 其可执行代码只有大约60KB左右 作为一种单任务Web服务器 Boa只能依次完成用户的请求 而不会fork出新的进程来处理并发连接请求 但Boa支持CGI 能够为CGI程序fork出一个进程来执行 Boa
  • 考研数据结构--第二章:线性表

    系列索引 2023考研王道数据结构知识梳理 文章目录 1 线性表 1 1 线性表定义 1 2 线性表的特点 1 3 线性表的基本操作 2 顺序表 2 1 顺序表的定义 2 2 顺序表的实现 2 2 1 顺序表的静态分配 2 2 1 1 局限
  • Div点击显示再次点击隐藏

    1 先上效果 这是默认显示的时候 这是再点击隐藏的时候 下方代码贴出 有需要的C V直接浏览器查看
  • 【Unity基础】Input.GetAxis()函数

    根据输入设备 参数分为两类 一 触屏类 1 Mouse X 鼠标沿屏幕X移动时触发 2 Mouse Y 鼠标沿屏幕Y移动时触发 3 Mouse ScrollWheel 鼠标滚轮滚动是触发 二 键盘类 1 Vertical 键盘按上或下键时触
  • windows系统下,如何使用win+R快速打开安装的应用

    windows系统下 如何使用win R快速打开安装的应用 随着工作学习时间的增加 我们的桌面就会出现越来越多的文件和应用快捷方式 使得桌面变得很杂乱 有时候需要打开某个应用的时候就可能需要花费时间来找 那我们如何快速打开我们需要的应用呢
  • Layout的放大和缩小效果例子(ScaleAnimation)

    个Layout从中心放大和缩小的例子 直接上代码 1 ScaleDialog java文件 Java代码 package cn com import android app Activity import android graphics
  • TypeError: ‘function‘ object is not subscriptable

    关于错误 TypeError function object is not subscriptable 错误原因 get dummies函数 写成了
  • https网络编程——如何建立利用根证书(凭证)签发建立中继证书(凭证)详解

    参考 如何建立利用根证书 凭证 签发建立中继证书 凭证 详解 地址 https qingmu blog csdn net article details 108221568 spm 1001 2014 3001 5502 目录 在建立中继之