使用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 #更新吊销列表