一、自建CA前准备

1.1 openssl的主配置文件;

在建立私有CA之前,先来了解一下openssl的主配置文件,其路径:/etc/pki/tls/openssl.cnf

用VIM查看此脚本,在[CA_default],可以查看CA很多默认选项,如下;

dir: CA的主目录

certs: 已颁发证书的存储位置

crl_dir:已吊销证书的存储位置

database:证书索引文件

new_certs_dir:新颁发证书的存储位置

certificate:CA证书文件

serial:证书颁发时的当前序列号

crlnumber:吊销证书的当前序列号

crl:当前使用的CRL

private_key: CA私钥

RANDFILE:私有随机数生成器文件

 

1.2 CA证书结构和认证协议标准……. x.509

版本号

序列号

签名算法ID

发行者的名称

有效期

主体名称

主体公钥

发行者唯一标识符

主体的唯一标识

扩展

发行者的签名


1.3思路

想构建CA必须要了解CA构建的情况,请先参照加密解密方面博客

简单思路如下;

构建私有CA:

生成私钥;

自签署证书;

(2)给节点发放证书:

节点申请证书:

生成私钥

生成证书签署请求

把请求文件发送给CA

(3)CA签署证书:

验正请求者的信息

签署证书

把签署好的证书发还给请求者

 

 

二、自建CA详细步骤;

2.1生成私钥

CA私钥的存储位置为/etc/pki/CA/private下一般存储名字为cakey.pem的名字权限只有属主有权限

操作步骤如下图所示:

                            Linux OpenSSL 自建CA_第1张图片
命令解释:

            umask077:设置生成的文件的权限,umask取反

            genrsa:生成私钥

            -out:私钥存放路径

            2048:2048字节计算(默认为2048--centos6.6)

 

2.2生成自签证书

自动在私钥中提取公钥放到自签证书中,用来验证所颁发证书的合法性。注意路径文件名:存放密钥库的目录为private,生成的自签文件存放在/CA目录下。

用vim进入配置文件,填写默认国家、城市等信息

[root@Burgess ~]# vim/etc/pki/tls/openssl.cnf

进入脚本后需要修改填写地方,如下图;

Linux OpenSSL 自建CA_第2张图片

保存退出后;

在命令行键入信息及剩余修改信息,如下图;

Linux OpenSSL 自建CA_第3张图片

注意:开始只出现显示国家名称的信息,需要按键回车显示下一行信息

