openssl加解密原理

简介:
1
2
3
4
5
6
7
8
9
加密算法和协议:
一、加密和解密简介
二、OpenSSL和GPG
三、对称加密的密钥分发
四、非对称加密
五、SSL/TLS的实现
六、OpenSSL应用
七、构建私有CA
八、证书签署案例

一、加密和解密简介
    对称加密:数据加密传输(保密性),DES,3DES,AES,
    公钥加密:身份验证,密钥交换,数字签名(特征码加密) ,(不常用,比对称加密慢3个数量级)
            :RSA,DSA
    单向加密:保证数据的完整性,依赖于数字签名
            :sha[1,224,256},MD5
    密钥交换:DH,RSA,ECDH(椭圆曲线DH),ECDHE(临时椭圆曲线DH)
数字签名:用自己的信息,加密要发送的数据的特征码
    //一般数字签名,签的是要加密的数据的特征码
    目的:验证发送者的身份
http需要依赖于SSL/TLS--->HTPPS

    TCP/IP层:
        应用层                            ||资源子网
        ===========================================SSL:半层在应用层和传输层之间
        传输层                            ||通信子网
        网络层    
        主机到网络层:{数据链路层+物理层}
        ===========================================
        
        资源子网+通信子网    
        内核空间+用户空间    
        
    //早期的数据传输是不加密的,因此出现了SSL,提供调用实现加密,不加密也可以实现通信
    //SSL能完成秘钥分发和加解密功能,SSL是一种规范和协议
    //程序员开发的时候:调用该库
    //该库功能:网络方面{秘钥分发},加解密
    
OSI七层:
通信子网的功能:由内核实现
资源子网:在用户空间是如何实现:
    诸多协议,程序,服务端,客户端
    应用程序:自己负责报文封装,应用层首部添加等
            :应用程序的具体实现靠的是应用程序自身,应用程序的进程负责封装应用层的报文
            :然后:到/传输层/网络层/主机到网络层//层层封装---->解封装-->交给应用层注册使用该端口的进程
            
HTTP调用SSL成为了HTTPS
    http-->https(支付的时候用)-->全栈https
    全栈https //避免恶意插入广告和恶意信息窃取    

    传输层协议:TCP,UDP,SCTP//流控传输协议,
        port:进程地址,进程向内核注册使用某端口,(独占)
        socket=ip:port是标识进程地址的
主机间的通信:其实就是主机上的进程间的通信        
    进程间通信的方式:
        同一主机上的通信:基于IPC机制,message queue,shm,semerphor[旗语],..
            同一主机上也可以使用socket进行通信
        不同主机上的通信:socket=ip:port,C:ip+port和S:ip+port//成对出现进行通信
                cip:port《----》sip:port
    完成通信:
        server端需要打开一个端口,监听该端口(ip:port)
        1-1024:固定端口 
        1025-3999:半随机
        4000-6500:随机
        具体查看:#cat /proc/sys/net/ipv4/ip_local_port_range,

    通信安全的目标:
        保密性:confidentiality
        完整性:integrity
            数据完整性
            系统完整性
        可用性:availability
    攻击类型:    
        威胁保密性攻击:窃听,通信量分析
        威胁完整性的攻击:更改、伪装、重放[备份多次发送]、否认
        威胁到可用性攻击:拒绝服务DOS(deny of service),DDOS
    解决方案:    
        技术(加密和解密)
        服务(用于抵御攻击的服务,也即是为了上述安全目标而特地设计的安全服务)    
        
        加密和解密
            传统加密方法:替代加密算法(替换某字母或者后退几个)、置换加密算法()
            现代加密方法:块加密方法(切割成块,然后单独加密,各块之间进行异或运算等):数据窃取者必须拿到完整的数据和才可以
        服务:
            认证机制:
            访问控制机制:
        密钥算法和协议
            对称加密
            非对称加密(    公钥加密)
            单向加密
            认证协议

