https网络编程——使用openssl库自建根证书

2023-11-01

参考:如何自建根证书?使用openssl库自建根证书带图详解
地址:https://qingmu.blog.csdn.net/article/details/108217572?spm=1001.2014.3001.5502

根证书的普通用途

根证明普通的情况用途为对标志和发行传递的证明,再标志和问题终端证明由传递的证明(服务器,客户端)。

AWS IOT Device C SDK 使用(ps阿里云一机一密、一型一密、公钥、私钥、CA、根证书)

自建根证书步骤

在自建根证书之前需要安装openssl

sudo apt-get install openssl

1、创建一个目录,存放所有证书有关资料

ca的路径可自选,并在ca路径下创建root文件夹,用来存放根证书

命令:

mkdir   ca
mkdir   ca/root

创建ca文件夹,存放所有有关文件
在这里插入图片描述
创建root文件夹存放根证书
在这里插入图片描述

2、进入根证书目录,创建相关目录和档案

2.1、进入根证书目录

cd ca/root

2.2、创建相关目录

  • private :存放根证书的私钥
  • cert :存放根证书
  • signed_certs :放置的根证明签了字和被发布的证明副本。
mkdir private cert signed_certs

在这里插入图片描述

2.3、更改private目录存取权限

chmod 700 private

在这里插入图片描述

2.4、创建index.txt文件

每次签署和发行证明OpenSSL的根证明可能自动地更新这个文件建立index.txt,这个文件能为纪录使用根证明签署和发布证明纪录。(具体没什么用,但必须要有)

touch index.txt

在这里插入图片描述

2.5、建立serial

建立serial,并在文件中填入0001,被签发的证书都会有序号和位置,记录这份证明在早先签署的和发布的单位签字并且发布的证明号码,这个文件能使用为记录签署和发布证明号码的根证明,每次签署和发行证明OpenSSL的根证明可能自动地更新这个文件。(具体没什么用,但必须要有)

echo 0001 > serial

在这里插入图片描述

3、填写OpenSSL

填写OpenSSL的配置文件,文件名是openssl_root_ca.cnf,并放置在root目录下

在这里插入图片描述

填充内容

使用vim打开,然后复制进去即可

[ ca ]
default_ca = CA_default

[ CA_default ]
# 放置相关的文件和目录.
dir           = /home/qingmu/works/ca/root
certs         = $dir/cert
new_certs_dir = $dir/signed_certs
database      = $dir/index.txt
serial        = $dir/serial
RANDFILE      = $dir/private/.rand

# 放置私钥和证书的路径.
private_key   = $dir/private/root_ca.key.pem
certificate   = $dir/cert/root_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

[ root_ca ]
# 签发根证书时使用
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign

[ intermediate_ca ]
# 签发和发布时使用
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true, pathlen:0
keyUsage = critical, digitalSignature, cRLSign, keyCertSign

在这里插入图片描述

4、生成私钥

在private目录下生成私钥, 文件名时 root_ca.key.pem


openssl genrsa -aes256 -out private/root_ca.key.pem 4096

提示输入信息:

会提示输入私钥使用的密码,例如:alice123
(密码不会显示)
Enter pass phrase for private/root_ca.key.pem:alice123
再次输入密码:
Verifying - Enter pass phrase for private/root_ca.key.pem:alice123

在这里插入图片描述

5.用私钥来签发证书

文件名是root_ca.cert.pem

openssl req -config openssl_root_ca.cnf -new -x509 -days 7300 -sha256 -extensions root_ca -key private/root_ca.key.pem -out cert/root_ca.cert.pem

会提示输入一些信息:

# 会提示输入根证书的私钥密码, 也就是 alice123
Enter pass phrase for private/root_ca.key.pem:alice123
# 接着需要输入根证书拥有者的信息.
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 个字母, 例如 Taiwan = TW, Unit State = US.
Country Name (2 letter code) []:TW
# 所在的州或省.
State or Province Name []:Taiwan
# 所在的城市.
Locality Name []:Taipei
# 所在的公司.
Organization Name []:Alice Ltd
# 所在的公司的单位.
Organizational Unit Name []:Alice Ltd Certificate Authority
# 证书名称
Common Name []:Alice Ltd Root CA
# 邮箱.
Email Address []:alice@local

在这里插入图片描述
把证书的权限改为只读权限

chmod 444 cert/root_ca.cert.pem

在这里插入图片描述

6、检查生成的根证书是否正确

openssl x509 -noout -text -in cert/root_ca.cert.pem

在这里插入图片描述

7、信息正确,自建根证书完成

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

https网络编程——使用openssl库自建根证书 的相关文章

