本文共 3551 字,大约阅读时间需要 11 分钟。
此为学习马哥视频记录,向马哥致敬!!
加密算法和协议: 对称加密:数据加密(保密性),(3DS,AES) 公钥加密:身份认证、密钥交换、数据加密(不常用,比对称加密要慢3个数量级),(RSA,DSA) 单向加密:数据完整性(MD5,SHA1-------,) 密钥交换:RSA,DH,ECDH,ECDHE SSL/TLS s SSL:安全套接字层(ssl1.0,ssl2.0,ssl3.0) TLS:传输层安全(tls.0,tls1.1,tls1.2,tls1.3)OpenSSL
libcrypto libssl opensslSSL Handshake Protocol会话主要三步:
客户端向服务器端索要并验正证书; 双方协商生成“会话密钥”; 双方采用“会话密钥”进行加密通信;第一阶段:ClientHello: 支持的协议版本,比如tls1.2; 客户端生成一个随机数,稍后用户生成“会话密钥” 支持的加密算法,比如AES\RSA; 支持的压缩算法; 第二阶段:ServerHello 确认使用的加密能信协议版本,比如:tls1.2; 服务器端生成一个随机数,稍后用生成“会话密钥” 确认使用的加密方法; 服务器证书; 第三阶段: 验正服务器证书,在确认无误后取出其公钥;(发证机构,证书完整性,证书持有者,证书有效期,吊销列表) 发送以下信息给服务器端: 一个随机数; 编码变更通知; 客户端握手结束通知; 第四阶段: 收到客户端发来的第三个随机数pre-master-key后,计算生成本次会话所用到的“会话密钥”; 向客户端发送如下信息: 编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送; 服务端握手结束通知;
PKI:公钥基础设施
签证机构:CA 注册机构:RA 证书吊销列表:CRL 证书存取库X.509v3:定义了证书的结构以及认证协议标准
版本号 序列号 签名算法ID 发行者名称 有效期限 主体公钥 发行者的唯一标识 主体的唯一标识 扩展 发行者的签名OpenSSL的应用
组件: libcrypto,libssl 主要由开发者使用 openssl:多用途命令管理工具openssl: 众多子命令:分为三类: 标准命令 消息摘要命令(dgst子命令) 加密命令(enc子命令) 标准命令:enc ,ca ,req ,genrsa,------ 对称加密: 工具:openssl enc ,gpg 支持的算法:3des,aes,blowfish,towfish enc命令: 加密:#openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext 解密:#openssl enc -d -des3 -a -salt -out fstab. -in fstab.ciphertext 单向加密: 工具:openssl dgst, mdsum ,sha1sum, sha224sum,.... dgst命令: #openssl dgst -md5 /PATH/TO/SOMEFILE 生成用户密码: #openssl passwd -1 -salt 12345678 ;-1为md5加密 生成随机数: 工具:openssl rand #openssl rand -base64 NUM #openssl rand -base64 10 #openssl rand -hex 10 ;二进制编码 #openssl passwd -1 -salt $(openssl rand -hex 4 ) 公钥加密: 加密解密: 算法:RSA,ELGamal 工具:openssl rsault,gpg 数字签名: 算法:RSA,DSA,ELGamal 密钥交称: 算法:DH 生成密钥: 生成私钥:#(umask 077 ; openssl genrsa -out /PATH/TO/PRIVATE_KEY_FILE NUM_BITS) 提出公钥:#openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE -pubout linux系统上的随机数生成器: /dev/random:仅从熵池中返回随机数;随机数用尽,阻塞; /dev/urandom:从熵池中返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞; 熵池中的随机数来源: 硬盘IO中断时间间隔; 键盘IO中断时间间隔; 所以了但随机数用尽,可以适当的复制文件以生成随机数放入熵池中
CA:
公共信任的CA,私有CA 建立自己的CA; openssl OpenCA openssl命令: 配置文件: /etc/pki/tls/openssl.cnf构建私有 CA: 在确定配置为CA的服务器上生成一个自签证书,并为CA提供所需要的目录及文件即可; 步骤: (1)生成私钥; #(umask 077 ; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) (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
要用到证书进行安全通信的服务器,需要向CA请求签署证书:
步骤:(以http为例) (1)用到证书的主机生成私钥; #mkdir /etc/httpd/ssl #cd /etc/httpd/ssl #(umask 077; openssl genrsa -out httpd.key 2048) (2)生成证书签署请求; #openssl req -new key /etc/httpd/ssl/httpd.key out httpd.csr -days 365 (3)将请求通过可靠方式发送给CA主机; #scp httpd.csr root@server:/tmp/ (4)在CA主机上签署证书; #openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365 查看证书中的信息: #openssl x509 -in /etc/pki/CA/certs/httpd.crt -nout -serial -subject 吊销证书: 步骤:(在CA上执行): (1)客户端获取要吊销的证书的serial(在使用证书的主机执行): #opensssl x509 -in /etc/pki/CA/certs/httpd.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/crl/number (4)更新证书吊销列表 #openssl ca -gencrl -out thisca.crl 查看crl文件: #openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text在这里插入代码片
转载地址:http://onodi.baihongyu.com/