首先先科普一下OpenSSL,我们知道OpenSSL,全名叫Open Secure Sockets Layer,这是一个强大的安全套接字层密码库,主要包括密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的程序供测试或其它目的使用。此外,OpenSSL是基于SSL协议的,SSL要求建立在可靠的传输层协议之上。它优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等协议)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证了通信的私密性。
然后对于区分数据加密和身份认证。加密是将数据加密,即使非法用户获得加密过的数据,也无法探测其真实数据内容,侧重点在于数据的安全性;身份认证其实就是用来判断某个身份的真实性,然后再给予其相应的权限,其侧重点在用户的真实性。
1.几种常用的加密算法
1.对称加密----加密和解密都是使用同一个密钥
特性:
1)加密和解密使用同一密钥
2)将明文隔成固定大小的块,逐个进行加密
缺陷:密钥分发过多
2.非对称加密---也称公钥加密,分为私钥和公钥,私钥仅给个人使用,公钥是给所有人公开获取的。常用算法:RSA、DSA(只能实现数据签名)
特性:
1)密钥长度较大,比如有512bits、2048bits、4096bits等,所以一般不用于对数据加密,而大部分用于对密码加密。
2)加密、解密分别使用密钥对儿中的密钥相对进行
3)常用于数据签名和密钥交换
用处:
1)身份验证(即私钥拥有者用自己的私钥加密的数据,只要用其公钥就能解密,即可验证其身份;反之,公钥拥有者用自己的公钥加密的数据,采用其私钥也能解密,即可实现数据的机密性)
2)密钥交换(与被通信方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,然后传给对方)
3.单项加密---实质上主要就是提取数据的特征码。常用算法: MD5(128bits定长输出)、SHA1、SHA256、SHA384、SHA512等
特性:
1)定长输出:无论原来的数据是多大级别,其加密结果长度一样;
2)雪崩效应:原始数据微小改变,将会导致结果巨大变化;
3)不可逆
2.一次加密解密通信,实现身份验证,数据完整性和数据加密的过程
对于发送方A来说,A首先要对要传输给B的数据data用单向加密算法获取得到相应的特征码,并把特征码附在data的后面;然后A采用非对称加密算法,用自己的私钥对特征码进行加密;对特征码进行非对称加密之后,A再采用对称加密算法生成临时密钥,临时密钥用于对整个数据以及特征码进行加密;此后A再采用接收方B的公钥对整个临时密钥进行加密,附加 到对称加密的后方。然后就发给接收方B
对于接收方B来说,收到A发来的信息之后,首先用自己的私钥解密已加密的临时密钥,得到临时密钥之后,再采用对称加密算法解密临时密钥,从而得到数据和已加密的特征码;然后用A的公钥解密已加密的特征码,得到特征码;而后再采用同样的单向加密算法对得到的数据进行特征码提取;最后用自己生成的特征码与A生成的特征码进行比对,于是就实现了身份验证。A--B整个通信过程就实现了身份验证、数据完整性和数据加密的过程。
3.采用openssl工具建立私有CA
步骤:
1、生成私钥文件: /etc/pki/CA/private/cakey.pem
# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
2、生成自签证书
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days #
-new: 生成新的证书签署请求;
-key:私钥文件路径,用于提取公钥;
-days N: 证书有效时长,单位为“天”;
-out:输出文件保存位置;
-x509:直接输出自签署的证书文件,通常只有构建CA时才这么用;
3、提供辅助文件
# touch /etc/pki/CA/index.txt # echo 01 > /etc/pki/CA/serial
4.数字证书
CA:简答的说就是签证机构。它的功用是用于保证公钥信息安全分发;
数字证书的格式(x.509 v3):
版本号(version) 序列号(serial number):CA用于惟一标识此证书; 签名算法标志(Signature algorithm identifier) 发行者的名称:即CA自己的名称; 有效期:两个日期,起始日期和终止日期; 证书主体名称:证书拥有者自己的名字 证书主体公钥信息:证书拥有者自己的公钥; 发行商的惟一标识: 证书主体的惟一标识: 扩展信息: 签名:CA对此证书的数字签名;
5.给节点发证书
1、节点申请证书
在证书申请的主机上进行如下步骤:
(1) 首先生成私钥;
(2) 然后生成证书签署请求;
【注意:
(a) 其中的subject(表示国家地区省份等)信息部分,要与CA的保持一致;
(b) Common Name要使用此主机在通信真实使用名字;不能使用ip地址】
(3) 最后把请求发送给CA;
2、CA签发证书
(1) 首先验正请求者信息
(2) 然后签署证书
# openssl ca -in /PATH/FROM/CSR_FILE -out /PATH/TO/CRT_FILE -days N
(3) 最后把签署好的证书发还给请求者
6.吊销证书:
1、获取吊销证书的序列号;
# openssl x509 -in /PATH/FROM/CRT_FILE -noout -serial -subject
2、实现证书吊销
(1) 吊销证书
# openssl ca -revoke /PATH/FROM/CRT_FILE
(2) 生成吊销证书的编号
# echo 01 > /etc/pkie/CA/crlnumber
(3) 更新证书吊销列表
# openssl crl -gencrl -out THISCA.crl
最后发点小总结用于记忆这些常用命令。
总结:
genrsa(生成私钥文件),
req(生成自签证书),
ca(签署或吊销(附加-revoke)证书),
x509(获取吊销证书的序列号),
crl(更新证书吊销列表)
rsa(从私钥中提取公钥)
原文地址:http://tanjie.blog.51cto.com/10027618/1636713