SSL(安全套接层)是为网络通讯提供安全及数据完整性的一种安全协议,TLS(SSL的继承版本)与SSL在传输层对网络连接进行加密。
SSL用以保障在数据传输的安全利用数据加密技术,可确保数据在网络上之传输过程中不会被窃取和监听。
功能:机密性,认证,完整性,重放保护
两阶段协议,分为握手阶段和应用阶段
握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。
应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信
OpenSSL:是ssl的开源项目
三个组件:
openssl: 多用途的命令行工具,包openssl
libcrypto: 加密算法库,包openssl-libs
libssl:加密模块应用库,实现了ssl及tls,包nss
openssl命令:
两种运行模式:交互模式和批处理模式
对称加密:openssl enc -e
openssl enc -e -des3 -a -salt -intestfile -out testfile.cipher//-a表示base64编码,-salt加盐添加杂质更安全,
对称解密:openssl enc -d
openssl enc -d -des3 -a -salt –in testfile.cipher -outtestfile
openssl dgst -md5 [-hex默认]/PATH/SOMEFILE
openssl dgst -md5 testfile
生成随机数 base64编码或16进制
opensslrand -base64|-hex NUM
非对称加密:
使用openssl生成密钥对公钥和私钥man genrsa
#openssl rsa -in private.key -out private.key2 //对加密的私钥解密
生成公钥:从私钥中提取公钥
#openssl rsa -in private.key-pubout -out public.key
二、CA实现双方安全交换公钥 搭建CA实验 用openssl向CA申请证书
CentOS7当服务器,CentOS6当客户端,CentOS6向CentOS7申请证书
dir 变量 存放CA的工作目录
certs =$dir/certs //专门放证书的
crl =$dir/crl //放证书吊销列表
database =$dir/index.txt //数据库索引文件记录了证书的状态啊编号啊以及都给谁颁发了证书默认不存在。需要手工创建,不创建会提示 缺少这个文件
-------------------------------------------------------------------------------------------------------
new_certs_dir =$dir/newcerts //存放新证书目录
certificate =$dir/cacert.pem //CA的证书文件
serial =$dir/serial //序列号下一个要颁发的证书编号 16进制数
crlnumber =$dir/crlnumber //吊销证书的编号 需要手工创建
crl =$dir/crl.pem //吊销证书列表
private_key =$dir/private/cakey.pem//私钥文件的路径和名
策略匹配/不同的策略匹配程度不一致,比如CA国家城市,部门等,私有CA(三个必须一致)公有CA(可选)
搭建CA具体步骤:
1.建立根CARoot CA(自己给自己颁发证书)
1)生成私钥文件
#(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
2)生成自签名证书 CA要有证书
#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out/etc/pki/CA/cacert.pem -days 3650
//req:申请;-x509:自签名
//查看证书内容 openssl x509 -in cacert.pem -noout -text
//图形方式 sz cacert.pem 改后缀crt
2.用户服务器 申请证书
1)生成私钥
#(umask 077;openssl genrsa -out app.key 1024)
2)生成证书申请文件
#openssl req -new -key app.key -out app.csr
3)将申请文件发给CA
#scp app.csr 172.21.109.25:/etc/pki/CA
3.CA颁发证书--用自己的私钥签名
#touch index.txt //这个文件会自动更新
#echo 0F > serial //下一个要颁发的证书的编号
#openssl ca -in app.csr -out certs/app.crt-days 100
4.证书发送客户端
#scp certs/app.crt 172.21.111.1:/data
5.在应用软件中使用证书