本篇文章主要讲解
一、加密、解密的三种方式
二、Openssl的基础应用以及创建CA证书颁发
=========================================================================
一、数据加密的三种方式:
1、对称加密:是将加密或解密使用同一秘钥;并将数据明文分隔成固定大小的块,逐个进行加密。缺陷是秘钥过多,不利于记忆。
对称加密算法:DES(Data Encryption Standard, 56bits)、3DES、AES: Advanced (128, 192, 256, 384, 512)、Blowfish、Twofish、IDEA、RC6
、CAST5
2、公钥加密(也称非对称加密):与对称加密算法的主要差别在于,加密和解密的密钥不相同,一个公开(公钥),一个保密(私钥)。解决了对称加密算法密钥分配管理的问题,提高了算法安全性。
密钥对儿:public key: pk公钥, secret key: sk私钥
特性:
身份认证:发送方使用自己的私钥加密数据,接收方使用与之公钥解密;
密钥交换:发送方使用接收方的公钥加密数据,接收方使用自己的私钥解密;
非对称加密算法:RSA、DSA、ELGamal
3、单向加密:对数据按照一定算法生成特征码,具有不可逆性。
特性:
消息认证:只用于验证消息本身,需要加密特征码。
雪崩效应:输入数据的微小改变,会导致结果巨大变化。
定长输出:无论输入数据多长,只要使用同一种单向加密算法,输出结果的长度都相同。
单项加密算法:MD5(128bits)、SHA1(160bits)、SHA256、SHA384、SHA512
PKI:Public Key Infrastructure
签证机构: CA
注册机构:RA
证书吊销列表:CRL
证书存取库
x.509:数字证书的证书格式;
版本号
序列号
签名算法ID
发行者的名称
有效期
主体名称
主体公钥
发行者唯一标识符
主体的唯一标识
扩展
发行者的签名
=========================================================================
下图完善的为大家讲解了如何进行一次加密通信~
二、Openssl的基础应用以及创建CA证书与分发;
1)openssl程序包是一套用于SSL(安全套接字层)/TLS(传输层安全)协议的加密工具,有如下三个组件组成;
1、openssl:多用途的命令行工具,各功能分别使用子命令实现;
2、libcrypto:公共加密库
3、libssl:用于实现SSL/TLS的功能
2)openssl命令行;
对称加密:
工具:openssl enc, gpg
算法:des, 3des, aes, blowfish, twofhish, rc6, idea, cast5
enc工具:
加密# openssl enc -e -CIPHERNAME -a -salt -in /path/from/somefile -out /path/to/somecipher.file
-e:默认是加密
-CIPHERNAME:使用的加密算法
-a :使用base64转码
-salt:加杂质
-in /path/from/somefile :要加密的原文件
-out /path/to/shmecipher.file: 指定加密后文件的存储位置
解密# openssl enc -d -CIPHERNAME -a -salt -in /path/from/somecipher.file -out /path/to/someclear.file
-d : 解密
-ciphername:使用解密算法时要与加密算法保持一致
-a :使用base64转码
-salt:加杂质
-out /path/to/someclear.file :需要解密的文件
-in /path/from/somecipher.file :解密后存放的文件位置
单向加密:
特性:One-Way, Collision-free
工具:md5sum, sha1sum, sha256sum, sha512sum, openssl dgst, chsum
算法:md5, sha1, sha256, sha384, sha512
用法:
# openssl dgst [-md5|-sha1] [-out /path/to/somedgst.file] /path/from/someclear.file
MAC:消息认证码,单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性;
机制:CBC-MAC
HMAC: 使用md5或sha1算法
生成用户密码:
openssl passwd -1 -salt SALT
生成随机数:
openssl rand -base64|-hex NUM
NUM: 表字节;-hex时,每个字符为4位,因此,两个字符为一个字节;
公钥加密:
工具:gpg, openssl rsautl
算法:RSA, ELGamal
数字签名:
算法:RSA, DSA, ELGamal
密钥交换:
算法:公钥加密、DH
生成密钥对儿:
# (umask 077; openssl genrsa -out /path/to/PRIVATEKEY.FILE NUM_BITS)
从私钥中提取公钥:
# openssl rsa -in /patn/from/PRIVATEKEY.FILE -pubout
3)X.509证书
公钥和有效期;
持有者的个人身份信息;
证书的使用方式;
证书发放机构的信息;
验证CA的数字签名是否合法;
4)实验环境 server :172.16.249.134
client:172.16.249.221
1、server端生成密钥对
使用# (umask 077; openssl genrsa -out /path/to/PRIVATEKEY.FILE NUM_BITS)
# openssl req -new -x509 -key private/cakey.pem -days 3655 -out cacert.pem
3、当第一次生成证书时,需要手动创建一个序列号文件serial
4、Client实现证书申请
在client上生成私钥文件,并保存至应用此证书的服务的配置文件目录下:
假设:用httpd服务,因此其位置为/etc/httpd/conf/certs/
5、在client生成证书签署请求
(Client端所填的信息要与服务器一致)注:私有CA 一般都构建于一个公司内部,是使公司内部间传送数据实现加密,所以在服务器端申请证书签署文件时 里面填写的subject信息要与CA保持一致 这样在CA签署时 才可以通过~
6、Clientc端将请求文件发往Server端;
7、CA签署Client发来的证书申请;
8、签署完全后将证书发回申请者;
注意:每一个需要接收服务器发来的证书,并验正证书合法性的客户端主机,都必须拥有CA的证书才能进行;
9、吊销证书
在client获取证书的serial串号
在server端根据证书持有者提交的serial和subject信息和inodex。txt数据库中的文件一致
,则吊销证书;
10、生成吊销证书的编号(如果是第一次吊销)
11、而后在server端吊销
12、更新吊销列表
# cd /etc/pki/CA/crl/
# openssl ca -gencrl -out thisca.crl
注意:查看crl文件的方法
# openssl crl -in /path/from/somefile.crl -noout -text
本文出自 “囊萤映雪” 博客,请务必保留此出处http://664778789.blog.51cto.com/7534952/1588371
原文地址:http://664778789.blog.51cto.com/7534952/1588371