命令解释:

    req:生成证书签署请求(PKCS#10格式)

          -new: 生成新的证书签署请求;

          -key /path/to/keyfile:私钥文件路径;

          -out /path/to/somefile: 生成的证书请求文件路径;

          -x509:专用于CA生成自签署证书时;

          -days 19890:证书有效时长;

 

Linux OpenSSL 自建CA_第4张图片

index.txt------索引文件用来匹配证书编号

serial----证书序列号存放文件;从01开始

补充:-newkey rsa:NUM  无需事先专门生成私钥文件,而是生成请求时直接生成私成私钥,并提取公钥用于证书;

国家、公司等信息,申请获得证书者需要与自签整数保持一致,否则不可用;自建CA修改后的脚本可以共享给其他节点

 

 

三、给节点发放证书:

3.1节点申请证书:在申请证书的主机上进行

3.1.1生成私钥

假设:用httpd服务,因此其位置为/etc/httpd/conf/certs/;所以,操作步骤如下:

Linux OpenSSL 自建CA_第5张图片

解析:Certs创建也可以在conf.d目录,用于存放私钥和证书

umask077;对权限取反

          genrsa:生成私钥

          httpd.key:自我命名的文件名,也可以以pem结尾

还可在命令行继续执行ll查看是否生成私钥

[root@burgess certs]# ll
total 4
-rw------- 1 root root 887 Dec 9 08:00 httpd.key


3.1.2生成证书签署请求

将生成的自签证书复制到本地;或者用U盘等复制途径

[root@burgess certs]#scp172.16.249.214:/etc/pki/tls/openssl.cnf /etc/pki/tls/
[root@burgess certs]#vim /etc/pki/tls/………….查看配置文件是否修改
[root@burgess certs]#openssl req –new –key httpd.key –outhttpd.csr –days 19890

此时显示国家、城市等信息,与自签证书一样操作

[root@burgess certs]#ls…….查看是否生成,显示如下
Httpd.csr  httpd.key


注意:其subject信息中地理位置与organization要与CA的保持一致

 

3.1.3把请求文件发送给CA

[root@burgesscerts]#
scp httpd.csr 172.16.249.214:/tmp/

或者用U盘复制给CA;也可以复制到除/tmp/外的文件里面

 

3.2 CA签署证书:在CA主机上执行如下命令

3.2.1验正请求者的信息及签署证书

[root@Burgess CA]#ls /tmp/…………….在CA主机上查看httpd.csr是否存在
[root@Burgess CA]# openssl ca -in /tmp/httpd.csr -out/etc/httpd.crt -days 19890……………………签署证书(默认时长为一年)
[root@Burgess CA]#cat index.txt……………..签署完成后可查看到此索引里面会生成信息
[root@Burgess CA]#cat serial………………….会更新显示下一个签署证书的号码


3.2.2把签署好的证书发还给请求者:

[root@Burgess CA]#scp /tmp/httpd.crt  172.16.100.6:/etc/httpd/conf/certs/……………..放到特定目录下即可,也可U盘复制到REQ-HOST
注意:每一个需要接收服务器发来的证书,并验正证书合法性的客户端主机,都必须拥有CA的证书才能进行;

 

3.2.3看证书中的相关信息

# openssl x509 -in /path/to/somefile.crt -noout-text|-subject|-serial


  

四、吊销证书

4.1 获取证书的serial (在证书持有端进行)

[root@burgesscerts]#openssl x509 -in httpd.crt -noout -serial-subject

x509:格式

    -in:要吊销的文件路径

    -noout:不输出任何额外信息

     -serial:生成的序列号

     -subjiect:输出subjiect的信息

 

4.2 CA

4.2.1验正请求者的信息

根据证书持有者提交的serial和subject信息来与index.txt数据库文件中的信息是否一致;

CA可以用cat查看/etc/pki/CA下的inndex.txt对应serial信息,电话核对是否与申请者的一致

 

4.2.2吊销证书

# openssl ca -revoke/etc/pki/CA/newcerts/SERIAL.pem
吊销后可使用cat查看index.txt,为R开头,表示revoked

解析:-revoke 吊销证书命令

     newcerts:刚生成的证书存放目录,为SERIAL.pem,若时间久了,则是/etc/pki/CA/certs目录下

 

4.2.3 生成吊销证书的编号(如果是第一次吊销)

    # echoSERIAL > /etc/pki/CA/crlnumber


4.2.4更新证书吊销列表

# cd /etc/pki/CA/crl/
# openssl ca -gencrl -out thisca.crl

thisca.crl为当前CA的吊销列表,可以自己定义文件名称

注意:查看crl文件的方法;

# openssl crl -in /path/from/somefile.crl -noout–text……..
输出吊销列表至text

 

五、验正证书:

1、使用CA的公钥的解密证书的数字签名;

2、使用同样的单向加密算法提取证书文件特征码,对比解密的结果;

3、验正主体名称与请求的服务器地址是否相同;



六、CA管理常用命令语法格式;

(1)查看颁发了多少证书:

[root@Burgess CA]# cat /etc/pki/CA/serial………….
会显示serial

(2)查看颁发的证书的记录:

[root@Burgess CA]# ls /etc/pki/CA/newcerts/……….
显示SERIAL.pem

(3)查看待签发证书目录

[root@Burgess CA]#ls /etc/pki/csr……………..
显示httpd.csr

(4)查看签好的证书目录

[root@Burgess CA]#ls /etc/pki/certs…………….httpd.crt

(5)查看证书的序列号和subjiect的信息

[root@Burgess CA]# cat /etc/pki/index.txt……………….V
开头的信息

(6)查看吊销列表文件

# openssl crl -in /path/from/somefile.crl -noout–text……..CA
输出吊销列表至text,其他用户可以查看此文档


七、常见文件名称及后缀;

Linux OpenSSL 自建CA_第6张图片


 

x.509:https://access.redhat.com/documentation/en-US/Red_Hat_Certificate_System/8.0/html/Admin_Guide/Standard_X.509_v3_Certificate_Extensions.html

     http://www.cypherpunks.to/~peter/T2a_X509_Certs.pdf