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

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

目录

  • 根证书的普通用途
  • 自建根证书步骤
    • 1、创建一个目录,存放所有证书有关资料
    • 2、进入根证书目录,创建相关目录和档案
      • 2.1、进入根证书目录
      • 2.2、创建相关目录
      • 2.3、更改private目录存取权限
      • 2.4、创建index.txt文件
      • 2.5、建立serial
    • 3、填写OpenSSL
    • 4、生成私钥
    • 5.用私钥来签发证书
    • 6、检查生成的根证书是否正确
    • 7、信息正确,自建根证书完成

根证书的普通用途

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

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.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[ 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、信息正确,自建根证书完成

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

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

相关文章

angular接口传参

1、service文件 创建xxx.service.ts文件 import { Injectable, Inject } from angular/core;import { Observable } from rxjs;import { map } from rxjs/operators;import { HttpClient } from angular/common/http;Injectable({ providedIn: root})export class ErrorCond…

lvm-snapshot:基于LVM快照的备份

续 lvm-snapshot:基于LVM快照的备份之准备工作Attention,Please! 重头戏开始啦3.基于LVM快照的备份lvm-snapshot:基于LVM快照的备份(1)事务日志跟数据文件必须在同一个卷上;(2)创建快照卷之前,要请求MySQL的全局锁;在快…

美玉待琢——《一本写满评论的艾泽拉斯收藏指南》

http://bbs.ngacn.com/read.php?tid701056&fpage1 转载于:https://www.cnblogs.com/Evanescence/archive/2006/10/11/526396.html

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

参考:如何建立利用根证书(凭证)签发建立中继证书(凭证)详解 地址:https://qingmu.blog.csdn.net/article/details/108221568?spm1001.2014.3001.5502 目录在建立中继之前需要自建根证书建立根证书的具体步…

NURBS曲线与曲面

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

IPTV网络电视

IPTV即交互式网络电视,是一种利用宽带网的基础设施,以计算机(PC)或“普通电视机+网络机顶盒(TV+IPSTB)”为主要终端设备,向用户提供视频点播、Internet访问、电子邮件、游…

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…

解析 XML

解析 XML Firefox 可以自动的将当前页面解析为 DOM(文本对象模型), 您也可以通过 XML 语句(可以是您自己编写的,也可以是您从远端主机得到的)来创建DOM。 例子:将一个字符串解析为 XML var xm…

BZOJ4912 SDOI2017天才黑客(最短路+虚树)

容易想到把边当成点重建图跑最短路。将每条边拆成入边和出边,作为新图中的两个点,由出边向入边连边权为原费用的边。对于原图中的每个点,考虑由其入边向出边连边。直接暴力两两连边当然会被卡掉,注意到其边权是trie上lca的深度&am…

网页乱码解决小心得

出现乱码需要检查的项目:数据库编码、文件本身的字符集、html解析的字符集,如若上述项目编码一致仍然出现乱码,查看一下浏览器的编码,如果和设置的不一样说明上述设置有部分未成功,可以尝试使用header(&…

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

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

分布式一致性协议Raft,以及难搞的Paxos

https://blog.csdn.net/colorant/article/details/73887706转载于:https://www.cnblogs.com/wzj4858/p/10350363.html

ffmpeg的新东东:AVFilter

http://blog.csdn.net/niu_gao/article/details/7219641 利用ffmpeg做图像的pixel format转换你还在用libswscale吗?嘿嘿,过时啦! ffmpeg中有了新东西:libavfilter.使用它,可以完全代替libswscale,并且可以自动完成一些复杂的转换操作呢.libavfilter啊,用了都说好!但就是太复杂…

https网络编程——HTTPS中SSL具体通信过程

参考:HTTPS中SSL是如何进行通信的? 地址:https://qingmu.blog.csdn.net/article/details/108277887?spm=1001.2014.3001.5502 目录 1、https中SSL通讯的前置准备工作2、openssl库相关函数介绍2.1、重要参数讲解3、SSL框架图4、demo4.1、sslserver.c4.2、sslclient.c1、http…

想跟着微软赛跑会累死你

当微软在推出ASP.NET1.1时,就发布了ASP.NET2.0测试版,当微软发布ASP.NET2.0时,又发布了ASP.NET AJAX测试版,当然也有不少人都知道,微软又有准备推出ASP.NET3.0版本的打算. 每一个版本比上一个版本都会有许多应用上的提升,一个重要的问题是:我们需要不需要和微软赛跑? 微软…

2019.2.4 nfs原理和安装实验

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

基本 XAML 语法指南

我们介绍了 XAML 语法规则,以及用于描述 XAML 语法中存在的限制或选项的术语。当出现以下情况时你会发现本主题很有用:不熟悉 XAML 语言的使用,希望加强对术语或某些语法部分的理解,或者对 XAML 语言的工作原理感兴趣,…

https网络编程——如何做web的访问控制机制(ACL)

参考:如何做web的访问控制机制(ACL)? 地址:https://qingmu.blog.csdn.net/article/details/108286660?spm1001.2014.3001.5502 目录ACL含义例子具体实现ACL含义 对于一个服务器来说,我们不能让随随便便一…

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

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