一、概述
CA英文全称Certification Authority,即数字证书认机构。从广义上来说,CA是负责发放和管理数字证书的权威机构,并作为用户数字认证中受信任的第三方,承担公钥体系(PKI)中公钥的合法性检验的责任,在互联网上,实现用户与用户、用户与企业之间的数字身份认证。
本文通过使用openssl进行搭建私有CA认证体系,从而简单地了解CA的认证过程。
二、步骤流程
三、具体操作
1、初始化工作环境(创建所需要的文件)
# touch /etc/pki/CA/{index.txt,serial} # echo 01 > /etc/pki/CA/serial
2、CA生成密钥对及自签证书
1)生成密钥对
# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
2)自签证书
req: 生成证书签署请求
-news: 生成新证书签署请求
-key /path/to/keyfile: 生成请求时用到的私钥文件(指定私钥文件)
-out /path/to/somefile: 证书的保存路径
-x509: 专用于CA生成自签署证书
-days n: 证书的有效天数
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655 ...... ...... Country Name (2 letter code) [XX]:CN 国家 State or Province Name (full name) []:Guizhou 省份 Locality Name (eg, city) [Default City]:Guiyang 城市 Organization Name (eg, company) [Default Company Ltd]:YuanJie 公司名称 Organizational Unit Name (eg, section) []:Ops 部门名称 Common Name (eg, your name or your server's hostname) []:ca.yuanjies.com 服务器主机名 Email Address []:caadmin@yuanjies.com 邮箱
3、Client申请证书
(一) 用到证书的主机生成证书请求
a)生成密钥对
# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
b)生成证书签署请求
# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365 ...... ...... Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:Guizhou Locality Name (eg, city) [Default City]:Guiyang Organization Name (eg, company) [Default Company Ltd]:YuanJie Organizational Unit Name (eg, section) []:Ops Common Name (eg, your name or your server's hostname) []:www.yuanjies.com Email Address []:webadmin@yuanjies.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: 可加密证书签署请求 An optional company name []:
c)把签署请求文件发送给CA服务器
# scp httpd.csr root@192.168.7.6:/root/
(二) CA签署证书
a)签署证书
# openssl ca -in httpd.csr -out ./httpd.crt -days 365
b)把签署后的证书文件发给client
四、吊销证书
(一)节点(client端)
a)获取证书serial
# openssl x509 -in /path/to/certificate_file.crt -noout -serial -subject
(二) CA
根据节点提交的serial和subject信息来验正与index.txt文件中的信息是否一致
a)吊销证书
# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
b)生成吊销证书的编号(如果是第一次吊销)
# echo 00 > /etc/pki/CA/crlnumber
c)更新证书吊销列表
# cd /etc/pki/CA/crl/ # openssl ca -gencrl -out thisca.crl
如果需要,可查看crl文件的内容:
# openssl crl -in /path/to/crlfile.crl -noout -text