加密incode:对明文(可读懂的信息)进行翻译,使用不同的算法对明文以代码形式(密码)实施加密。该过程的逆过程称为 解密(descode),即将该编码信息转化为明文的过程
常见的加密算法和协议:
1、对称加密
2、公钥加密(非对称加密)
3、单向加密
4、认证协议
对称加密:加密和解密使用同一个密钥,依赖于,算法和密钥,其安全性依赖于密钥而非算法
常见算法:DES、3DES、 AES、Blowfish、IDEA、Twofish、CAST5、Rc6
特性:1)加密解密使用同一密钥
2)将明文分隔成固定大小的块,逐个进行加密
缺陷:1)密钥过多
2)密钥分发
非对称加密:即公钥加密,
密钥对儿:私钥(仅允许个人使用)和公钥(公开给所有人获取)
公钥从私钥中提取而来(使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密,反之亦然)
用处:
1)身份认证:私钥拥有者用自己私钥加密的数据,只要用其公钥能解密,即可认证其身份
2)密钥交换:任何一个人计划与被通讯方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发给对方
3)数据加密
算法:RSA、DSA 实现数字签名、ELGamal
特性:1)密钥长度较大,512bit,2048bits,4096bits
2)加密解密分别使用密钥对儿中的密钥对进行
3)常用于数据签名和密钥交换
单向加密:数据能加密但不能解密,用于提取数据的特征码
特性:
1)定长输出:无论原来的数据是多大级别,其加密结果长度一样
2)雪崩效应: 原始数据微小改变,将会导致结果巨大变化;
3)不可逆:
算法:MD5:128bits定长输出、SHA1:160bit定长输出、SHA256、 SHA384、SHA512、CRC32循环冗余校验
下面说说OpenSSL如何搭建CA
Openssl是SSL的开源实现(可以免费下载应用程序),是一种安全机密程序,主要用于提高远程登录访问的安全性。也是目前加密算法所使用的工具之一,功能很强大。
Openssl为网络通信提供安全及数据完整性的一种安全协议,包括了主要的密码算法、常用的密钥和证书封装管理功能(CA)以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用,例如我们将会使用Openssl实现私有CA,并实现证书颁发。
openssl的组成部分:
libscrypto:加密、解密库文件
libssl:ssl协议实现
openssl:多用途命令行工具,每种功能都使用专用的子命令来实现
SSL:(Secure Socket Layer)安全套接字层,通过一种机制在互联网上提供密钥传输。其主要目标是保证两个应用间通信数据的保密性和可靠性,可在服务器端和用户端同时支持的一种加密算法。目前主流版本SSLV2、SSLV3(常用)。
使用OpenSSL构建私有CA:
1、生成私钥:
2、生成自签署证书:
(1)私钥用于签发证书时,向证书添加数字签名使用;
(2)证书:每个通信方导入此证书至"受信任的证书颁发机构"
配置文件:/etc/pki/tls/openssl.cnf
工作目录:/etc/pki/CA/
建立私有CA思路:
1、生成私钥文件 /etc/pki/CA/private/cakey.pem(存放)
# cd /etc/pki/CA
# (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时才这么用,如果没有x509则为签署请求
3、提供辅助文件
给节点发证书:
1、节点申请证书:在证书申请的主机进行如下步骤
(1)生成私钥
(2)生成证书签署请求
注意:其中的subject信息部分,要与CA的保持一致
Common Name要使用此主机在通信真实使用名字
(3)把请求发送给CA;让CA以便发出请求
2、CA签发证书
(1)验证请求者信息
(2)签署证书
# openssl ca -in /PATH/FROM/CSR_FILE -out /PATH/TO/CRT_FILE -days N
(3)把签署好的证书发还给请求者
下面以http为例具体实现CA的搭建:
# cd /etc/httpd/
# ls
# touch index.txt
# echo 01 > serial
# mkdir ssl
# cd ssl
# (umask 077;openssl genrsa -out httpd.key 1024) 生成密钥
# ll
# openssl req -new -key httpd.key -out httpd.csr 证书签署请求
-->输入相关信息
-->两次回车使用空密码
# ll
# openssl ca -in /etc/httpd/ssl/httpd.csr -out /etc/httpd/ssl/http.crt -days 3650 签署证书 直接签署证书
出现红色标识部分,说明 签署成功
吊销证书:
1、获取吊销证书的序列号
# openssl x509 -in /PATH/FROM/CRT_FILE -serial -subject
# openssl x509 -in /etc/httpd/ssl/http.crt -serial -subject
2、实现证书吊销:根据证书持有者
确保一致
(1)吊销证书
# openssl ca -revoke /PATH/FROMCRT_FILE
(2)生成吊销证书的编号
echo 01 > /etc/pki/CA/crlnumber
(3)更新证书吊销列表
# openssl crl -gencrl -out THISCA.crl