本篇博客是一个自制CA并实现颁发证书的手册,内容涵盖如何自制CA、客户端如何向CA申请证书以及CA签署证书的过程,内容并不困难,旨在帮助理解CA的工作流程,对于正在学习网络安全方面知识的同学兴许有点帮助
本测试实现内容:
1、创建CA
生成一对用于制作自签证书的密钥
生成自签证书
2、客户端(相对于CA而言的客户端)
生成一对用于申请CA证书密钥
生成证书颁发请求;
将请求发给CA
3、CA端
签署证书
将签署完成的证书传送给客户端
说明:
本流程均在VMware10上实现
准备:
1、创建两台虚拟机rhel.ca, rhel.server(本文使用的是Redhat Enterprise Linux 5.8),
(其中rhel.ca将充当证书权威机构(CA)的角色,rhel.server将充当CA的客户端)
2、IP设置: rhel.ca: 192.168.134.2, rhel.server: 192.168.134.8
实现:
rhel.ca:
1、进行必要的配置:(修改openssl配置文件)
cd /etc/pki/tls/ vim openssl.cnf #修改以下内容: [ CA_default ] # 修改CA路径为决定路径 dir = /etc/pki/CA # 修改CA有效期限 default_days = 3657 [ req_distinguished_name ] # 启用默认值,根据个人情况修改即可 countryName_default = CN stateOrProvinceName_default = Shandong localityName_default = Qindao 0.organizationName_default = TBcompany organizationalUnitName_default = Tech
2、制作自签证书
cd /etc/pki/CA/ # 说明:这里将生成的私钥存储为private/cakey.pem, CA证书存储为cacert.pem, 以及CA需要使用到的文件及目录均存储于CA目录下: 包括:certs,newcerts,crl,index.txt,serial 若要自行定义,需要修改openssl.cnf中的相关内容 # 生成秘钥(公钥算法采用rsa加密方式,输出长度2048) (umask 077; openssl genrsa 2048 > private/cakey.pem)
# 生成CA证书(CA证书格式x509) openssl req -new -x509 -key private/cakey.pem -out cacert.pem
# 创建CA需要的目录及相关文件
mkdir certs newcerts crl # certs: 证书存储路径 # newcerts: 新签证书存储路径 # crl: 吊销证书存储路径(证书吊销列表) touch index.txt # 存储证书索引 echo 00 > serial # 待使用证书编号
rhel.server:(假设httpd是web服务器文件存储位置)
3、申请CA证书
cd mkdir httpd/ssl -pv cd httpd/ssl/ # 生成秘钥制作证书颁发请求 (umask 077; openssl genrsa -out ./httpd.key 1024) openssl req -new -key httpd.key -out httpd.csr # 注意:此处到公司名为止需要与CA一致,否则CA将会拒签证书
# 将证书颁发请求发送给CA,这里直接使用scp将请求复制到CA的root目录下 scp httpd.csr root@192.168.134.8:/root/
rhel.ca:
4、签发ca证书并将证书发送至客户端 openssl ca -in httpd.csr -out httpd.crt -days 365 # 证书有效期为一年 scp httpd.crt root@192.168.134.2:/root/httpd/ssl/ 5、查看CA相关文件信息 newcerts存储着上面签署的证书,index.txt中记录证书相关数据,serial自增1
至此,server的证书就已经申请成功了,进入/root/httpd/ssl目录将会看到申请到的证
书httpd.crt,本测试完成后,CA的工作流程大致就能了解了,能力有限,不足之处还望指教