利用CA私钥和证书创建中间CA

  本文借助实验环境下创建的root CA私钥和证书进一步创建中间CA。为了便于区分,我们将创建中间CA(intermediate CA)的CA称为根CA(root CA)。

  

  关于如何使用OpenSSL创建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 700 private
  # touch index.txt
  # echo 1000 > 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/intermediatecerts              = $dir/certsprivate            = $dir/privatecertificate        = $certs/intermediate.cert.pemprivate_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 444 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 444 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,赶紧用它去签发用户证书吧,虽然只是实验环境,别忘了进行必要的审核哦!
时间: 2024-10-14 20:55:19

利用CA私钥和证书创建中间CA的相关文章

半自动化创建CA和申请证书

1 概述 本文之所以称之为半自动化,是因为证书的申请并非日常工作,只是一段时间才需要申请,同时,在创建证书和办法证书的时候,有些参数需要根据用户的需求自己调整,如证书的有效时间,还有,是否给私钥加密等等,因为叫脚本设置为半自动化,手动输入一些参数,到达用户的需求.当然如果环境是固定,参数也是固定,有效时间固定,该脚本配合crontab也可以实现自动化申请和颁发等操作 CA中心又称CA机构,即证书授权中心(Certificate Authority ),或称证书授权机构.本文将介绍通过openss

加密解密基础、PKI及SSL、创建私有CA

基本概念: 加密作为数据安全保障的一种方式,它不是近代才产生的,历史已经相当久远:加密算法就是加密的方法. 数据加密解密: 数据加密的基本过程就是对原来为明文的文件或数据按特定算法进行处理,使其成为不可读的一段代码,通常称为"密文",使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取.阅读的目的.该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程 为什么需要对数据加密:加密在网络上的作用就是防止有用或私有化信息在网络上被拦截和窃取:比如个

https学习笔记三----OpenSSL生成root CA及签发证书

在https学习笔记二,已经弄清了数字证书的概念,组成和在https连接过程中,客户端是如何验证服务器端的证书的.这一章,主要介绍下如何使用openssl库来创建key file,以及生成root CA及签发子证书.学习主要参考官方文档:https://www.feistyduck.com/library/openssl-cookbook/online/ch-openssl.html# 一.openssl 简介 openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用.健壮.功能完备

Openssl建立CA,在组织内部基于ca的认证

Openssl建立CA,在组织内部基于ca的认证 1.给自己生成一对密钥 2.自签署证书 节点:1.生成密钥对   2.申城证书签署请求    3.把请求发送给CA CA: 1.验证请求者信息     2.签署证书 一.建立CA服务器 /etc/pki/CA/private用于存放CA的私钥 1.(umask 077:openssl genrsa -out /etc/pki/private/cakey.pem 2048)   生成密钥 2.req -x509 自签署证书,常用于CA自己签署自己的

Openssl 创建CA和申请证书

Openssl 创建CA和申请证书 =============================================================================== 概述: 本章是上篇加密解密技术的续,主要介绍Openssl创建CA.申请证书.办法证书的整个操作,具体内容如下: 创建私有CA: 给节点颁发证书: 吊销证书  详情查看上篇加密解密技术:http://1992tao.blog.51cto.com/11606804/1856438 ============

openssl创建CA、申请证书及其给web服务颁发证书

一.创建私有的CA   1)查看openssl的配置文件:/etc/pki/tls/openssl.cnf   2)创建所需的文件 touch /etc/pki/CA/index.txt   echo 01 >/etc/pki/CA/serial 3)CA自签证书生成私钥 cd /etc/pki/CA (umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) 4)生成自签名证书 openssl req -new -x50

使用OpenSSL创建私有CA、签署证书

OpenSSL工具包是Linux上SSL v2/v3和TLS v1协议的实现方式之一,并建提供了常用的加密解密功能. OpenSSL主要由三部分组成: 1:libcrypto:加密库,主要用来实现加密.解密的功能库 2:libssl:实现SSL服务器端功能会话库 3:openssl命令行工具:/usr/bin/openssl 本文仅是介绍如何通过openssl命令创建私有CA,以及如何申请证书.签署证书等过程. 证书主要包含的就是拥有者自身的属性信息.公钥以及CA的签名,核心就是用户的公钥.服务

创建私有CA以及证书颁发详细步骤

准备两台主机,一台作为CA,IP地址为172.16.125.126:另一台作为用户,即证书请求的主机,IP地址为172.16.125.125. 在主目录为CA的相关信息就是CA所在主机.而主目录为ssl的相关信息就是客户机,即要使用到证书的主机. 第一步:在准备创建私有CA的主机上创建私有密钥:         [[email protected] CA]# cd /etc/pki/CA         [[email protected] CA]# (umask 077;openssl gen

OpenSSH的应用和利用OpenSSL创建私有CA签证给httpd服务器开https

https http over ssl = https 443/tcp                ssl: v3                tls: v1 https:// SSL会话的简化过程                (1) 客户端发送可供选择的加密方式,并向服务器请求证书:                (2) 服务器端发送证书以及选定的加密方式给客户端:                (3) 客户端取得证书并进行证书验正:                    如果信任给其发