首页 > 代码库 > linux CA 加密解密技术
linux CA 加密解密技术
一、基础知识
对称加密:
加密和解密方使用同一个密钥,用来解决数据机密性,但是密钥通过何种方式传递给对方不容易实现;
公钥加密:
密钥是成对出现的,分别为Secret key(密钥)和Public key(公钥)公钥加密必须使用与其相对应的
私钥进行解密并且公钥是从私钥中提取出来的,有私钥可以知道公钥是什么,但是知道公钥是不能知
道私钥的,公钥是公开的,而私钥是不公开的,但是公钥加密比对称加密慢3个数量级(1000倍),
加密速度相当的慢,所以单独用此加密方式也比较困难;公钥加密功能:
单向加密:
不是真正来实现加密,而是用来提取数据特征码,验证数据完整性,他有雪崩效应((蝴蝶效应):
源数据有一点点不同,结果大不相同)和定长输出(通过单相加密后的结果长度一样)的特征;
单向加密常见算法:
md5:Message Degist,由麻省理工学院人工智能实验室研发,固定定长输出
128bit;
md5sum:计算文件md5格式的特征值;
sha1:Secure Hash Algorithm 1,固定定长输出160bit;
SHA256:长度越长变化越大;
SHA512: 长度越长变化越大;
二、加密过程:
1、发送方用单向加密算法计算数据的特征码;
2、发送方用自己的私钥加密这段特征码,并加在数据尾部;
3、发送方生成一个对称密钥;
4、发送方用此对称密钥加密数据和加密后特征码;
5、发送方用接收方的公钥加密这个对称密钥,附加在密文的尾部,并发送之;
解密过程:
1、接收方用自己的私钥解密加密过的对称密码;
2、接收方用密码解密密文;
3、接收方用发送方的公钥解密发送方私钥加密的特征码;
4、接收方用同样的单向加密算法计算出原始数据的特征码;
5、接收方比较两段特征码;
发送方: 计算数据特征值----> 使用私钥加密特征值 ---> 随机生成密码对称
加密整个数据 ---> 使用接受方公钥加密密码
接收方: 使用私钥解密密码 ----> 解密整个数据 ----> 使用公钥验证身份
----> 比较数据特征值
三、CA证书的作用
Ca 证书模型
1、密钥交换密钥交换,也称为IKE:Internet Key Exchange 互联网密钥交换;
2、数字签名,用于身份验证,防抵赖;
我们发现上述加密方式中严重依赖对方的公钥,而怎样才能确定是对方的公钥呢,所以这就
需要有一个专门机构来确保公钥来源的合法性并给予对方一个数字证书,其实数字证书就像
我们自己的***一样,而那个专门机构就像是给我们颁发***的公安机关一样,下面来
说一下
数字证书和CA(证书颁发机构);
数字证书(Digital Certificate)包含证书拥有者信息及公钥还有CA的签名并且附加CRL(证
书吊销列表);
CA(证书颁发机构):对证书利用单向加密的算法提取证书数据的特征码,然后用自己的私
钥加密特征码并附加在数据的尾部发送之;CA分为公共CA和私有CA两类
PKI:
Public Key Infrastructure 是实现现代互联网电子商务的核心框架,只是一种规范,其核心
就是CA,还有密钥验证和密码交换机制,保证验证过程是可靠的。
ssl(Secure Socket Layer)安全套接字层;
四、linux加解密技术
在pcp5层模型中的AL(应用层)和TL(传输层)中间增加了半层就是ssl,其实ssl只是一种
协议,需要靠其它软件来现,这种软件在linux中最通用和流行的就是openssl,目前openssl
软件版本
有一下几种:
sslv1 已经废弃;
sslv2 目前再用;
sslv3 目前再用;
TLS:
Transport Layer security(传输层安全)协议,最常用的是tlsv1版本(与 sslv3同时代);
linux上常用的加解密的工具有两个:
1、gpg 实现rpm包签名比较常用;
2、openssl ssl的开源版本的实现,一共有一下三个组件组成:
1)libcrypto 通用库;
2)libssl 实现ssl和tls协议的;
3)openssl 多用途的加密组件;
这里我们重点讲解openssl:
openssl 是多用途的加密组件,命令行工具,其可以实现对称加密算法、非对称加密算法、
单向加密算法、作为一个简单的CA (OpenCA),其依赖的配置文件默认在/etc/pki/tls/
openssl.cnf中,也可以自己定义;openssl作为简单的CA其颁发的证书格式有x509
(比较通用,定义了证书的格式,类似于pkcs#10),pkcs#12和pkcs#17定义了
如何将证书存诸的格式;openssl也可以实现证书格式的转换。
openssl的常用工具:
1.数据的保密性
信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密。
加密的过程需要用到密匙来加密数据然后再解密。没有了密钥,就无法解开加密的
数据。数据加密之后,只有密匙要用一个安全的方法传送。加密过的数据可以公开
地传送。
2.数据的一致性
加密也能保证数据的一致性。例如:消息验证码(MAC),能够校验用户提供的加密
信息,接收者可以用MAC来校验加密数据,保证数据在传输过程中没有被篡改过。
3.安全验证
加密的另外一个用途是用来作为个人的标识,用户的密匙可以作为他的安全验证的
标识。SSL是利用公开密钥的加密技术(RSA)来作为用户端与服务器端在传送机
密资料时的加密通讯协定。
五、实验
openssl建立私有CA:
1、生成密钥
2、自签署证书
节点:
1、生成密钥对儿
2、生成证书签署请求
3、把请求发送给CA
CA:
1、验正请求者信息;
2、签署证书;
3、把签好的证书发送给请求者;
一、建立CA服务器:
1、生成密钥
# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
2、自签证书
req: 生成证书签署请求
-news: 新请求
-key /path/to/keyfile: 指定私钥文件
-out /path/to/somefile:
-x509: 生成自签署证书
-days n: 有效天数
3、初始化工作环境
# touch /etc/pki/CA/{index.txt,serial}
# echo 01 > /etc/pki/CA/serial
二、节点申请证书:
(一) 节点生成请求
1、生成密钥对儿
# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
2、生成证书签署请求
# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr
3、把签署请求文件发送给CA服务
# scp
(二) CA签署证书
1、验正证书中的信息;
2、签署证书
# openssl ca -in /path/to/somefile.csr -out /path/to/somefile.crt -days N
3、发送给请求者;
三、吊销证书
(一)节点
1、获取证书serial
# openssl x509 -in /path/to/certificate_file.crt -noout -serial -subject
(二) CA
2、根据节点提交的serial和subject信息来验正与index.txt文件中的信息是否一致;
3、吊销证书
# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
4、生成吊销证书的编号(如果是第一次吊销)
# echo 00 > /etc/pki/CA/crlnumber
5、更新证书吊销列表
# cd /etc/pki/CA/crl/
# openssl ca -gencrl -out thisca.crl
如果需要,查看crl文件的内容:
# openssl crl -in /path/to/crlfile.crl -noout -text