zoukankan      html  css  js  c++  java
  • 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:从熵池返回随机数,随机数用尽,会利用该软件生成伪随机数,非阻塞
    为什么要坚持,想一想当初!
  • 相关阅读:
    MVVM模式下,ViewModel和View,Model有什么区别
    数据结构与算法JavaScript (三) 链表
    数据结构与算法JavaScript (二) 队列
    数据结构与算法JavaScript (一) 栈
    2014总结
    模拟jsonp的实现
    模拟ajax的 script请求
    四种常见的 POST 提交数据方式
    jQuery尺寸算法
    元素尺寸的获取
  • 原文地址:https://www.cnblogs.com/JerryZao/p/9793217.html
Copyright © 2011-2022 走看看