随机推荐

  • JDK8辅助学习(四):Stream流 collect() 方法的详细使用介绍

    Stream流 collect 方法的使用介绍 1
  • linux配置jdk,jenkins,python3,git

    一 安装jdk 自动化测试的主要目的是为了执行回归测试 当然 为了模拟真实的用户操作 一般都是在UAT或者生产环境进行回归测试 为了尽量避免内网和外网解析对测试结果的影响 将自动化测试服务部署在外网的服务器是比较好的选择 今天申请的测试服务
  • java中instanceof用法

    java 中的instanceof 运算符是用来在运行时 color red b 指出对象是否是特定类的一个实例 b color instanceof通过返回一个布尔值来指出 这个对象是否是这个特定类或者是它的子类的一个实例 用法 resu
  • 马尔科夫区制转换matlab,马尔科夫区制转移混频向量自回归(MS-MF-VAR)模型及其Gauss实现...

    导读 马尔科夫区制转移向量自回归模型可以进行实时 real time 预测分析 扩展容纳混合频率和锯齿数据 可以看作是MF VAR模型的马尔科夫区制转移 Markov switching 扩展 从经验上讲 该模型能够非常准确地捕捉到美国的经
  • Python3.0 基础系列教程(目录)

    准备写一篇python的系列教程 目录暂定如下 如果有更好的建议 麻烦下方留言 如无意外 大约一周2 3篇 敬请期待 环境安装篇 1 下载并安装Python3 0 2 第一个python程序 3 安装集成开发环境ide 基础知识篇 基本数据
  • go:chan分为阻塞和非阻塞

    一句话总结 ch make chan int 由于没有缓冲发送和接收需要同步 ch make chan int 2 有缓冲不要求发送和接收操作同步 1 无缓冲时 发送阻塞直到数据被接收 接收阻塞直到读到数据 package main imp
  • 【华为OD机试真题】单核CPU任务调度

    单核CPU任务调度 考察的知识的点就一个优先队列 队列排序 题目描述 现在有一个CPU和一些任务需要处理 已提前获知每个任务的任务D 优先级 所需执行时间和到达时间 CPU同时只能运行一个任务 请编写一个任务调度程序 采用 可抢占优先权调度
  • Scala 的安装教程

    Scala 语言可以运行在Window Linux Unix Mac OS X等系统上 Scala是基于java之上 大量使用java的类库和变量 使用 Scala 之前必须先安装 Java gt 1 5版本 Mac OS X 和 Linu
  • git 提交新的工程

    git cmd exe 环境 windows git 提交新的工程 查看版本号 E software Git gt git version git version 2 15 1 windows 2 添加用户配置 E software Git
  • Error: EBUSY: resource busy or locked, lstat ‘D:\DumpStack.log.tmp‘

    问题 vue项目启动成功后报错 Error EBUSY resource busy or locked lstat D DumpStack log tmp 解决 1 npm cache clean force 2 npm install
  • 关于Apache/Tomcat/JBOSS/Nginx/lighttpd/Jetty等一些常见服务器的区别比较和理解

    今天是个很丰富的日子 早上一上班 第一个听到的惊爆消息就是楷子得了肠胃炎 一大早去医院挂水了 随后风胜和笑虎也没来 后来得知他们俩去去华星现代产业园参加培训 内容是关于Apache与Nginx的 于是乎 我非常感兴趣地查了一下培训用的PPT
  • C#按钮事件中有循环,用另一个按钮控制停止,暂停,继续程序执行

    首先在窗体上有 lable1 运行显示 button1 开始 button2 暂停和继续 button3 停止 窗体上还放Timer控件timer1 代码实现如下 using System using System Collections
  • vue+elementUI table表格嵌套表单,功能包含联动下拉框、动态增加行

    一 需求说明 vue elementUI table表格里嵌套表单 支持动态增加一行和删除一行 含checkbox复选框 联动下拉框 不同的活动名称 所对应的活动选项下拉框的值不同 针对不同的选项 值的表现形式也要发生对应的变化 如 日期形
  • An attempt was made to call a method that does not exist. The attempt was made from the following lo

    APPLICATION FAILED TO START Description An attempt was made to call a method that does not exist The attempt was made fr
  • springboot学习(三)——使用HttpMessageConverter进行http序列化和反序列化

    以下内容 如有问题 烦请指出 谢谢 对象的序列化 反序列化大家应该都比较熟悉 序列化就是将object转化为可以传输的二进制 反序列化就是将二进制转化为程序内部的对象 序列化 反序列化主要体现在程序I O这个过程中 包括网络I O和磁盘I
  • 链塔智库

    链塔智库整理最近一周内区块链相关政策 业内动态 人物观点 为大家梳理呈现各个领域的最新发展 目录 一 各地政策要闻 四川 探索建立基于区块链技术的数字资产交易平台 首个区块链领域国家标准在成都举行首场征求意见会 重庆出台优化工业园区规划建设
  • 云计算概念详解

    1 云计算的定义 1 云计算是一种能够通过网络以便利的按需的方式获取云计算资源 网络 服务器 存储 应用和服务 的模式 2 这些资源来自一个共享的 可配置的资源池 并能够快速获取和释放 提供资源的网络称为云 3 云模式能够提高可用性 4 云
  • IDEA下载与安装,保姆级教程

    这里写自定义目录标题 1 搜索idea 2 选择官方网站 3 官网进入下载页面 4 版本选择问题 5 Ultimate和Community对比 6 下载 7 安装 1 搜索idea 2 选择官方网站 以前idea的官网后面有官网俩字 现在没
  • Open NMT-py 玩具模型使用说明

    前排提示 本文仅适合纯萌新玩家 算是官方指南的补档 大佬请直接关闭网页 避免浪费时间 截至到2023 3 15 最新的OpenNMT py环境要求 Python gt 3 7 PyTorch gt 1 9 0 如果是老版本的OpenNMT
  • https网络编程——使用openssl库自建根证书

    参考 如何自建根证书 使用openssl库自建根证书带图详解 地址 https qingmu blog csdn net article details 108217572 spm 1001 2014 3001 5502 目录 根证书的普通