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曲面都不能精确表示出抛物面外的二次…

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日提到了这个问题,我们一起来看看正确答案吧。问题:斑马线和斑马有什么关系?答案:横线酷似斑马纹答案解析…

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

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

js操作indexedDB增删改查示例

js操作indexedDB增删改查示例 if (indexedDB in window) {// 如果数据库不存在则创建,如果存在但是version更大,会自动升级不会复制原来的版本var req indexedDB.open("TestDB", 1);req.onupgradeneeded function(e) {var db req.result;//…

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

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

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

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