使用pki的ca颁发证书需要交使用费,而这时又不想花钱,就可以自建ca。


密钥颁发机构

CA:Certification Authority 数字证书认证中心,解决数字证书所有者公开的公钥身份确认。一般是可信任的第三方机构。

RA:Registration Authority 数字证书注册审批机构,给申请数字证书者发放证书,发放前对申请者进行审合登记,它是CA的延伸机构。

PKI:Public Key Infrastructure,公钥基础设施,由密钥管理(发放,吊销),密钥合法性验证,认证机构,密钥发放等组成。为数据完整性,隐私性,数据身份认证等提供基础服务。



通用证书认证协议标准由x.509定义。有三个版本,

CA搬发的证书包含了以下内容(x.509最新版本)

    版本号:证书格式使用x.509的那个版本。用来区分不同版本

    证书序列号:在CA中的维一标识。用一个整数标识。

    算法参数:给此证书签名时使用到的算法

    发行者名称:由谁颁发

    有效期限:证书有效使用时间

    主体名称:证书拥有者名称,由申请者自己填写。如果用在主机上,此名称必须为主机名。

    公钥:最关键的部分,由申请者自己填写。

    发行者的ID:颁发此证书机构的维一标识

    主体ID:给证书拥有者的维一ID

    其它信息:

    CA签名:CA用自己的私钥对此证书的特征码加密。以保证此证书的合法性。


ca工作时必须要有以下目录和文件

/etc/pki/CA

/etc/pki/CA/certs              存放证书数据

/etc/pki/CA/crl                  存放证书吊销列表

/etc/pki/CA/newcerts             存放已发放证书

/etc/pki/CA/private           存放CA自己的私钥,私钥的权限为400.

/etc/pki/CA/index.txt        证书索引
/etc/pki/CA/serial             创建序列号,记录签发过多少个证书。

/etc/pki/CA/crlnumber         证书的吊销列表

openssh建立ca的步骤和节点申请步骤


   ca操作

    1,为自己生成密钥

    2,为自己签署证书

    3,返还签署后的证书

    节点操作

    1,生成密钥对

    2,生成证书签署请求(包含自己的公钥,主机名,自己的名称)

    3,把请求发送给证书注册机构。等待ca签署。

openssl req 子命令

    -x509:生成自签证书

    -days n:指定证书的有效天数,n为数字

    -news:新证书申请请求

    -key:指明私钥文件名称

    -out:指定签署过后文件名

示例:

建立ca服务器

# cd /etc/pki/CA

# (umask 077; openssl genrsa -out ./private/cakey.pem 1024 )          #给自己生成密钥

Generating RSA private key, 1024 bit long modulus

..................................++++++

...........++++++

e is 65537 (0x10001

[root@wukui CA]# openssl req -new -x509 -key ./private/cakey.pem -out ./cacert.pem -days 3655  #给自己的密钥签名
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. 
----- 
Country Name (2 letter code) [XX]:CN                #国家代码简称
State or Province Name (full name) []:BJ            #所在的省
Locality Name (eg, city) [Default City]:wukui     #所在的城市
Organization Name (eg, company) [Default Company Ltd]:wukui.com     #所在组织名称
Organizational Unit Name (eg, section) []:tech                     #所在组织下级部门名称
Common Name (eg, your name or your server's hostname) []:wukui.wukui.com   #个人名字或主机名字,如果是给主机使用,此处必须是主机完整名称。
Email Address []:wukui@wukui.com   #联系邮箱

[root@wukui CA]# ll cacert.pem                   #查看生成的证书
-rw-r--r-- 1 root root 1054 Aug 2 12:33 cacert.pem

[root@wukui CA]# touch index.txt                     #创建证书索引
[root@wukui CA]# echo 01 > serial                    #创建序列号,记录签发过多少个证书。

[root@wukui CA]# echo 01 > crlnumber            #创建证书吊销列表文件

节点主机申请证书方法


[root@bogon /]# mkdir /etc/ca    #创建目录用来保存证书文件
[root@bogon /]# cd /etc/ca

[root@bogon ca]# (umask 077; openssl genrsa -out ./www.key 1024 )   #为自己生成密钥文件www.key
Generating RSA private key, 1024 bit long modulus 
................++++++ 
..........++++++ 
e is 65537 (0x10001) 
[root@bogon ca]# ll 
total 8 
-rw------- 1 root root 887 Jul 27 01:03 www.key

[root@bogon ca]# openssl req -new -key ./www.key -out ./www.csr 
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. 
----- 
Country Name (2 letter code) [GB]:CN 
State or Province Name (full name) [Berkshire]:BJ 
Locality Name (eg, city) [Newbury]:wukui 
Organization Name (eg, company) [My Company Ltd]:wukui.com 
Organizational Unit Name (eg, section) []:ops 
Common Name (eg, your name or your server's hostname) []:www.wukui.com 
Email Address []:wukui@wukui.com 

Please enter the following 'extra' attributes 
to be sent with your certificate request 
A challenge password []:                                     这里指定生成的请求列表是否加密码,如果有密码,ca在查看时需要密码。不输入密码为空。
An optional company name []:

[root@bogon ca]# ll www.csr                             查看生成的申请列表文件
-rw-r--r-- 1 root root 692 Jul 27 01:14 www.csr

把列表文件发送到ca,等待ca签署完成后取回证书。



ca操作

    # openssl ca -in www.csr -out www.crt -days 10

把www.crty文件返还到节点服务器。



吊销证书操作

节点服务器把证书编辑发给ca,获取证书编号命令

#openssl x509 -in  filename -noout -serial -subject   :获取证书编号

ca端操作

    # openssl ca -revoke /etc/pki/CA/newcerts/filename.pem   :回收证书

    # openssl ca -gencrl -out/etc/pki/CA/crl/thisca.crl              #更新吊销列表