证书架构在咱们互联网http协议上使用最多,https及http over ssl,是对http数据进行加密认证的一种机制,它就是与OpenSSL使用的相关认证机制相同;数据库
三个组件:vim
openssl 多用户的命令行工具安全
libcrypto 加解密库服务器
libssh ssl协议的实现库文件架构
PKI(Public Key Infrastructure)ssh
共享密钥基础架构工具
CA 证书认证服务器 this
注册机构用来颁发证书,验证数据的正确性的,相似于公安局,它必须是要权威认证机构来充当;在咱们互联网上,相似于VeriSign,就是最有名的CA证书机构;加密
证书机构CA是PKI的信任基础,它管理公钥的整个生命周期。其做用包含:发放证书、规定证书的有效期和经过公布证书废除列表(CRL)确保必要时可以废除证书。后面将会在CA进行具体介绍。spa
默认状况下,咱们的电脑上,默认就有一些证书颁发机构颁发的证书:
RA 证书注册机构
注冊机构RA提供用户和CA之间的一个接口。它获取并认证用户的身份,向CA提出证书请求。它主要完毕收集用户信息和确认用户身份的功能。这里指的用户,是指将要向认证中心(即CA)申请数字证书的客户,可以是我的,也可以是集团或团体、某政府机构等。
CRL 证书的废止列表
RA在吊销证书后,确保证书无效后,则将证书放入到CRL列表;
证书存取库
维护证书正常状态的一个库文件
在公司中,咱们有时候要为本身的内部服务器实现安全保护,会须要搭建内部的CA服务器;而这个内部的CA服务器是只在内网生效,公网是不承认的;
搭建的这个内网的CA服务器,咱们就使用OpenSSL软件程序来实现,对于专业CA服务器的搭建能够选择功能更增强大的OpenCA软件程序,可是咱们只介绍OpenSSL;
配置以前,咱们先了解下主配置文件【能够不用修改】
vim /etc/pki/tls/openssl.cnf
[ca] //ca的配置目录
default_ca CA_default
certs //存放已经签署的证书
crl //被吊销的证书存放的地方
index.txt //数据库的索引文件,证书的基本信息都存放在这里
unique_subject = no //证书信息是否要惟一
certificate //CA服务器给本身的证书
serial //证书的序列号
crlnumber //吊销证书的序列号
private_key //只当证书的私钥存放的路径
default_day //证书的有效期
建立私有证书的步骤
一、生成一个申请请求(公司的各类细腻些,国家省份正真的名字部门的名字)这些信息会存放在证书认证机构中,以后来申请证书的服务器提供的证书申请是要匹配这些信息的;
二、RA注册机构验证这些信息;
三、CA签署这个证书;
四、颁发证书
建立私有CA服务器,配置以下:
在CA证书服务器上,建立序列号文件:
cd /etc/pki/CA/ touch index.txt //证书index索引信息 echo 01 > serial //证书序列号信息
生成根证书文件
(umask 0777;openssl genrsq -out /etc/pki/CA/private/cakey.pem 2048) //建立私有的证书请求文件 openssl req -new -x509 -key /etc/pki/CA/private/cakey.epm -days 7300 -out cacert.pem //生成证书
-new //生成新的证书签署请求
-x509 //专用于CA生成自签证书
-key //指定生成请求时用到的私钥文件
-days //指定该证书的有效期
-out /PATH/TO/SOMECERTFILE //指定证书的保存路径
这里惟一要注意的,就是服务器的主机名,必定要于服务器名字保持一致;
为客户端颁发证书发证
a、客户端到证书的主机生成证书请求
b、把请求文件传输给CA
c、签署证书,并将证书发还给请求者
yum install httpd -y mkdir /etc/httpd/ssl/ cd /etc/httpd/ssl/ (umask 0777;openssl genrsa -out httpd.key 2048) openssl req -new -key httpd.key -days 365 -out httpd.csr
再将生成的证书请求发送给服务器端:
scp httpd.csr root@192.168.94.128:/tmp/
最后去服务器上作证书颁发:
cd /tmp/ openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 365
这里会核对信息,若是有一些必须匹配的信息不匹配,证书是没法签发的;
此时,再目录 /etc/pki/CA/newcerts/ 下,会生成 .pem 文件,就是咱们CA证书服务器签署的证书保留文件;
再将证书传输回客户端;
scp /tmp/httpd.crt root@192.168.94.129:/etc/httpd/ssl/
这时候,能够再客户端上查看证书信息:
openssl x509 -in /PATH/FORM/CERT_FILE -noout -text/-subject/-serial
若是证书过时,或者提早吊销这个证书,咱们如何作呢?
一、客户端先去获取要调证书的序列号;
openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -subject -serial
二、CA服务器根据客户端提交的serial和subject信息,对比是否于index.txt文件中信息一致;若是一致,就能够开始吊销证书;
对比index.txt的信息:
cat /etc/pki/CA/index.txt
吊销证书:
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
三、生成吊销证书的编号(第一次吊销某证书的时候须要这个步骤,若是以后再次吊销证书的时候,就不要这个步骤了);
echo 01 > /etc/pki/CA/crlnumber
四、更新证书吊销列表CRL;
openssl ca -gencrl -out thisca.crl cat thisca.crl
查看crl文件:
openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
至此,这个证书就已经被吊销;
【关于pki证书架构,在以后配置https服务的时候会结合实际状况再行说明】