• openssl命令


    加密算法和协议:
    对称加密:数据加密(保密性),(3DES,AES)
    公钥加密:身份认证,密钥交换,数据加密,()RSA,DSA
    单向加密:数据完整性(MD5,SHA1)
    密钥交换:RSA,DH,ECDH(椭圆曲线DH),ECDHE(临时椭圆曲线DH)

    SSL:安全套接字层(ssl 1.0,ssl 2.0,ssl 3.0)
    TLS:传输层安全(tls 1.0,tls 1.1,tls 1.2 tls 1.3)

    OpenSSL:
    libcrypto
    libssl
    openssl

    SSL会话主要三步:
    客户端向服务器端索要并验证证书;
    双方协商生成“会话密钥”;
    双方使用“会话密钥”进行加密通信;
    第一阶段:ClientHello:
    支持的协议版本,比如tls1.2
    客户端生成一个随机数,稍后用户生成“会话密钥”
    支持的加密算法,比如AES、RSA;
    支持的压缩算法;
    第二阶段:ServerHello
    确认使用的加密通信协议版本,比如tls1.2
    服务器端生成一个随机数,稍后用于生成“会话密钥”
    确认使用的加密方法;
    服务器证书;

    第三阶段:
    	验证服务器证书,确认无误后取出其公钥;(发证机构、证书完整性、证书持有者、证书有效期、吊销列表)
    	发送以下信息给服务器端;
    		一个随机数;
    		编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;
    		客户端握手结束通知;
    第四阶段:
    	收到客户端发来的第三个随机数pre-master-key后,计算生成本次会话所有的“会话密钥”;
    	向客户端发送如下信息:
    		编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;
    		服务端握手结束通知;
    

    PKI:Public Key Infrastructure
    签证机构:CA
    注册机构:RA
    证书吊销列表:CRL
    证书存取库:

    OpenSLL(2)
    组件:
    libcrypto,libssl主要由开发者使用;
    openssl:多用途命令行工具;
    子命令:
    标准命令
    dgst命令
    enc命令
    加密:#openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
    解密:#openssl enc -d -des3 -a -salt -out fstab.plaintext -in fstab.ciphertext
    单向加密:
    工具:openssl dgst,md5sum,sha1sum,sha224sum,...
    # openssl dgst -md5 /PATH/TO/SOMEFILE
    生成用户密码:
    工具:passwd,openssl passwd
    openssl passwd -1 -salt SALT
    生成随机数:
    工具:openssl rand
    # openssl rand -hex 10
    # openssl rand -base64 10
    公钥加密:
    加密解密:
    算法:RSA,ELGamal
    工具:openssl rsautl,gpg
    数字签名:
    算法:RSA,DSA,ELGamal
    工具:
    密钥交换:
    算法:DH
    生成私钥:
    # (umask 077;openssl genrsa -out /tmp/mykey3.private 2048)
    提取公钥:
    # openssl rsa -in /tmp/mykey3.private -pubout
    Linux系统上的随机数生成器:
    /dev/random:仅从熵池返回随机数,随机数用尽,阻塞;
    /dev/urandom:从熵池中返回随机数,随机数用尽,利用软件生成伪随机数,非阻塞;
    熵池中随机数来源:
    硬盘IO中断时间间隔;
    键盘IO中断时间间隔;

    CA:
    公共信任CA,私有CA
    建立私有CA:
    openssl
    OpenCA
    openssl命令
    配置文件:/etc/pki/tls/openssl.cnf
    构建私有CA:
    生成自签名证书:
    为CA提供所需的目录及文件;

    	步骤:
    		1.生成私钥;/etc/pki/CA/private/
    		# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
    		2.生成自签名证书(请求、签署一起);/etc/pki/CA/
    		# openssl req -new -x509  -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
    		3.为CA提供所需的目录及文件;
    		# mkdir /etc/pki/CA{certs,crl,newcerts}
    		# touch /etc/pki/CA/{serial,index.txt}
    		# echo 01 > /etc/pki/CA/serial
    要用到证书进行安全通信的服务器,向CA请求证书
    	 1.生成私钥文件
    	 # mkdir /etc/httpd/ssl
    	 # cd /etc/httpd/ssl
    	 # (umask 077;openssl genrsa -out httpd.key 2048)
    	 2.生成证书签发请求
    	 # openssl req -new -key httpd.key -out httpd.csr -days 365
    	 3.CA签发证书
    	 # openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
    	 4.查看证书信息
    	 # openssl x509 -in httpd.crt -noout -serial -subject
    	 	查看序列号和subject
    CA吊销客户证书
    	1.客户端获取要吊销证书的serial
    		# openssl x509 -in httpd.crt -noout -serial -subject
    	2.CA吊销证书 
    		先根据客户提供的serial和subject信息,和本机数据库index.txt中存储的信息是否一致
    		吊销:
    		# open ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
    	3.生成吊销证书的吊销编号(第一次吊销时)
    		# echo 01 > /etc/pki/CA/crlmumber
    	4.更新证书吊销列表
    		# openssl ca -gencrl -out thisca.crl
    		查看crl文件
    		# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
  • 相关阅读:
    javascript设计模式(一)职责链模式China of responsibility
    javascript设计模式(一)策略模式Strategy
    angularjs提示消息弹出框
    Javascript设计模式(一)States
    Javascript设计模式(一)Facade
    NOIP2020
    RMQ & ST表
    NOI Linux
    初赛解析
    贪心大解析
  • 原文地址:https://www.cnblogs.com/feng-land/p/9977399.html
Copyright © 2020-2023  润新知