二、OpenSSL和GPG
Linux系统加密:OpenSSL(SSL),GPG(pgp)
    OpenSSL:三部分组成
        1.加密解密库 libencrypt,
        2.libssl库 //安全通信,加密模块应用库,实现了tls和ssl
        3.openssl 命令行工具,实现加密解密,以及实现ssl安全通信
        //90%都是调用openssl来实现安全
    OpenSSL出现了一个大的漏洞 //一个开源组织维护,只靠捐献进行生存-致敬
        https://www.cnblogs.com/milantgh/p/3665901.html //openssl漏洞简介
    加密算法和协议
        对称加密:加密和解密使用同一个密钥,//但是加密和解密算法可能不同
            DES:data encryption standard//数据加密标准
                64bit明文加密为64bit密文,解密:64bit密文解密为64bit明文
                8Byte为一个块 //已经被破解
            3DES:Triple DES //3个数量级,一个数量级10倍
            AES:Advanced Encryption Standard
                支持变长密钥:128.192,256,384bit密钥
            Blowflsh Twoflsh IDEA RC6 CAST5 
            特性:
                1.加密、解密使用同一个密钥
                2.将原始数据分割成为固定大小的块,逐个进行加密
            缺陷:
                1.密钥过多 //s被多个用户同时访问,需要同时保持n个密钥,但是又不能相同
                2.密钥分发困难 //如何拿到密码,密钥交换基于算法实现        
        非对称加密://稍后介绍
gpg用法://这里不做介绍,请自行理解
    
三、对称加密的密钥分发
1.分发的方式
1、A选择一个密钥后以物理的方式传递给B
2、第三方选择密钥后物理地传给A和B
3、如果A和B先前或最近使用过一个密钥,则一方可以将 新密钥用旧密钥加密后发送给另一方
4、如果A和B到第三方C有加密连接,则C可以在加密连接上发送密钥给A、B
    分析:
        1和2需要人工交付
        3,一旦攻击者获得一个密钥,则后续所有的密钥都不再安全,可以进行重放攻击
        4.需要密钥分发中心,广泛使用
2.分发方案
    原理:密钥分发中心KDC和每个终端用户都共享一对唯一的主密钥(用物理的方式传递,如U盾)。
        终端用户每次回话,都要向KDC申请唯一的会话密钥,会话密钥通过与KDC共享的主密钥的主密钥来完成传递

51ce1e0b21ce719f6fcbb4ca62fe507c.png        
        
1、A以明文形式向KDC发送会话密钥请求包。包括通话双方A、B的身份以及该次传输的唯一标识N1,称为临时交互号(nonce)。
临时交互号可以选择时间戳、随机数或者计数器等。KDC可根据临时交互号设计防重放机制。
2、KDC返回的信息包括两部分。
第一部分是A想获取的信息,用A的主密钥KA加密,包括通话密钥Ks和KDC收到的请求包内容用以验证消息到达KDC前是否被修改或者重放过。
第二部分是B想获取的信息,用B的主密钥KB加密,包括通话密钥Ks和A的身份。A收到后这部分消息便原样发给B。
3、为保证A发给B的会话密钥信息未被重放攻击,A、B使用会话密钥进行最后的验证。
B使用新的会话密钥Ks加密临时交互号N2并发给A。A对N2进行一个函数变换后,用会话密钥发给B验证。
    
对于大型网络,可以建立KDC的层次体系来使得主密钥分发的开销最小化。

    
四、非对称加密
1.公钥加密:密钥分为公钥和私钥
    公钥:从私钥中提取,公开给所有人:pubkey
    私钥:通过工具创建,使用者自己留存,必须保存期私密性:private key
    特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然
    
    用途:数字签名:主要用于让接收方确认发送方的身份
          密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方
          数据加密:
    
    数据发送的过程中[]:用对方的公钥加密,传输
    身份认证的过程中[数字签名]:用自己的私钥加密,然后发给对方,对方用我们的公钥能够解密,完成身份认证
    
    算法:RSA,DSA,ELGamal
        DSS(DSA):digital signatur Standard/Algorthm
        DSA:仅能备用来签名,不能加解密
        RSA:既能签名,又能加解密    
        
