基于OpenSSL自建CA和颁发SSL证书


一、概述

CA英文全称Certification Authority,即数字证书认机构。从广义上来说,CA是负责发放和管理数字证书的权威机构,并作为用户数字认证中受信任的第三方,承担公钥体系(PKI)中公钥的合法性检验的责任,在互联网上,实现用户与用户、用户与企业之间的数字身份认证。

本文通过使用openssl进行搭建私有CA认证体系,从而简单地了解CA的认证过程。

二、步骤流程

私有ca.png

三、具体操作

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

声明:Jason|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 基于OpenSSL自建CA和颁发SSL证书


Carpe Diem and Do what I like