OpenSSL

PKI:Public Key Infrastructure :公钥基础设施
    签证机构 CA
    注册机构 RA
    证书吊销列表 CRL,以便验证有些证书是过期的
    证书存取库

    X.509 :定义了证书的结构 以及认证协议标准
        版本号
        序列号
        签名算法ID 号
        发行者名称
        有效期限
        证书拥有者的名称:主体名称
        主体公钥
        CA的唯一标识
        主体的唯一标识
        扩展信息
        发行者CA的签名

SSL:secure socker layer:安全的套接字层
TLS: 传输层安全
    TLS 1.0 是 SSL 3.0的升级版
    TLS 1.1 RFC 4346
    TLS 1.2 增进了很多安全性,目前使用最多
    TLS 1.3

    应用层
        + ssl/tls(api) 
    传输层

    用到 ssl/tls 层就是安全的,不用就是不安全的。
        http:文本编码
        https:二进制编码的

        三次握手,还有ssl握手,交换秘钥,认证,基于IP 地址实现

    协议的分层设计:
        1、最底层:基础算法源语的实现。aes rsa md5
        2、向上一层:各种算法的实现
            aes-128-cbc-pkcs7(cbc是里边的库)
        3、再向上一层:组合算法实现的半成品
        4、用各种组件拼装而成的各种成品密码学协议/软件
            tls   ssh

OpenSSL: 开源项目
    三个组件:
        openssl:多用途的命令行工具
        libcrypto:公共加密库,实现了各种加密算法。直接调用
        libssl:ssl层的实现,库,实现了ssl 和tls

        如何建立连接:https

            客户端    tcp会话的建立过程三次握手      服务器端

                        ssl的握手认证
                        s发送证书给c
                        c要认证 证书,
                            1、证书发行者名称 CA
                            2、找道发行者的证书,从中提取公钥
                            3、如果能解密,CA认证通过
                            4、证书中的主体名称 www.ma.com
                            5、检查证书信息(加密解密特征码是否相同)
                            6、检查证书吊销列表,是否在其中。
        
        openssl命令行工具:
            openssl version 程序版本号    
            
            标准命令,消息摘要命令,加密命令

            标准命令:
                enc, ca, req, ...

            对称加密
                工具:openssl enc,gpg
                算法:3des,aes,....具体 openssl --help查看

                加密:
                openssl enc -e -des3 -a -salt -in /etc/fstab -out a.txt
                就将文件加密了。

                解密:
                openssl enc -d -des3 -a -salt -in a.txt -out /t/fatab
                将加密文件恢复。

            单向加密:
                工具:md5sum,sha1sum, sha224sum, sha56sum, openssl dgst

                md5sum /etc/fastab

                openssl dgst -md5 /etc/fatab
                不同工具,算法相同,一般结果一样。

                openssl dgst -md5 -hex /file :默认就是16进制

                MAC:message authentication code:消息认证吗,不验证谁发的。
                        ---单向加密的一种延伸,用于实现在网络中保证所传输的数据的完整性

                    机制:
                        CBC-MAC:
                        HMAC:使用md5或sha1 算法:用于集群之间相互信任
            生成用户密码:
                passwd命令:sslpasswd

                openssl passwd -1 -salt 123456 : 1 表示md5, salt相同,获得的结果就相同的。
                    回车后,输入密码 如 jack
                    $1$123455$h3XGOsZlrgCKrOGd0/Ma5/  :将jack加密成这样

            生成随机数:
                openssl rand -base64 4

                openssl rand -hex 4     ---4是字节

            公钥加密:
                rsa,dsa,...
                加密:
                    算法:Rsa, ELGmal
                    工具:gpg, openssl rsautl, dsa
                数字签名:
                    算法:RSA , DSA, ELGmal
                    工具:openssl rsa, dsa # 一般不手动完成
                秘钥交换:
                    算法:dh
                DSA:Digital Signature Algorithm
                DSS:数字签名标准
                RSA:

                生成秘钥对:
                    算法:genrsa, gendsa, gendh

                    私钥:
                    openssl genrsa -out /tmp/a.orivate 2048

                    公钥:从私钥中获取
                    openssl rsa -in /tmp/a.orivate -puout

                    (umask 077; openssl genrsa -out /tmp/a.orivate 2048 )
                        # 顺便修改权限 666 - 077 负数为0
                        # 加括号,表示在子shell中执行,不会影响当前的umask 


                随机数生成器:
                    软件生成的,都是有规律可循的,不是真正的随机。

                    /dev/random:仅从熵池返回随机数,随机数用尽,阻塞
                    /devurandom:从熵池返回随机数,随机数用尽,会利用该软件生成伪随机数,非阻塞
为什么要坚持,想一想当初!
原文地址:https://www.cnblogs.com/JerryZao/p/9793217.html