加密解密技术基础,PKI以及创建私有CA
-
加密算法和协议:
1.对称加密:加密和解密使用同一个密钥DES:Data Encryption Standard; 3DES:Triple DES; AES:Advanced Encryption Standard; (128bits, 192bits, 256bits, 384bits) Blowfish Twofish IDEA RC6 CAST5 特性: (1)加密、解密使用同一个密钥; (2)将原始数据分割成为固定大小的块,逐个进行加密; 缺陷: (1)密钥过多; (2)密钥分发困难;
2.公钥加密:密钥分为公钥与私钥
公钥:从私钥中提取产生;可公开给所有人;pubkey 私钥:通过工具创建,使用者自己留存,必须保证其私密性;secret key; 特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然; 用途: 数字签名:主要在于让接收方确认发送方的身份; 密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方; 数据加密 算法:RSA, DSA, ELGamal DSS: Digital Signature Standard DSA:Digital Signature Algorithm
3.单向加密:即提出数据指纹;只能加密,不能解密;
特性:定长输出、雪崩效应; 功能:完整性; 算法: md5:Message Digest 5, 128bits sha1:Secure Hash Algorithm 1, 160bits sha224, sha256, sha384, sha512
4.密钥交换: IKE(Internet Key Exchange)
公钥加密 DH(Deffie-Hellman) 例如: A:p, g B:p, g A: x--> p^x%g ==> B A: (p^y%g)^x=p^yx%g B: y--> p^y%g ==> A B: (p^x%g)^y=p^xy%g
5.一次加密通信过程:
A: (1):128bit的特征码单向加密成数字摘要
(2):将数字摘要和原文前面加上A的私钥
(3):将A的私钥和特征码用对称加密
(4)对称加密前面加上B的公钥
B:(1):B用自己的私钥解密获得对称空间
(2):用对称密钥解密加密内容
(3):用A的公钥单向加密生成特征码
(4):用此特征码和原来的比较是否一样 - PKI以及SSL会话
- PKI:公钥基础设施
签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库
X.509:定义了证书的结构以及认证协议标准
版本号;序列号;签名算法ID;发行者名称;有效期限;主体名称;主体公钥;发行者的惟一标识;主体的惟一标识;扩展;发行者的签名
2.SSL会话主要三步:
客户端向服务器端索要并验正证书;
双方协商生成“会话密钥”;
双方采用“会话密钥”进行加密通信;
SSL Handshake Protocol:
第一阶段:ClientHello:
支持的协议版本,比如tls 1.2;
客户端生成一个随机数,稍后用户生成“会话密钥”
支持的加密算法,比如AES、3DES、RSA;
支持的压缩算法;
第二阶段:ServerHello
确认使用的加密通信协议版本,比如tls 1.2;
服务器端生成一个随机数,稍后用于生成“会话密钥”
确认使用的加密方法;
服务器证书;
第三阶段:
验正服务器证书,在确认无误后取出其公钥;(发证机构、证书完整性、证书持有者、证书有效期、吊销列表)
发送以下信息给服务器端:
一个随机数;
编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送
客户端握手结束通知;
第四阶段:
收到客户端发来的第三个随机数pre-master-key后,计算生成本次会话所有到的“会话密钥”;
向客户端发送如下信息:
编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;
服务端握手结束通知;
- PKI:公钥基础设施
- 创建私有CA
1.构建私有CA:
在确定配置为CA的服务上生成一个自签证书,并为CA提供所需要的目录及文件即可步骤: (1)生成私钥: (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) ():作用域子shell进程 (2) 生成自签证书; openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655 -new:生成新证书签署请求; -x509:生成自签格式证书,专用于创建私有CA时; -key:生成请求时用到的私有文件路径; -out:生成的请求文件路径;如果自签操作将直接生成签署过的证书; -days:证书的有效时长,单位是day; (3)为CA提供所需的目录及文件; mkdir -pv /etc/pki/CA/{certs,crl,newcerts} touch /etc/pki/CA/{serial,index.txt} echo 01 > /etc/pki/CA/serial
2.要用到证书进行安全通信的服务器,需要向CA请求签署证书
步骤:(以nginx为例) (1) 用到证书的主机生成私钥; mkdir /etc/nginx/ssl cd /etc/nginx/ssl (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) (2) 生成证书签署请求 openssl req -new -key /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.csr -days 365 (3) 将请求通过可靠方式发送给CA主机; scp /etc/nginx/ssl/nginx.csr [email protected]:/tmp/ (4) 在CA主机上签署证书; openssl ca -in /tmp/nginx.csr -out /etc/pki/CA/certs/nginx.crt -days 365 (5)查看证书中的信息: openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject [[email protected] /]# openssl x509 -in /etc/pki/CA/certs/nginx.crt -noout - serial -subject serial=01 subject=/C=CN/ST=Shanghai/O=cern/OU=devops/CN=devops.com
3.吊销证书:
步骤:(1) 客户端获取要吊销的证书的serial(在使用证书的主机执行): openssl x509 -in /etc/pki/CA/certs/nginx.crt -noout -serial -subject (2) CA主机吊销证书: 先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致; 吊销: openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem 其中的SERIAL要换成证书真正的序列号; (3) 生成吊销证书的吊销编号(第一次吊销证书时执行) echo 01 > /etc/pki/CA/crlnumber (4) 更新证书吊销列表 openssl ca -gencrl -out thisca.crl
原文地址:https://blog.51cto.com/14418331/2426210
时间: 2024-10-29 19:10:30