linux-运维进阶-31 OpenSSL实现CA证书
OpenSSL实现CA证书
什么是CA
CA,Catificate Authority,通俗的理解就是一种认证机制。它的作用就是提供证书(也就是服务端证书,由域名,公司信息,序列号,签名信息等等组成)来加强客户端与服务器端访问信息的安全性,同时提供证书的发放等相关工作。国内的大部分互联网公司都在国际CA机构申请了CA证书,并且在用户进行访问的时候,对用户的信息加密,保障了用户的信息安全。理论上来说,任何组织或者个人都可以扮演CA的角色,只不过,难以得到客户端的信任,不能推而广之,最典型应用莫过于12306网站,这个网站就是自己给自己颁发的根证书。
目前能够让浏览器默认支持的CA大厂有很多,Windows 操作系统在安装之初,也默认安装了很多受信任的根证书。可以通过控制面板–Internet选项来进行查看。
另外,可以将证书理解为带有额外信息的公钥。
SSL/TLS
SSL/TLS是网络通信过程中非常重要的两个协议。互联网的通信安全就建立在SSL/TLS协议基础之上。他们通过一系列的加密行为保障了通信的安全,是如今互联网通信最主要的应用之一。
SSL/TLS是一个很大的互联网应用,关于他们的介绍互联网上有很多,我们暂时不做详细的介绍。关于SSL/TLS通信的过程大致可以用下面的这张图来进行描述。
十六字真诀
公钥加密,私钥解密
私钥签章,公钥验签
实验准备
CA服务器:192.168.141.132
客户机:192.168.141.69
物理机(就是你的电脑)
OpenSSL
OpenSSL是一套开源软件,在Linux中可以很容易的安装。它能够很容易的完成密钥生成以及证书管理。我们接下来就利用OpenSSL搭建CA证书,并实现证书的申请与分发。
[root@localhost ~]# yum install openssl –y
CA配置
要手动创建CA证书,就必须首先了解,OpenSSL中关于CA的配置,配置文件位于下面的/etc/pki/tls/openssl.cnf
[root@localhost ~]# cat /etc/pki/tls/openssl.cnf
####################################################################
[ ca ]
default_ca= CA_default #默认CA
####################################################################
[ CA_default ]
dir=/etc/pki/CA # CA的工作目录这里其实是定义了一个变量
certs= $dir/certs # 证书存储路径
crl_dir= $dir/crl # 证书吊销列表
database= $dir/index.txt # 证书数据库列表
new_certs_dir= $dir/newcerts #新的证书路径
certificate = $dir/cacert.pem # CA自己的证书
serial= $dir/serial #下一个证书的编号,十六进制,默认00
crlnumber= $dir/crlnumber #下一个要被吊销的证书编号,十六进制,默认00
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.pem # CA 的私钥
RANDFILE= $dir/private/.rand # private random number file
x509_extensions = usr_cert # The extentions to add to the cert
# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt = ca_default # 命名方式
cert_opt = ca_default # CA的选项
default_days= 365 # 默认证书的有效期限
default_crl_days= 30 # how long before next CRL
default_md= default # use public key default MD
preserve= no # keep passed DN ordering
policy= policy_match #策略
#这里记录的是 将来CA在搭建的时候,以及客户端申请证书的时候,
需要提交的信息的匹配程度。
[ policy_match ] # match意味着CA以及子CA必须一致
countryName = match # 国家
stateOrProvinceName= match # 州或者省
organizationName= match #组织公司
organizationalUnitName = optional
commonName= supplied
emailAddress= optional
[ policy_anything ] #可以对外提供证书申请,这时,证书的匹配就可以不用那么严格
countryName = optional
stateOrProvinceName = optional
localityName= optional
organizationName= optional
organizationalUnitName = optional
commonName = supplied
emailAddress= optional
找到配置文件中指定的路径
[root@localhost ~]# cat /etc/pki/tls/openssl.cnf | grep dir
dir = /etc/pki/CA # Where everything is kept
可以看到路径 /etc/pki/CA
创建所需要的文件
这里有一点需要注意,我们的实验环境中包含了一个主机,如果不提前创建这两个文件,那么在生成证书的过程中会出现错误。
我们将文件创建在配置文件中指定的路径下面。
生成证书索引数据库文件
[root@localhost ~]# tou