创建私有CA服务器

偶尔善良 提交于 2020-01-02 03:14:44

 

什么是证书?

  它是用来证明某某东西确实是某某东西的东西。通俗地说,证书就好比公章。通过公章,可以证明相关文件确实是对应的公司发出的。

  理论上,人人都可以找个证书工具,自己做一个证书。

什么是CA?

  CA全称Certificate Authority,也叫“证书授权中心”。它是负责管理和签发证书的第三方机构。

什么是CA证书?

  CA证书,就是CA颁发的证书。

  前面说了,人人都可以找工具制作证书。但是制作出来的证书是没用的,因为不具备权威性。

证书的签发过程

a.服务方 S 向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证

b.CA 通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等

c.如信息审核通过,CA 会向申请者签发认证文件-证书。

证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书序列号等信息的明文,同时包含一个签名

签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA 的私钥对信息摘要进行加密,密文即签名

d.客户端 C 向服务器 S 发出请求时,S 返回证书文件

e.客户端 C 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA 的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即公钥合法;

f.客户端然后验证证书相关的域名信息、有效时间等信息

g.客户端会内置信任 CA 的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA 的证书,证书也会被判定非法。

在这个过程注意几点

1.申请证书不需要提供私钥,确保私钥永远只能服务器掌握

2.证书的合法性仍然依赖于非对称加密算法,证书主要是增加了服务器信息以及签名

3.内置 CA 对应的证书称为根证书,颁发者和使用者相同,自己为自己签名,即自签名证书

证书=公钥+申请者与颁发者信息+签名

CA证书常用于https (SSL加密)

 

 

Centos 7为服务器

Centos 6为申请CA证书的客户机

一、搭建一台CA服务器

CA证书根目录/etc/pki/CA

1、生成私钥

()代表在子bash中运行,目的是为了不改变当前Shell中的umask值

genrsa    生成私钥

-out    私钥的存放路径    cakey.pem   为密钥名需与配置文件中一致

2048    密钥长度

 2、自签证书

req 生成证书签署请求

-x509 生成自签署证书

-days n 证书的有效天数

-new 新请求

-key /path/to/keyfile 指定私钥文件

-out /path/to/somefile 输出文件位置

3、创建CA服务器所需文件

touch /etc/pki/CA/index.txt 生成证书索引数据库文件

echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号

 

 二、客户机申请证书

1、生成私钥

2、生成证书请求

 

标红的三项须和CA服务器一致

证书申请一般通用csr

3、把签署请求文件发送给CA服务器

 

三、CA服务器签署证书

 1、在CA服务器上签署证书

2、发送给客户机申请者

 

 四、吊销证书

(一)节点请求吊销

1、获取证书serial

x509 证书格式

-in 要吊销的证书

-noout 不输出额外信息

-serial 显示序列号

-subject 显示subject信息

(二)CA验证信息

1、确认提交的serial和subject信息与index.txt文件中的信息是否一致

2、吊销证书

-revoke 删除证书

查看被吊销的证书列表

3、指定吊销证书的编号(如果是第一次吊销)

4、更新证书吊销列表

-gencrl 生成证书吊销列表

5、查看crl文件内容

-text 以文本形式显示

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!