欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

加密算法与CA证书(CA,SSL/TLS,HTTPS,openssl)

程序员文章站 2022-07-12 21:54:18
...

加密算法

安全

信息安全:
保密性,完整性,可用性,可控制性
常见安全技术:
认证,授权,审计,安全通信

对称加密算法

加密和解密使用同一个**
特性:效率高
缺点:**分发,数据来源无法确认
算法:DES,3DES等

非对称加密算法

通讯双方都拥有公钥和私钥
特性:数据加密,公钥加密需使用私钥解密,反之亦然
数字签名,接受者可以确认发送者身份
缺点:**长,算法复杂,效率低
算法:RSA,DSA

非对称加密实现加密
1传输数据给2,使用2的公钥加密,2使用2的私钥解密,不保证数据来源
非对称加密实现数字签名
1传输数据给2,使用1的私钥加密,2使用1的公钥解密,不保证数据安全

单向散列算法:哈希算法

特性:任意长度数据生成固定长度摘要
数据稍微不同,摘要完全不同
数据不可逆,不能通过摘要生成数据
可以保证数据完整性
算法:sha1,md5

数字签名

通讯: a → b
a使用哈希算法计算数据生成摘要,再使用自己的私钥加密
b使用a的公钥解密,再使用哈希算法得到摘要,相同则确认数据安全和数据来源

数据加密

通讯: a → b
a使用对称**加密数据名,再使用b的公钥加密
b使用b的私钥加密,再使用对称**解密

综合加密算法

对称key{Sa[hash(data)]+data}+Pb(对称key)
a使用哈希算法生成摘要,再使用私钥a加密数据和摘要,再使用对称**加密,最后使用公钥b加密对称**
b使用私钥b解密,再使用对称**解密,再使用公钥a解密,哈希算法得到摘要,摘要信息相等到数据

密码交换

方式: HE
公钥加密
DH:回话**,迪菲赫尔曼

中间人攻击

MITM,中间人
client向server请求公钥,中间人用自己的假公钥换掉server的真公钥
clinet使用假公钥加密的数据y,中间人使用假**查看修改为x,再使用server真公钥加密
server查看到的是中间人的x数据

CA和证书

PKI:公共**加密体系

证书: 由证书签证机构CA颁发,对公钥进行签名和认证,保证公钥的唯一性和合法性

证书结构:X509格式
版本,序列,签名算法,颁发者,使用者,有效期,公钥

签证机构:CA
吊销列表:CRL
证书类型:证书授权机构的证书,服务器证书,用户证书
证书获取方式: 自签名证书,证书机构颁发的证书

安全协议SSL/TLS

安全通讯协议,实现认证,机密性,完整性校验,重放保护
工作在TCP/IP分层的应用层和传输层之间

**交换+签名
ECDHE**交换,RSA数字签名
ECDHE**交换,ECDSA数字签名

HTTPS协议★

HTTPS协议: 就是“HTTP”和“TLS”的组合。
在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性

过程:
1,客户端发起HTTPS请求
2,采用HTTPS协议的服务器必须要有数字证书,如果为自签名证书,需要客户端通过验证才能访问,如果是受信任的公司申请的证书则不会提示
3,服务器传输证书给客户端
4,客户端通过TLS协议解析服务器证书,验证公钥是否有效,颁发机构以及过期时间等,如果异常,提示证书存在问题。如果证书没有问题,生成随机值,使用证书中的公钥进行非对称加密。
5,客户端将加密信息(加密后的随机值等)传输给服务器
6,服务器端通过私钥解密得到随机值
7,服务器端通过随机值对数据进行对称加密发送给客户端
8,客户端使用之前生成的随机值解密数据,得到数据

OpenSSL

OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连线者的身份。这个包广泛被应用在互联网的网页服务器上

base64编码

使用64个可打印字符表示二进制数据

ascii码,base64码
例:
echo -n Man | base64
TWFu

echo TWFu | base64 -d
Man

echo 'ibase=16;obase=2;4D' | bc
1001101

openssl实现对称加密

OpenSSL enc 
加密: openssl enc -e -des3 -a -salt -in ff -out ff.key
解密: openssl enc -d -des3 -a -salt -in ff.key -out ff

openssl实现单向加密(哈希算法)

openssl dgst 
算法: md5 ,sha1 ,sha256等

openssl dgst -md5 f2 
MD5(f2)= e96f0d57478f3e285dddeb719694cc7a

openssl dgst -sha1 f2 
SHA1(f2)= 9217e55181ef60bd14397fb67c59bfd08fbc2ab4

openssl dgst -sha256 f2 
SHA256(f2)= 5904729472824dd37ff04493d9411f8a0a1d7a61e7c583890bb6f2dd20602a5f

openssl实现KPI

生成私钥
openssl genrsa -out  ff.key

生成使用对称**加密的私钥
openssl genrsa -out ff.key -des 1024
chmod 600 ff.key

将加密对称秘钥key解密
openssl rsa -in ff.key –out ff2.key

通过私钥提取公钥
openssl rsa -in ff.key –pubout –out ffg.key

openssl创建私有CA实现证书申请颁发

Windows   查看证书需使用crt 后缀 
windows添加证书需放入受信任区域
*.baidu.com  泛域名证书

openssl配置文件,CA相关信息
  /etc/pki/tls/openssl.conf
policy  选项则代表证书与CA证书的同步关系

CA配置文件 
/etc/pki/CA/
          index.txt             证书数据库文件,包括证书状态等
          serial                下一个证书编号文件
          cacert.pem            CA自签名证书文件
          /private/cakey.pem    CA私钥文件
          /certs/               证书颁发文件夹
          /newcerts/            新证书颁发文件夹
          crl.pem               吊销证书列表
          crlnumber             证书吊销编号文件
          
创建私有CA 
 yum install openssl -y  &>/dev/null
#创建CA需要的文件
 mkdir -pv /etc/pki/CA/{certs,crl,newcerts,private} &>/dev/null
 chmod 600 /etc/pki/CA/private
 touch /etc/pki/CA/index.txt
 echo 01 > /etc/pki/CA/serial
#生成证书私钥
openssl genrsa -out /etc/pki/CA/private/cakey.pem  &>/dev/null
#生成CA自签名证书
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out  /etc/pki/CA/cacert.pem <<EOF
CN                 国家代码  
beijing            省
beijing            市
yun                组织
it                 部门
www.ssy.org        使用者,网址
/n                 邮箱
EOF                 


用户申请证书并颁发证书
#生成使用证书需要的私钥文件
openssl genrsa  -out /data/mysql.key 1024
#生成证书申请文件
openssl req -new -key /data/mysql.key -out /data/mysql.csr <<EOF
CN
beijing
beijing
yun
it
www.shishengyun.com

EOF
#CA为申请者颁发证书
openssl ca -in /data/mysql.csr  -out /etc/pki/CA/certs/mysql.crt -days 365 


证书吊销
openssl ca -revock /etc/pki/CA/certs/mysql.crt
指定第一个证书吊销编号
echo 01 > /etc/pki/CA/crlnumber
生成或更新证书吊销列表
openssl ca -gencrl -out /etc/pki/CA/crl.pem

#查看证书状态
cat /etc/pki/CA/index.txt 
#查看证书
openssl x509  -in mysql.crt -noout -text