我们知道,当客户端与服务器端建立会话之前,首先是客户端发送请求,只有通过TPC/IP三次握手后,客户端与服务器端才能建立ssl会话。握手的过程简单的说也可以总结为三个步骤,第一步:客户端和服务器双方共同商量使用什么加密算法以及加密等等。 第二步:客户端发送证书给服务器,目的是为了让服务器相信他。 第三步:服务器相信了,就生成对称密钥,将请求页面发送给客户端。 最后,客户端使用服务器发送的密钥加密后,将请求回应给服务器。在这个过程中由于服务器要验证客户端身份的真假,因此,这里需引入了第三方权威颁发机构,即CA,可以给客户端发证书。服务器是相信CA的,因此,客户端拥有CA的证书,从而客户端就能访问服务端。关于CA在这里我们需要了解:
1、SSL所使用的证书可以自己生成,也可以通过一个商业性CA(如Verisign 或 Thawte)签署证书。
2、证书的概念:首先要有一个根证书,然后用根证书来签发服务器证书和客户证书,一般理解:服务器证书和客户证书是平级关系。在SSL必须安装根证书和服务器证书来认证。 因此,就必须至少要有三个证书:根证书,服务器证书,客户端证书。 在生成证书之前,一般会有一个私钥,同时用私钥生成证书请求,再利用证书服务器的根证来签发证书。
接下来,我们就来简述一下在linux下搭建CA认证服务器并实现私有CA证书的认证的过程
步骤:
一、CA证书的制作(centos7)
1)进入/etc/pki/tls/openssl.cnf 并了解CA证书的系统文件内容
创建
2)在Centos7上生成自签根证书
1、在/etc/pki/CA下创建数据库索引文件index.txt、序列号记录文件serial并指定颁发证书序列号
2、生成CA证书私钥,包括设置当前umask值、私钥保存路径/etc/pki/CA/private及名称cakey.pem、密码-des3加密方式及长度2048等
3、从cakey.pem私钥中提取出公钥并指定名称cacert.pem,并指定CA机构的有效期(公钥中要设置国家、省份、城市名、公司名、公司部门、服务器名称、邮件地址等)
由此,CA证书便创建完成。
3)在Centos6上搭建子CA证书
1、在/etc/pki/CA下创建数据库索引文件index.txt、序列号记录文件serial并指定颁发子CA证书序列号
2、生成CA证书私钥,包括设置当前umask值、私钥保存路径/etc/pki/CA/private及名称cakey.pem、密码-des3加密方式及长度2048等
3、从cakey.pem私钥中提取公钥并指定名称subca.csr,公钥中要设置的国家、省份、城市名、公司名、公司部门、服务器名称、邮件地址等,其中国家、省份、公司名必须与根CA一致,而服务器名称必须不一致,其他选项不要求。
4、将Centos6生成的公钥传给根CA的/etc/pki/CA路径下
5、根CA对subca.csr 文件进行签名,并设置子CA的有效期,并生成一个新的 保存在certs/subca.crt下
6、将签名完成的subca.crt子CA证书文件回传给子CA Centos6的/etc/pki/CA路径下,并改名为cacert.pem
由此,子CA证书也就创建完成。
4)为客户端(Centos5)颁发证书
1、在任意目录下生成自己客户端的私钥,私钥文件名称无要求,也可以不加密
2、用私钥rhel5.key文件生成证书请求文件rhel5.csr,文件中要设置的国家、省份、城市名、公司名、公司部门、服务器名称、邮件地址等,其中国家、省份、公司名必须与子CA一致,而服务器名称必须不一致,其他选项不要求。
3、将生成的rhel5.csr文件传给子CA(Centos6)并进行签名
4、在Centos6上对客户端(Centos5)请求文件rhel5.csr进行签名,产生的新文件保存在certs/目录下,并命名为rhel5.crt
5、将签名完成的rhel5.crt文件回传给客户端(Centos5)
由此,客户端证书也已搭建成功。
5)查看证书
1、安装根CA证书
2、安装子CA证书
3、完成安装,查看
好的,到这里就结束了,一个完整的CA自签证书认证就已经完成了。