一、openssl简介
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用
的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
SSL:secure socket layer 安全套接层协议 可以在internet提供秘密性的传输。
二、加密算法
加密算法的分类:对称、公钥和单向加密
1、对称加密:
加密和解密用同一个密钥,安全性依赖于密钥,而非算法。
(1)算法:
DES:Data Encryption standard,数据加密标准,56bits
3DES:DES加强版
AES:Advanced encrption standard 高级加密标准(128bits,192,256,382,512,)
可自行选择加密位数,常用算法
blowfish
twofish
tdea
rc6
casts
(2)特性
1)同一密钥
2)将明文分隔成固定大小的块,逐个进行加密
(3)缺陷
1)密钥过多
2)密钥分发
2、公钥加密:
(1)私钥和公钥
私钥:secret key,仅允许个人使用
公钥:public key,公开给所有人获取
公钥从私钥中提取而来,使用公钥加密的数据,只能使用与此公钥配对配对的私钥解密
(2)用处:
1)身份认证:私钥拥有者用自己的私钥加密的数据,只要用其公钥能解密,即可认证其身份;
2)密钥交换:与被通信方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发送给对方;
3)数据加密:
(3)算法:
RSA
DSA
ELGamal
(4)特性
1)密钥长度较大,512,2048
2)加密解密分别使用密钥对儿中的密钥相对进行
3)用于数据签名和密钥交换
3、单向加密:
提取数据的特征码
(1)特性
1)定长输出,无论原来数据的大小,加密长度一样
2)雪崩效应:原数据微小改变,导致结果巨大变化
3)不可逆
(2)算法:
MD5:128bit
sha1 160
sha256
sha384
sha512
(3)用处:
数据完整性
4、一次加密通信过程
发送者:
(1)提取数据特征码
(2)私钥加密特征码
(3)生成临时密钥
(4)临时密钥加密数据和加密过的特征码
(5)使用接收方公钥加密临时密钥,附加在数据后方
接收方:
(1)用私钥解密,获得临时密钥
(2)使用临时密钥解密数据和特征码
(3)用对方公钥解密特征码
(4)计算特征码,与解密的对比
三、数字证书
1、数字证书的定义:
数字证书:互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在
Internet上验证通信实体身份的方式,数字证书不是数字***,而是身份认证
机构盖在数字***上的一个章或印。
它是由一个由权威机构——CA机构,又称为证书授权(Certificate Authority)
中心发行的,人们可以在网上用它来识别对方的身份。
2、数字证书的格式与用户
(1)数字证书的格式(x.509 ):
版本号(version)
序列号:(serial number):CA用于唯一标识证书
签名算法标志(signature algorithm identifier)
发行者的名称:即CA自己的名称
有效证书主体名称:证书拥有者自已的名字
证书文体公钥信息:证书拥有者自己的公钥
发行商的唯一标识
证书主体的唯一标识
扩展信息
签名:CA对此证书的数字签名
(2)证书通常有两类用途
用户证书
主机证书(httpd)
3、证书的吊销链表:
算法-->CA的名称-->本次更新时期-->下次更新日期-->用户证书序列号,吊销日期-->CA的数字签名
4、获取证书的方法:
(1)向RA注册申请
(2)建立私有CA
四、openssl加密解密:
1、openssl 的组成部分
libcrypto:加密、解密库文件
libssl:ssl协议实现
openssl:多用途命令行工具,每种功能都使用专用 的子命令来实现
2、对称加密
工具:openssl enc
算法:des,3des,aes
openssl enc -e -CIPHERNAME -a salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/FILE
openssl enc -d -CIPHERNAME -a salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/FILE
#cp /etc/fstab ./
#openssl enc -e -des3 -a -salt -in fstab -out fstab.des3
#openssl enc -d -des3 -a -salt -in fstab.des3 -out fstab
3、公钥加密
工具:gpg,openssl rsautl
数字签名:RSA,DSA,ELGamal
DSA:digital signature algorithm 数字签名算法
DSS:digital signature standard 数字签名标准
操作过程 :生成私钥,从私钥中提取公钥
(1)生成私钥:
openssl genrsa -out keyFILE NUM_BITS
#openssl genrsa -out testkey 2048
(umask 077;openssl genrsa -out KEY_FILE NUM_BITS)
#(umask 077;openssl genrsa -out testkey 2048)
注意:命令加(),会在子shell中运行,修改默认生成私钥权限
(2)提取公钥
#openssl rsa -in KEY_FILE -pubout
#openssl rsa -in testkey -pubout
4、单向加密
算法:md5,sha1
工具:openssl dgst,md2sum,sha1sum
openssl dgst -CIPHER /PATH/TO/SOMEFILE...
#openssl dgst -md5 fstab
#md5sum fstab
5、生成用户密码:
openssl passwd -1 -salt 8bits 随机数 -1表示以MD5加密
#openssl passwd -1 -salt 12345678
6、生成随机数
openssl rand -hex|-base64 NUM
#openssl passwd -1 -salt $(openssl rand -hex 4)
openssl
7、随机数生成器
random,urandom
熵池:保存硬件中断产生的随机数
/dev/random 仅从熵池中返回随机,当熵池耗尽,进程将被阻塞
/dev/urandom 取随机数,当熵池耗尽,让生成器生成随机数
五、构建私有CA
配置文件:/etc/pki/tls/openssl.conf
工作目录:/etc/pki/CA/
1、建立私有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 3650
-new :生成新的证书签署请求
-key 私钥文件路径,用于提取公钥
-days N:有效时长 ,天
-out:输出文件保存位置
-x509:直接输出自签署证书文件,只有构建CA时才用
(3)提供辅助文件
#cd /etc/pki/CA
#touch /etc/pki/CA/index.txt
#echo 01 >/etc/pki/CA/serial
2、给节点发证书
(1)节点申请证书
1)生成私钥
#cd /etc/httpd
#mkdir ssl
#(umask 077;openssl genrsa -out httpd.key 1024)
2)生成证书签署请求
#openssl req -new -key httpd.key -out httpd.csr
注意:
a)其中subject信息部分与CA一致
b)common Name 要使用此主机在通信使用名字
3)把请求发送给CA
(2)CA签发证书
1)验正请求者信息
2)签署证书
openssl ca -in CSR_FILE -out CRT_FILE -days N
#openssl ca -in /etc/httpd/ssl/http.csr -out /etc/httpd/ssl/httpd.crt -days 3650
3)把签署好的证书发还给请求者
3、吊销证书:
(1)获取吊销证书的序列号
openssl x509 -in CRT_FILE -noout -serial -subject
#openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -serial -subject
(2)实现证书吊销
1)吊销证书
#openssl ca -revoke CRT_FILE
2) 生成吊销证书编号
#echo 01 >/etc/pkie/ca/crlnumber
3)更新证书吊销列表
#openssl crl -gencrl -out SCA.crl
如果觉得《加密 解密以及Openssl建立私有CA》对你有帮助,请点赞、收藏,并留下你的观点哦!