首先,咱们要知道,在互联网上,数据的安全性尤其重要,因此对于数据的加密与解密的重要性就不言而喻了。下面我就来讲说加密解密算法与用openssl建立CA数字证书签署的相关知识。算法
加密,解密算法咱们能够分为3种:安全
单向加密(是为了测试数据完整性的一种算法,抽取数据的数据指纹,也就是特征码)服务器
单向加密有2个特征ssh
1,定长输出 以固定长度输出的
ide
2,具备雪崩效应 极小的数据改变也会引起特征码的巨大的改变,例以下图
测试
图中,我建立一个文件t1,计算出他的特征码,
加密
而后我给文件t1添加一个字符h,而后再计算出特征码,你会发现2次的特征码彻底不同。
spa
对称加密:(用于加密任意大小数据块大小的数据,加密解密双方使用同一对秘钥)3d
经常使用的对称加密有:3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法等,orm
对称加密的特征:加密解密使用同一口令,把明文分隔成固定大小块进行加密的
缺陷: 每与一个用户通讯,就要使用一种口令,使秘钥过于太多
秘钥在传输的过程当中安全性
非对称加密:(加密和解密双方使用不一样的秘钥)
分为公钥与私钥 其中,公钥是从私钥中提取出来的,它是私钥的一部分(私钥位数很是长,通常1024位,2048位)而且,公钥是公开的,你们都能看到,私钥是本身留存的 。
公钥加密算法
RSA:既能加密也能签名(随后我会介绍)的一种算法
DSA: 数据加密算法,只能用于签名用的,
下面咱们来讲说,如今互联网上经常使用的加密数据的过程:例如host1 与host2通讯
加密过程:
第一步:host1用单向加密算法计算出数据data的特征码(数据指纹)放在数据后面,
第二步:host1用本身的私钥加密 数据特征码,并放数据的后面
第三步:host1生成一对秘钥,采用对称加密对加密过的特征码和数据进行加密
第四步:host1用host2的公钥再对整个数据加密,放在数据的后面
第五步: 把通过多重加密的数据发送给host2
解密过程:
第一步: host2 接收到host1 发来的数据,就用本身的私钥去解密,成功解密,就证实这个数据的确是发给本身的没错,
第二步:host2 用host1生成的密码解密数据,获得加密的特征码与加密的数据
第三步; host2 还要用host1的公钥解密,来验证是不是host1发出的这个数据的,用来验证数据的来源是不是与本身通讯的用户
第四步:host2 用host1单向加密的算法来解密加密的数据的特征码
第五步:比较得出的特征码是否一致,一致则说明数据时完整的,没被修改过。
加密解密的过程咱们说完了,那么就来讲说,双方通讯室基于什么基础呢?为何host1就相信host2的公钥就是host2的,有什么判断依据呢?有,那就是CA(至关于***颁发机构的,用来证实身份的合法性的)
CA 又称CA机构,即证书受权中心(Certificate Authority ),或称证书受权机构,做为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
CA的功能:签发数字证书、管理下级审核注册机构、接受下级审核注册机构的业务申请、维护和管理全部证书目录服务、向密钥管理中心申请密钥、实体鉴别密钥器的管理,等等。
下面来介绍CA的工做机制,
双方要想达到互信通讯怎么办呢?
那就双方各须要一个数字证书,证实本身的身份
那么这个数字证书怎么来的呢?
数字证书有CA签署的(CA用本身的私钥加密数字证书,用CA的公钥验证是不是CA签署的)
为何是CA签署呢?
由于CA是现在互联网公认的惟一的数字证书签署机构
首先,要想获得证书咱们要先申请,再经CA签署认证后,你就拥有在互联网上通讯的合法性了。
CA很重要,那么咱们来讲说怎么用openssl建立CA的吧
openssl建立私有CA的通常过程:
1)CA须要用为自身生成一对秘钥
先看下openssl生成了那些文件
咱们能够看到:/etc/pki/CA 这个CA的主目录,下属的目录private:用来存放CA自身的私钥的
生成私钥钥的命令,并保存至/etc/pki/CA/private
红线的部分为,保存私钥的目录及文件名,且文件名为cakey.pem(这是配置文件要求的默认文件名)
2)CA要为本身签署一个证书(目的:让客户端拿此证书来验证CA颁发给其余客户端签署的证书是否合法)
证书中保存的是公钥信息,自签署证书的过程会从私钥中提取所需的公钥
自签署证书的命令以下图
-new 表示新的请求
-x509 表示生成自签署证书
-key 表示后跟的文件路径为私钥的文件路径(从私钥提取公钥)
-out 表示存放自签署证书的位置
-days 表示该证书的有效期天数,(就像***上的有效期同样)
看吧生成了自签署证书(此证书要给每一个通讯的客户端都发一份,来验证CA签署的其余证书的合法性)
CA服务器的环境初始化:
CA要想正常工做还须要2个文件一个是索引文件,另外一个是序列号文件(用来统计用的)
3)每个通讯的客户端须要作的事情:
1,要生成一对秘钥
咱们以http服务申请证书的过程为例:
咱们要在HTTP服务的配置文件所在的目录建立一个目录来保存证书和私钥文件
建立目录ssl,而且在ssl目录下建立秘钥,
而后再生成签署请求,并保存在ssl目录下(能够任意目录存放,用完就能够丢弃了)
2,生成证书请求(要想获得证书不申请,CA怎么给你签署呢)
3 把生成的证书请求发送给CA,请求CA签署
问题是怎么发送呢
scp /etc/httpd/ssl/httpd.csr CA服务器(IP地址)
若是是在同一公司内部的话,你可使用ssh基于FTP服务发送请求,在这里我是在同一主机上作的实验,因此不用发送啦,在下一个博客里我会介绍ssh的相关知识
4)CA先验证申请者的信息,再签署证书,签署完成后返回给客户端。
CA签署证书的命令以下:
自此建立CA服务的流程基本如上图的过程啦。