标签:ssl
ssl
加密算法和协议:
对称加密:加密和解密使用同一个密钥;
依赖于:算法和密钥;
安全性依赖于密钥,而非算法
非对称加密:公钥加密
密钥对儿:私钥和公钥
私钥:secret key,仅允许个人使用;
公钥:public key,公开给所有获取;
公钥从私钥中提取而来;使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密;反之亦然;
用处:
身份认证:私钥拥有者用自己的私钥加密的数据,只要用其公钥能解密,即可认证其身份;
密钥交换:与被通信方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发送给对方;
数据加密:
算法:
RSA
DSA
ELGamal
特性:
1、密钥长度较大,例如512bits, 2048bits, 4096bits
2、加密解密分别使用密钥对儿中的密钥相对进行;
3、常用于数据签名和密钥交换;
单向加密:提出数据的特征码;
特性:
1、定长输出:无论原来的数据是多大级别,其加密结果长度一样;
2、雪崩效应:原始数据微小改变,将会导致结果巨大变化;
3、不可逆:
算法:
MD5:128bits定长输出;
SHA1:160bits定长输出;
SHA256
SHA384
SHA512:
CRC32
密码保存路径/etc/shadow:
$#$#######$##############################################
用处:
1、数据完整性;
一次加密通信过程
发送者:
1、使用单向加密算法提取生成数据的特征码;
2、使用自己的私钥 加密 特征码附加在数据后面;
3、生成用于对称加密的临时密钥;
4、用此临时密钥 加密数据和已经使用私钥加密后的特征码;
5、使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后方;
接收方:
1、使用自己的私钥解密加密的临时密钥;从而获得对称密钥;
2、使用对称密钥解密对称加密的 数据和私钥加密的特征码密文;从而获得数据和特征码密文;
3、使用发送方的公钥解密特征码密文,从而获得从计算生成的特征码;
4、使用与对方同样的单向加密算法计算数据的特征码,并与解密而来的进行比较;
数字证书:
签证机构:CA
注册机构:RA
证书吊销列表:CRL
功用:保证公钥信息安全分发;
openssl的组成部分:
libcrypto:加密、解密库文件;
libssl: ssl协议实现
openssl:多用途命令行工具,每种功能都使用专用的子命令来实现
加密文件(对称加密):
工具:openssl enc, gpg(注:随便输入错误openssl+错误输入能得到帮助)
算法:des, des3, aes, blowfish, twofish, idea, cast5
enc工具:
man enc
-e:对输入数据进行加密
-salt:随机数加密
-in:需要加密的文件
-out:加密后输出路径
-a:编译成ASCII码存放
# openssl enc -e -CIPHERNAME (算法名)-a -salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/SOMECIPHERFILE
# openssl enc -d -CIPHERNAME -a -salt -in /PATH/FROM/SOMECIPHERFILE -out /PATH/TO/SOMEFILE
单向加密:
算法:md5, sha1
工具:openssl dgst, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum
# openssl dgst -CIPHERNAME(如:sha1 md5)/PATH/TO/SOMEFILE...
MAC: 消息认证码,单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性;
机制:
CBC-MAC
HMAC:使用md5或sha1算法
生成用户密码:
# openssl passwd -1 -salt 8bits随机数
生成随机数:
# openssl rand 【-hex|-base64 】NUM
OpenSSL(2)
公钥加密:
工具:gpg, openssl rsautl
数字签名:RSA, DSA, ELGamal
DSA: Digital(数字) Signature(签名) Algorithm(算法)
DSS: Digital Signature Standard
密钥交换:
公钥加密、DH
生成密钥对儿:
操作过程:生成私钥,从私钥中提取公钥;
# openssl genrsa -out /PATH/TO/PRIVATE_KEYFILE NUM_BITS
注意:在bash命令行上放在小括号中执行的命令,其实是通过打开一个子shell进程进行的;
#(umask 077; openssl genrsa -out /PATH/TO/PRIVATE_KEYFILE NUM_BITS)
从私钥中手动提取公钥:
# openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE -pubout
-pubout :输出公钥信息
随机数生成器:
random, urandom
熵池:保存硬件中断产生的随机数
/dev/random:仅从熵池中返回随机数,当熵池中的随机数耗尽时,取随机数的进程将会被阻塞;
/dev/urandom:先从熵池中取随机数,当熵池中的随机耗尽时,就通过伪随机数生成器生成随机数;
X.509 v3数字证书的格式:
CA通过证书证实他人的公钥信息,证书上有ca的签名
获取证书的方法:
向RA注册
建立私有CA:
OpenSSL
OpenCA
使用OpenSSL构建私有CA:
1、生成私钥;
2、生成自签署证书;
(1) 私钥用于签发证书时,向证书添加数字签名使用;
(2) 证书:每个通信方都导入此证书至“受信任的证书颁发机构”;
配置文件:/etc/pki/tls/openssl.cnf
工作目录:/etc/pki/CA/
建立私有CA:
信息输入错误 ctrl键删除
1、生成私钥文件: /etc/pki/CA/private/cakey.pem
# (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时才这么用;
3、提供辅助文件 注:一定要创建啊!!!!
# touch /etc/pki/CA/index.txt
# echo 01 > /etc/pki/CA/serial
给节点发证书:
1、节点申请证书
在证书申请的主机上进行如下步骤:
(1) 生成私钥;
(2) 生成证书签署请求;
注意:
(a) 其中的subject信息部分,要与CA的保持一致;
(b) Common Name要使用此主机在通信真实使用名字;
(3) 把请求发送给CA;
2、CA签发证书
(1) 验正请求者信息
(2) 签署证书
# openssl ca -in /PATH/FROM/CSR_FILE -out /PATH/TO/CRT_FILE -days N
(3) 把签署好的证书发还给请求者
数字证书一般.crt结尾 证书请求.csr结尾
吊销证书:
1、获取吊销证书的序列号;
# openssl x509 -in /PATH/FROM/CRT_FILE -noout -serial -subject
2、实现证书吊销
(1) 吊销证书
# openssl ca -revoke /PATH/FROM/CRT_FILE
(2) 生成吊销证书的编号
echo 01 > /etc/pkie/CA/crlnumber
(3) 更新证书吊销列表
# openssl crl -gencrl -out THISCA.crl
标签:ssl
原文地址:http://zha0lei.blog.51cto.com/4728300/1649951