2.单项加密:
    只能加密,不能解密 //提取数据指纹[特征码]信息
    特征码:定长输出,雪崩效应;
    功能:完整性,没有被修改过
    算法:
        md5:message digest version5 :128bit
        sha1:secure hash algorithm 1 :160bits
        sha224,sha256,sha384,sha512
    
    密钥IKE:internet key exchange //密钥交换
        公钥加密:
        DH(deffle-hellman):
            DH算法:密码本身不必在网络上传送,就能够协商生成
                A:p,g
                B:p,g //双方协商生成p,g等数组,明文交换,别人能够看到
                
                A:x //这个数据是私自生成的,B不知道,其他人也不知道
                    1.-->p^x%g===>B
                    2.(p^y%g)^x==p^xy%g
                B:y
                    1.-->p^y%g===>A
                    2.(p^x%g)^y===p^xy%g //和A2的结果是一样的,这个就是密钥
    
                
        公钥加密有风险,因为密钥是在网络上传送的,所以更倾向于DH

3.公钥加密过程:
    1.加密特征码://保证数据完整性和身份验证
        利用单项加密算法:提取特征码,定长输出 //然后使用自己的私钥,加密特征码
        注意:不能保证数据的保密性,因为其他人也可以进行解密特征码
            bob用同样的算法,解密特征码,一致则完整以及身份得到验证
        注意:加密特征码的过程,就称为生成数字签名的过程
    2.A生成一个一次性的对称密钥,加密整个数据,
        B用A的pkey加密对称密钥,附加到数据后,发送给A
    3.A先用自己的私钥解密数据,得到对称密钥,进行解密//密钥交换
            用B的公钥解密签名,能解密则身份得到验证,
            然后用单项加密算法,得到对称码,对比验证数据保密性
    
