利用CA私钥和证书创建中间CA
本文借助实验环境下创建的root CA私钥和证书进一步创建中间CA。为了便于区分,我们将创建中间CA(intermediate CA)的CA称为根CA(root CA)。
中间CA是root CA的代理,其证书由root CA签发,同时中间CA能够代表根CA签发用户证书,由此建立起信任链。
创建中间CA的好处是即使中间CA的私钥泄露,造成的影响也是可控的,我们只需要使用root CA撤销对应中间CA的证书即可。此外root CA的私钥可以脱机妥善保存,只需要在撤销和更新中间CA证书时才会使用。
我们基于已经创建的root CA创建自己的中间CA,与前文保持一致,假定证书根目录为/etc/pki/CA/目录,将中间CA的证书相关信息存放在自己的目录中,为了体现信任链的传递逻辑,在/etc/pki/CA/下创建对应目录即可,这里假设中间CA的证书目录是/etc/pki/CA/intermediate/。
初始化证书目录的过程与创建root CA时并无二致:
# mkdir /etc/pki/CA/intermediate
# cd /etc/pki/CA/intermediate
# mkdir certs crl newcerts private
# chmod private
# touch index.txt
# echo > serial
接下来创建中间CA的私钥,采用AES-256算法加密中间CA的私钥,中途会让我们输入加密密钥,最后修改中间CA的私钥访问权限:
# cd /etc/pki/CA
# openssl genrsa -aes256 -out \
intermediate/private/intermediate.key.pem 4096
Enter pass phrase for intermediate.key.pem: SECRET
Verifying - Enter pass phrase for intermediate.key.pem: SECRET
# chmod 400 intermediate/private/intermediate.key.pem
中间CA要向root CA申请公钥证书,就要首先产生一个CSR(证书签名请求,Certificate Signing Request都有作用)格式的请求文件,将其发送给root CA后等待其对中间CA的审查。
将创建root CA时使用的配置文件拷贝到中间CA证书目录下,该配置文件在生成CSR文件和后续签发用户证书时都有用。
创建并编辑intermediate_CA.cnf:
# cp /etc/pki/CA/root_CA.cnf \
/etc/pki/CA/intermediate/intermediate_CA.cnf
# cd /etc/pki/CA/intermediate
# vim intermediate_CA.cnf
...
[ CA_default ]
dir = /etc/pki/CA/intermediate
certs = $dir/certs
private = $dir/private
certificate = $certs/intermediate.cert.pem
private_key = $private/intermediate.key.pem
今后我们每次使用中间CA创建新的证书时,以”-config /etc/pki/CA/intermediate/intermediate_CA.cnf“ 的形式告诉OpenSSL中间CA的信息。
intermediate_CA.cnf默认申请的有效期是365天,如果想要修改这个时长,可以在[ CA_default ]的"default_days"字段进行修改。
接下来就可以生成CSR文件了:
# cd /etc/pki/CA/intermediate
# openssl req -config intermediate_CA.cnf \
-sha256 -new -key private/intermediate.key.pem \
-out certs/intermediate.csr.pem
随后系统会要求我们输入中间CA的私钥密码,设置中间CA的一些身份信息等等,注意”Organization Name“一项一定要与root CA时设置的相同。
正确输入中间CA的身份信息后我们就得到了中间CA的CSR。
接下来我们用root CA同意中间CA的请求,因为我们将使用root CA的私钥签名中间CA的证书,这时系统会要求我们输入root CA的私钥密码,选择签名证书如下:
# cd /etc/pki/CA
# openssl ca \
-config root_CA.cnf \-extensions v3_ca -notext -md sha256 \
-in intermediate/certs/intermediate.csr.pem \
-out intermediate/certs/intermediate.cert.pem
Using configuration from root_CA.cnf
Enter pass phrase for /etc/pki/CA/private/ca.key.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
...
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
# chmod intermediate/certs/intermediate.cert.pem
到此我们已经为中间CA生成了公钥证书,下面我们可以验证一下该证书的真实性:
# openssl verify -CAfile /etc/pki/CA/certs/ca.cert.pem \
/etc/pki/CA/intermediate/certs/intermediate.cert.pem /etc/pki/CA/intermediate/certs/intermediate.cert.pem: OK
系统显示"OK",说明我们颁发给中间CA的证书是有效的。
至此我们可以采取类似中间CA获得证书的方式为普通客户颁发证书了,只不过这时我们以中间CA的身份进行。由于中间CA的证书也是经过上一级CA认证的,所以以后验证用户证书时必须将完整的CA证书链提供给OpenSSL。
所以我们的工作还没有完成,接下来就构造这样的CA证书链,事实上非常简单,将root CA的证书追加到中间CA证书后即可。生产环境下各级CA的证书都是公开的,因此将其依次追加在一起生成一个文件,就是我们所说的”CA证书链“了。
# cd /etc/pki/CA
# cat intermediate/certs/intermediate.cert.pem \
certs/ca.cert.pem > intermediate/certs/ca-chain.cert.pem
# chmod intermediate/certs/ca-chain.cert.pem
今后想要验证由我们的中间CA颁发的证书,比如:www.example.com.cert.pem,这样即可:
# openssl verify -CAfile /etc/pki/CA/intermediate/certs/ca-chain.cert.pem \
/etc/pki/CA/intermediate/certs/www.example.com.cert.pem /etc/pki/CA/intermediate/certs/www.example.com.cert.pem: OK
至此,我们已经成功创建了中间CA,赶紧用它去签发用户证书吧,虽然只是实验环境,别忘了进行必要的审核哦!
利用CA私钥和证书创建中间CA的更多相关文章
- 自签名证书和私有CA签名的证书的区别 创建自签名证书 创建私有CA 证书类型 证书扩展名【转】
自签名的证书无法被吊销,CA签名的证书可以被吊销 能不能吊销证书的区别在于,如果你的私钥被黑客获取,如果证书不能被吊销,则黑客可以伪装成你与用户进行通信 如果你的规划需要创建多个证书,那么使用私有 ...
- OpenSSL - 利用OpenSSL自签证书和CA颁发证书
秘钥操作 这个命令会生成一个1024/2048位的密钥,包含私钥和公钥. openssl genrsa -out private.key 1024/2038 ( ...
- https学习笔记三----OpenSSL生成root CA及签发证书
在https学习笔记二,已经弄清了数字证书的概念,组成和在https连接过程中,客户端是如何验证服务器端的证书的.这一章,主要介绍下如何使用openssl库来创建key file,以及生成root C ...
- OpenSSL生成root CA及签发证书
一.openssl 简介 openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用.健壮.功能完备的工具套件,用以支持SSL/TLS 协议的实现.官网:https://www.openss ...
- 加密解密(2)*客户端,服务器,CA(Certificate Authority),公钥,私钥,证书,签名,验证
加密解密(2)*客户端,服务器,CA(Certificate Authority),公钥,私钥,证书,签名,验证 各角色比喻 客户端:通常为请求方,要验证服务器的身份. 服务器:通常为响应方,有时也要 ...
- 实现CA证书创建及客户端申请证书
author:JevonWei 版权声明:原创作品 CA证书的相关文件路径 openssl配置文件/etc/pki/tls/openssl.cnf /etc/pki/tls/openssl.cnf C ...
- 使用 OpenSSL 创建私有 CA:3 用户证书
OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 在前文&l ...
- 使用 OpenSSL 创建私有 CA:2 中间证书
OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 本文将在前 ...
- 使用 OpenSSL 创建私有 CA:1 根证书
OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 OpenS ...
随机推荐
- Python 操作redis有序集合(sorted set)
#coding:utf8 import redis r =redis.Redis(host=") 1.Zadd Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中.如果某个成员 ...
- 采用alluxio提升MR job和Spark job性能的注意点
1. 介绍 2. 实验说明 2.1 实验环境 2.2 实验方法 2.3 实验负载 3. MapReduce on alluxio 3.1 读取10G文件(1G split) 3.2 读取20G文件(1 ...
- IIS7 MVC 403 禁止访问:访问被拒绝
- JAVA-JSP内置对象之session范围
相关资料:<21天学通Java Web开发> session范围1.就是指客户浏览器与服务器一次会话范围内,如果和服务器断开连接,那么这个属性也就失效了.2.通过使用session的set ...
- PHP重载以及Laravel门面Facade
目录 重载的概念 魔术方法中的重载 属性重载 方法重载 Laravel中的Facade 扩展 谈谈__invoke Laravel提供了许多易用的Facade,让我们用起来特步顺手,那么这些Facad ...
- 微服务之springCloud-docker-feign-hystrix(六)
简介 上一节我们讨论feign的配置,这节我们讨论一下,feign+hystrix调用生产者时,进行容错处理 一.创建模块(microservice-consumer-movie-feign-with ...
- 《5天学会卡西欧fx-5800p之实操视频教程(初级)》目录和我的工作室现场曝光
很多人给我讲,想让我录制一份卡西欧fx-5800p的视频教程,我也一直在准备,准备了半年,录制视频真的不是件容易的事,条件有限,而且工作也很忙,中途还会有想放弃的念头,真的是花费了我很多的心血,但不管 ...
- RabbitMQ安装 ubuntu12.04LTS
RabbitMQ安装需要安装较多的依赖包,之前如果安装过RabbitMQ-server必须要先彻底删除. 重装的ubuntu系统(ubuntu server)的开发环境几乎是裸的,再重新编译安装erl ...
- C语言 · 企业奖金发放
算法提高 企业奖金发放 时间限制:1.0s 内存限制:512.0MB 企业发放的奖金根据利润提成.利润低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10 ...
- zeroMQ消息传送的是一个固定长度的二进制数据,而TCP是通过字节流,那二进制流和字节流有啥区别?
1.TCP是面向连接的,它在UDP数据包的基础上增加了重传.流控等一系列机制,封装成基于字节流的传输层通讯协议.使用字节流,应用有点像语音或视频聊天,粒度小到一个字节,双向同时传输,连绵不断. Zer ...