4.B想和A进行通信
    B用单项加密算法得到特征码,用自己的私钥加密特征码
    [特征码{B的私钥加密}#数据{对称密钥加密}#对称密钥{对方的公钥}]最后用A的公钥加密,一起发送给A
    
    设计算法:对称加密[数据传输快速],单项加密[完整性],单向加密[身份验证]
    
    身份认证:B用自己的私钥加密特征码,A用B的pkey能够解密,则认证成功
    数字签名:B用自己的私钥加密特征码的过程,就叫做数字签名
            数字签名就是为了完整身份认证
            签名:在特征码上用私钥加密就叫签名
    密钥交换:用对方的公钥加密自己生成的对称密钥,只有对方能够解密
    //对称加密的效率高,速度快,公钥加密虽然安全,但是加密速度慢,效率不高
    //之后使用对称密钥,加解密就可以了
    
    1.计算特征码,B用私钥加密特征码,并将结果附加到数据后面,B生成对称密钥,加密整个数据
        获取A公钥,使用对方的公钥加密对称密钥,附加到数据包后面,发送给A
        [数据|s特征码] ==>对称密钥加密==>{[数据|s特征码|}{ps对称密钥]
    2.A先用自己的私钥解密对称密钥:ps对称密钥
         解密 [数据|特征码]
         用对方的公钥解密 [s特征码]
         用同样的算法计算特征码 [数据]  //完整性
    
    注意:对称加密的对象{数据|s特征码},对称密钥是单独加密放到后面的
    
5.B和A通信的中间人攻击:    
    之前的bug:不能预防中间人攻击 //A---{b}-----c 
        中间人复制一份,然后实现A和c的通信
        b把自己的公钥发送给A告诉A,自己就是c
        B再把自己的公钥发送给c,告诉c自己就是A
    方案:CA:可靠的公钥获取机构 //Certificate Authority,认证授权
        证书:可以理解为公钥
        
    B得到A的公钥后
        1.验证证书的内容是否合法
        2.是否是受信任的CA颁发的
    ++++++++++++++++++++++++++++++++++++++++++
                CA
             /        \
            /         \
           /          \
         B    ------------A
            
    ++++++++++++++++++++++++++++++++++++++++++    
    PKI:以CA为中心的密钥分发:public key infrastructure
        公钥基础设施:
            签证机构:CA
            注册机构:RA
            证书吊销列表:CRL //recovery回收
            证书存取库:cdb
    X.509 v3版 //定义证书的格式和标准,以及协议标准
        版本号:证书版本
        序列号:第几个证书
        签名算法ID:用什么算法的签名
        发行者名称:CA自己的名字
        有效期限:
        
        主体名称:
        主体公钥:
        发行者的唯一标识:CA的唯一标识
        主体的唯一标识:
        扩展信息
        发行者的签名:CA的签名,单项加密,用自己的私钥加密
        
    用CA验证他人的身份
        用CA的公钥解密,CA的签名,
        用同样的加密算法,加密证书,取得特征码,与解密的特征码[签名]对比
        检查证书的有效期
        验证证书的主体名称
        检查证书是否被吊销
            
    证书的内容:
        有效期
        CA的签名//CA私钥加密单项加密该数据后的特征码,A获取CA的公钥,然后解密就可以
        CA会自己先给自己发证书,发给别人
        //如何获取CA的证书:
            
        CA的根证书,是OS自带的,MicroSoft是自带的,但是Linux是没有的,需要自带
        CA还需要有证书吊销列表
        
    HTTPS//相当于http调用ssl代为建立通道进行通信
    
    SSL通话过程:
        1.发送hello,对方回复 //协商单项加密,对称加密,公钥加密算法
        2.向server请求证书
        3.client验证证书,但是client不会发送自己的证书给server,因为有的client是没有的
            //server也是不用担心什么人来访问的
            //在网银的时候可能会用到:电子密码,U盾(个人证书)
        4.客户端使用生成随机数:对称密钥,用对方的公钥加密后发给对方
            server用这个密码加密client请求的页面,
        5.client请求断开,server确认断开,然后断开
    
    SSL:secure sockets layer //网警公司拥有版权,
        Netspace:1994
        google,据说有漏洞
        v1,v2.0存在漏洞,v3:1996使用了很长时间
    TLS:transport layer secure //仿照SSL,二者基本兼容,
        IETF:1999发布
        v1.0,v1.1,v1.2,v1.3:2014 //
        由于SSLv3出现了很大漏洞,因此,建议使用TLS,但是并未所有的网站都支持TLS
        
        分层设计:
            1.最底层:基础算法原语的实现,aes,rsa,md5等
            2.向上一层:各种算法的实现
            3.再向上一层:组合算法实现的半成品
            4.用各种组件拼装而成的各种成品密码学协议软件
    协议的开源实现:openssl
          
阶段:对称密钥用对方公钥加密阶段--->DH算法阶段--->CA阶段
    DH阶段,不能防范中间人攻击

五、SSL/TLS的实现
SSL/TLS //知识一个协议
    SSL:安全套接字层,v1,v2,v3现用
        v3也发现有缺陷,但是是主流 //网警自己开发和维护
    TLS:传输层安全,1.3,1.5 //将来很有可能为主流
            
实现:
    OpenSSL:
        libcrypto库:加密和解密的
        libssl库:实现ssl功能的
        openssl:命令行工具
    SSL会话主要三步:
        1.client向server索要并验证证书
        2.双方协商生成“会话密钥”
        3.双方采用"会话密钥"进行加密
    
SSL handshake protocol:        
    第一阶段:clientHello //第一步
        client发送支持的协议版本:比如tsl 1.2
        客户端生成一个随机数,稍后用于生成“会话密钥”
        支持的加密算法,比如AES,RSA;
        支持的压缩算算法
    第二阶段:server hello
        确认使用的加密通信协议版本,比如tls1.2;//
        服务器段生成一个随机数,稍后用于生成”会话密钥“
        确认使用的加密方法
        服务器证书;
        //索要客户端证书
    第三阶段:
        验证server证书;(发证机构、证书完整性、证书持有者、证书有效期、吊销列表)
            在确认无误后,取出其公钥
        发送以下信息给服务器端
            一个随机数:用于server上的数据加密
            编码变更通知;
            客户端握手结束通知;
    第四阶段:
        收到clinet发来的第二个随机数,会话的第三个随机数pre-master-key,计算生成本次会话所用到的“会话密钥” //避免随机数被猜测
        向客户端发送如下信息:
            编码变更通知;表示随后的信息,都将使用对方商定的加密方法和密钥发送
            服务器握手接受通知
                
PKI:公钥基础设施
    签证机构:CA
    注册机构:RA
    证书吊销列表:CRL
    证书存取库:cdb
    
    申请注册机构:威瑞信等
    
六、OpenSSL应用
    组件:libcrypto,libssl主要由开发者使用
    openssl:多用途命令行工具
    openssl 三类子命令
        1.标准命令
            ca
            rand //生成随机数
            rsa
            x509
            genrsa:生成rsa算法的密钥对
            gendsa:生成dsa密钥对
            req:请求签名
        2.消息摘要:dgst        
        3.ciper command:加密命令:enc
        
    对称加密:
        工具:openssl enc,gpg
        支持的算法:3des,aes,blowfisk,towfish
        what is enc //man enc 就可以获取帮助信息
        openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64]
            -cipername:加密算法的名称
            -a base64编码格式,不加-a使用的是二进制编码
        openssl enc -des3 -e -a -salt -in fstab -out fstab.enc
        openssl enc -des3 -d -a -salt -in fstab.enc -out fstab
        -a 不可少
        -des3 再解密的时候也不能少,否则可能会乱码
    单项加密:
        openssl dgst,gpg命令也可以md5sum,sha1sum,sha224sum
        openssl dgst -md5 fstab
        md5sum fstab
    生成密码工具
        passwd,
        whatis passwd
        man sslpasswd
        openssl passwd [-crypt] [-1] [-salt string] [-stdin]  {password}
            -1:md5
        openssl passwd -1 -salt 12345678 -stdin
    生成随机数:
        openssl rand 
        whatis rand
        man rand
        openssl rand -base64 64 //生成64位,base64编码格式的随机数
                     -hex //16进制,只有0-f
        openssl passwd -1 -salt $(openssl rand -hex 4)
    公钥加密:
        加密解密
            算法:RSA,ElGamal
            工具:openssl rsautl,gpg
        数字签名 
            算法:RSA,DSA,ELG,ELGamal
            工具:openssl rsautl,gpg
        密钥交换
            算法:DH
        
        公钥加密实现:
            1.openssl genrsa 1024 > /tmp/a.out //生成私钥
                openssl genrsa -out /tmp/a.out 1024
                (umask 077;openssl genrsa -out /tmp/mkey.pri 1024)
                //放在括号中命令,要在子shell中运行,不会影响其他shell的运行,影响其他shell的umask
            2.提取公钥
                openssl rsa -in /tmp/mykey.pri -pubout 
                openssl rsa -in my.pk -pubout > my.pub //-out也可保存
                
    
Linux系统上随机数生成器:
    /dev/random :仅从熵池返回随机数;随机数用尽,阻塞;
    /dev/urandom:从熵池返回随机数,随机数用尽,会利用软件生成伪随机数,非阻塞
伪随机数不安全
    熵池:内核维护的存储了大量的随机数,刚开始是空的
        来源:
            硬盘IO中断的时间间隔;
            键盘IO中断的时间间隔;两次击键的间隔
    方法:一旦用尽,敲键盘或者复制文件到硬盘(硬盘IO)
        CA:
            1.公共信任的CA,私有CA
            2.建立私有CA
        建立私有CA
            openssl:私有CA
            OpenCA:公有CA
        
        openssl配置文件
            cat /etc/pki/tls/opessl.cnf
                CA/certs:已经颁发的CA证书 $# Where the issued certs are kept
                CA/crl:证书吊销列表 
                CA/newcerts:默认新证书位置
                CA/index.txt :数据库索引文件
                    
                CA/serial:当前序列号,已经发到第几个了
                CA/cacert.pem :CA的自签证书
                CA/crlnumber :当前证书吊销序列号
                
                CA/crl.pem :当前CRL
                CA/private/cakey.pem :CA的私钥
七、构建私有CA
    在确定配置为CA的服务器上生成一个自签证书,并为CA提供所需要的目录及文件即可
    1.生成私钥CA/private/cakey.pem
    (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)    
        注:cakey.pem要求默认放在CA/private中        
    2.生成自签证书:CA/certs/
        注:如果不是自签,就不需要加x509
            country name:CN
            province name:Henan
            locality:Henan
            Default Company:MingTian
            Unit Name:Ops
            Common Name:ca.mingtian.com
        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:证书的有效时长,单位days
            
    3.提供所需的目录及文件
        mkdir /etc/pki/CA/{crl,certs,newcerts}
        touch /etc/pki/CA/{serial,index.txt}
        echo 01 > /etc/pki/CA/serial
        三个目录两个文件
        
    请求签署证书
        1.client:192.168.4.109
            cd /etc/httpd/ssl
            (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
            openssl req -new -key httpd.key -out httpd.csr -days 365  //需要指定私钥-key
            csr:证书签署请求
            信息要保证和CA的一致否则,可能会出错
                Common Name:hostname //必须与客户端访问时的名字一直,否则证书验证不会通过,可以使用ip
                A challenge password://测试可以留空
        2.scp httpd.csr root@192.168.4.100:/tmp
            拷贝到CA
        3.openssl ca -in httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365 
            server签证
            cd /etc/pki/CA/
                cat index.txt //文件会增加一行内容
                serial //会变成 02
            scp /etc/pki/CA/certs/httpd.crt root@192.168.4.109:/etc/httpd/ssl/
                httpd.csr已经没有用了
        注意:只有自建CA的时候才用到/etc/pki/CA目录,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主机
        scp 
    4.在CA主机上签署主机
        opnessl ca -in httpd.csr -out /etc/pki/certs/httpd.crt -days 365
    
    查看证书的信息
        openssh x509 -in httpd.crt -noout -serial -subject //只看serial和subject
        //可以使用-a
        
吊销证书:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
     步骤(在CA上执行)
         1.客户端获取要吊销的证书的serial
             openssh x509 - in  httpd.crt -noout -serial -subject
         2.CA吊销证书
             先根据客户端提交的serial和subject信息,对比其与主机数据库index.txt中存储的是否一致
             openssl ca -revoke /etc/pki/CA/newcerts/SERIAK.pem
             
             certs/httpd.crt  和 newcerts/01.pem有对应关系
         3.生成证书吊销编号(第一次吊销证书时执行)  //哪怕第二次吊销的是其他的证书都不再需要做的
             echo 01 > /etc/pki/crlnumber 
         4.更新证书吊销列表
             openssl ca -gencrl - out  thisca.crl
             查看crl
             opnssl crl - in  /paht/to/crl_file -noout -text
     //到吊销ca级别的时候,将会使用openca而不是openssl

        
openssl 指定文件,取出随机数


小结:
    1.genrsa生成私钥,rsa提取公钥,req用于自签和他签
证书查看:    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
     openssl x509部分命令
     打印出证书的内容:
     openssl x509 - in  cert.pem -noout -text
     打印出证书的系列号
     openssl x509 - in  cert.pem -noout -serial
     打印出证书的拥有者名字
     openssl x509 - in  cert.pem -noout -subject
     以RFC2253规定的格式打印出证书的拥有者名字
     openssl x509 - in  cert.pem -noout -subject -nameopt RFC2253
     在支持UTF8的终端一行过打印出证书的拥有者名字
     openssl x509 - in  cert.pem -noout -subject -nameopt oneline -nameopt -escmsb
     打印出证书的MD5特征参数
     openssl x509 - in  cert.pem -noout -fingerprint
     打印出证书的SHA特征参数
     openssl x509 -sha1 - in  cert.pem -noout -fingerprint
     把PEM格式的证书转化成DER格式
     openssl x509 - in  cert.pem -inform PEM - out  cert.der -outform DER
     把一个证书转化成CSR
     openssl x509 -x509toreq - in  cert.pem - out  req.pem -signkey key.pem
     给一个CSR进行处理,颁发字签名证书,增加CA扩展项
     openssl x509 -req - in  careq.pem -extfile openssl.cnf -extensions v3_ca -signkey key.pem - out










本文转自MT_IT51CTO博客,原文链接:http://blog.51cto.com/hmtk520/1983793 ,如需转载请自行联系原作者
相关文章
|
2月前
openssl生成密钥
openssl生成密钥
22 0
|
4月前
|
存储 算法 安全
OpenSSL 使用AES对文件加解密
AES(Advanced Encryption Standard)是一种对称加密算法,它是目前广泛使用的加密算法之一。AES算法是由美国国家标准与技术研究院(NIST)于2001年发布的,它取代了原先的DES(Data Encryption Standard)算法,成为新的标准。AES是一种对称加密算法,意味着加密和解密使用相同的密钥。这就要求密钥的安全性非常重要,因为任何拥有密钥的人都能进行加密和解密操作。其密钥长度,包括128位、192位和256位。不同长度的密钥提供了不同级别的安全性,通常更长的密钥长度意味着更高的安全性。
76 1
OpenSSL 使用AES对文件加解密
|
6月前
|
算法 数据安全/隐私保护
20.2 OpenSSL 非对称RSA加解密算法
RSA算法是一种非对称加密算法,由三位数学家`Rivest`、`Shamir`和`Adleman`共同发明,以他们三人的名字首字母命名。RSA算法的安全性基于大数分解问题,即对于一个非常大的合数,将其分解为两个质数的乘积是非常困难的。OpenSSL库中提供了针对此类算法的支持,但在使用时读者需要自行生成公钥与私钥文件,在开发工具包内有一个`openssl.exe`程序,该程序则是用于生成密钥对的工具,当我们需要使用非对称加密算法时,则可以使用如下命令生成公钥和私钥。
46 0
20.2 OpenSSL 非对称RSA加解密算法
|
6月前
|
算法 搜索推荐 安全
20.3 OpenSSL 对称AES加解密算法
AES算法是一种对称加密算法,全称为高级加密标准(Advanced Encryption Standard)。它是一种分组密码,以`128`比特为一个分组进行加密,其密钥长度可以是`128`比特、`192`比特或`256`比特,因此可以提供不同等级的安全性。该算法采用了替代、置换和混淆等技术,以及多轮加密和密钥扩展等机制,使得其加密效果优秀,安全性高,被广泛应用于各种领域中,如数据加密、文件加密、网络安全等。
79 0
20.3 OpenSSL 对称AES加解密算法
|
Java Shell Maven
JAVA实现PGP/GPG加解密加验签
JAVA实现PGP/GPG加解密加验签
1950 0
|
安全 数据安全/隐私保护
openssl加解密实战
openssl加解密实战
168 0
|
Web App开发 安全 网络协议
|
算法 网络安全 数据安全/隐私保护